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(); } } }
  • 相关阅读:
    刷题94—树(一)
    刷题93—动态规划(十)
    刷题92—动态规划(九)
    刷题91—动态规划(八)
    android Q build 变化
    ubuntu下解压rar文件
    Android PAI (PlayAutoInstall)预装APK 功能
    MTK Android O1平台预置apk
    预置第三方apk到MTK项目相关问题总结
    Android预置Apk方法
  • 原文地址:https://www.cnblogs.com/sutao/p/9067382.html
Copyright © 2011-2022 走看看