zoukankan      html  css  js  c++  java
  • 爬虫任务三:模拟登录博客园

    httpclient模拟登录

    package com.zhaowu.renwu3;
    
    import java.io.IOException;
    
    import org.apache.commons.httpclient.Cookie;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.NameValuePair;
    import org.apache.commons.httpclient.cookie.CookiePolicy;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;
    
    public class BoKeYuanLogin {
    
        public static void main(String[] args) {
            String username = "******";
            String password = "******";
            String loginUrl = "https://passport.cnblogs.com/login.aspx";
            String targetUrl = "https://www.cnblogs.com/";
    
            HttpClientLogin(username, password, loginUrl, targetUrl);
        }
    
        private static void HttpClientLogin(String username, String password, String loginUrl, String targetUrl) {
    
            // 创建一个客户端,类似于打开一个浏览器
            HttpClient httpClient = new HttpClient();
            httpClient.getParams().setParameter(HttpMethodParams.HTTP_URI_CHARSET, "utf-8");
            // 创建post方法实例,模拟登录
            PostMethod postMethod = new PostMethod(loginUrl);
            // 设置登陆时要求的信息,即填入各个表单域的值,用户名和密码
            NameValuePair[] data = { new NameValuePair("username", username), 
                        new NameValuePair("password", password) }; // 将表单的值放入到post方法中 postMethod.setRequestBody(data); try { // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略 httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); // 获得响应状态码 int postStatusCode = httpClient.executeMethod(postMethod); System.out.println("postStatusCode: " + postStatusCode); System.out.println("======================1=================="); // 获得登陆后的 Cookie Cookie[] cookies = httpClient.getState().getCookies(); System.out.println("cookies: " + cookies.toString()); System.out.println("======================2=================="); StringBuffer sb = new StringBuffer(); for (Cookie cookie : cookies) { sb.append(cookie.toString() + ";"); System.out.println(cookie.getName() + ":" + cookie.getValue()); System.out.println("-------------------------"); } /*System.out.println(sb.toString()); System.out.println("======================5==================");*/ GetMethod getMethod = new GetMethod(targetUrl); getMethod.setRequestHeader("Cookie", sb.toString()); getMethod.setRequestHeader("Host", "passport.cnblogs.com"); getMethod.setRequestHeader("Referer", "https://www.cnblogs.com/"); getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"); int getStatusCode = httpClient.executeMethod(getMethod); System.out.println("getStatusCode: " + getStatusCode); System.out.println("======================3=================="); // 打印出返回数据,检验一下是否成功 String content = getMethod.getResponseBodyAsString(); System.out.println(content); System.out.println("======================4=================="); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
  • 相关阅读:
    【已解决】github中git push origin master出错:error: failed to push some refs to
    好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
    THINKPHP 5.0目录结构
    thinkphp5.0入口文件
    thinkphp5.0 生命周期
    thinkphp5.0 架构
    Django template
    Django queryset
    Django model
    Python unittest
  • 原文地址:https://www.cnblogs.com/sutao/p/9067382.html
Copyright © 2011-2022 走看看