一身气质范
2017-09-15 01:13
采纳率: 61.1%
浏览 1.5k
已采纳

java爬虫模拟登陆失败, 求大神帮忙看看

/**
* 纷简历模拟登陆
/
public static void fenResumePost() {
// 创建客户端
CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
// 预访问的网址
String login_src = "http://www.fenjianli.com/login/home.htm";
// 创建请求Post实例
HttpPost httpPost = new HttpPost(login_src);
// 设置头部信息进行浏览器模拟行为
httpPost.addHeader("Accept", "application/json, text/javascript, */
; q=0.01");
httpPost.addHeader("Accept-Encoding", "gzip, deflate");
httpPost.addHeader("Accept-Language", "zh-CN,zh;q=0.8");
httpPost.addHeader("Content", "keep-alive");
// httpPost.addHeader("Content-Length", "55"); // 提示异常: Content-Length header already present
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
httpPost.addHeader("Cookie", "td_cookie=544535021; huodong=fenjianli; hdflag=active; td_cookie=544673389; JSESSIONID=D0B07540004A292D094B4B54BEEB139C; Hm_lvt_accc94e05dd4516e89bc93ebd0d3938e=1503648592,1503987387,1503987657,1505373791; Hm_lpvt_accc94e05dd4516e89bc93ebd0d3938e=1505379033; Hm_lvt_b9e62a948ba6b6274cc0fa7e61b1b38b=1503648592,1503987374,1503987657,1505373791; Hm_lpvt_b9e62a948ba6b6274cc0fa7e61b1b38b=1505379033");
httpPost.addHeader("Host", "www.fenjianli.com");
httpPost.addHeader("Origin", "http://www.fenjianli.com");
httpPost.addHeader("Referer", "http://www.fenjianli.com/login/home.htm");
httpPost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36");
httpPost.addHeader("X-Requested-With", "XMLHttpRequest");

    // 构建参数,即模拟需要输入的参数。通过抓包获得。
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    list.add(new BasicNameValuePair("username", "******")); // 用户名
    list.add(new BasicNameValuePair("password", "******")); // 密码
    list.add(new BasicNameValuePair("rememberMe", "1"));

// list.add(new BasicNameValuePair("Request Method", "POST")); // 设置提交方法

    // 向对方服务器发送Post请求
    try {
        // 将参数进行封装,提交到服务器端
        httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF8"));
        CloseableHttpResponse httpResponse = closeableHttpClient.execute(httpPost);

        // 如果模拟登录成功, 得到服务响应状态码
        if (httpResponse.getStatusLine().getStatusCode() == 200) {
            // 打印所有响应头
            Header[] headers = httpResponse.getAllHeaders();
            System.out.println("登陆成功!");
            for (Header header : headers) {
                System.out.println(header.getName() + ": " + header.getValue());
            }
        } else {
            System.out.println("elan异常!");
        }
    }  catch (Exception e) {
        e.printStackTrace();
    }
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • cloudyzhao 2017-09-15 01:27
    已采纳

    首次登陆的时候 不用set cookie 你登录之后获取的页面跟你输入的url有关你想访问你想访问的页面可以再 调用GET方法

    打赏 评论
  • 一身气质范 2017-09-15 01:17
            该抓的包我也差不多了 ,  StatusCode =====> 200 状态也一直都是200 ,  没有异常 .  我获取网页获取到的一直是首页
    
    打赏 评论
  • cloudyzhao 2017-09-15 02:10

    HttpGet get = new HttpGet(你想访问的url);

    closeableHttpClient.set(你上一步返回的cookie);
    closeableHttpClient.excute(get);

    打赏 评论
  • 一身气质范 2017-09-15 02:40

    那位大佬可以说说登陆失败主要有哪些原因么?

    打赏 评论
  • cloudyzhao 2017-09-15 07:59

    看下参考下 cookie会自动保存 能获取到首页说明登录成功 然后调用sendGet方法
    http://blog.csdn.net/zy841958835/article/details/77992435

    打赏 评论
  • 一身气质范 2017-09-15 10:23

    老哥, 你能直接把代码发我邮箱上面么? 1163516396@qq.com

    打赏 评论
  • 一身气质范 2017-09-19 02:00

    其实就是我的一个单词打错了 ...

    打赏 评论

相关推荐 更多相似问题