码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA--利用HttpClient模拟浏览器登陆请求获取响应的Cookie

时间:2020-03-27 16:52:54      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:span   val   mes   网页   访问   网页数据   setvalue   eval   也有   

在通过java采集网页数据时,我们常常会遇到这样的问题:  站点需要登陆才能访问

而这种网站,一般都会对请求进行账号密码的验证,验证的方式也有多种,需要具体分析.

今天分析其中的一种情况:  站点对登陆密码进行动态加密,作为Cookie响应给客户端,之后的请求需要携带加密后的密码进行访问

登陆成功的响应头如下图:

技术图片

 

之后的请求头:

技术图片

因为每次登陆生成一个新的加密密码,所以之前的密码会失效
所以,需要在每次采集之前,先模拟登陆获取响应的密码,再作为cookie继续请求,我们选择采用HttpClient模拟请求.

我们模拟访问千瓜数据,代码如下:

 1 import org.apache.commons.httpclient.HttpClient;
 2 import org.apache.commons.httpclient.NameValuePair;
 3 import org.apache.commons.httpclient.methods.PostMethod;
 4 
 5 @Test
 6     public void testLogin() throws IOException {
 7         //时间戳
 8         long timestamp = new Date().getTime();
 9         //请求地址
10         String url = "http://api.qian-gua.com/login/Login?_=" + timestamp;
11         HttpClient client = new HttpClient();
12         //post请求方式
13         PostMethod postMethod = new PostMethod(url);
14         //推荐的数据存储方式,类似key-value形式
15         NameValuePair telPair = new NameValuePair();
16         telPair.setName("tel");
17         telPair.setValue("18182230732");
18         NameValuePair pwdPair = new NameValuePair("pwd","a123456");
19         //封装请求参数
20         postMethod.setRequestBody(new NameValuePair[]{telPair,pwdPair});
21         //这里是设置请求内容为json格式,根据站点的格式决定
22         //因为这个网站会将账号密码转为json格式,所以需要这一步
23         postMethod.setRequestHeader("Content_Type","application/json");
24         //执行请求
25         client.executeMethod(postMethod);
26         //通过Post/GetMethod对象获取响应头信息
27         String cookie = postMethod.getResponseHeader("Set-Cookie").getValue();
28         //截取需要的内容
29         String sub = cookie.substring(cookie.indexOf("&"), cookie.lastIndexOf("&"));
30         String[] splitPwd = sub.split("=");
31         String pwd = splitPwd[1];
32         System.out.println(pwd);
33     }                                                    

这样,就可以在之后的请求中携带加密的密码访问了

 

JAVA--利用HttpClient模拟浏览器登陆请求获取响应的Cookie

标签:span   val   mes   网页   访问   网页数据   setvalue   eval   也有   

原文地址:https://www.cnblogs.com/nysd/p/12582186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!