作者:2364118915_86406b_479 | 来源:互联网 | 2023-09-14 15:56
java 用httpclient模拟登陆知乎,获取的COOKIE和浏览器登陆的不一致
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public static String post(String url, NameValuePair[] loginInfo) throws Exception {
HttpClient httpClient = new HttpClient();
// 模拟登陆,按实际服务器端要求选用Post请求方式
PostMethod postMethod = new PostMethod(url);
setHead(postMethod);
setBody(postMethod, loginInfo);
httpClient.getParams().setCOOKIEPolicy(COOKIEPolicy.BROWSER_COMPATIBILITY);
httpClient.executeMethod(postMethod);
// 获得登陆后的 COOKIE
COOKIE[] COOKIEs = httpClient.getState().getCOOKIEs();
StringBuffer COOKIE = new StringBuffer();
for (COOKIE c : COOKIEs) {
COOKIE.append(c.toString() + ";");
}
return COOKIE.toString();
}
private static void setHead(HttpMethod httpMethod, Map map) {
//判断是否传入自定义消息头
if (null != map && map.size() > 0) {
map.keySet().forEach(key -> httpMethod.setRequestHeader(key, map.get(key)));
}
//公共消息头(不同的网站消息头内容不一致)
httpMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36");
httpMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpMethod.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
}
private static void setBody(PostMethod postMethod, NameValuePair[] loginInfo) {
postMethod.setRequestBody(loginInfo);
} |
httpclient获取的COOKIE:
aliyungf_tc=AQ#D9s3S/D6A0AQEfsc/I8r3DFSet9;l_n_c=1;q_c1=6691d50c82ae42789d444a4131ef4e24|1505186310000|1505186310000;r_cap_id=NjY5MzFmZjIyY2FkNDFlMTg4NmYxZDI1NzlmYjFjNTY=|1505186310|6d176ad90ba8868dbb8f62aaff1dd3d95ab71df9;cap_id=MjU1ZmVjZjBhYzVkNGRjZDk2ZDFhOTY4Nzc1MGQ3YmI=|1505186310|5800cbe49135a68d11e2416f182c7540586d60c2;l_cap_id=NWY2OWJiNzgxZGE0NDg0OTg3NDk2MjE4YjNiMDI2MDU=|1505186310|6cb0b38aee885d53bc28bbf5434be8fb93044535;n_c=1;
浏览器登陆获取的COOKIE:
_zap=8bee571a-7927-46b8-9a1e-561d437c80a5; d_c0="#CmF3qRQyPTobzdgXafIBJ9zFDhI22laY=|1503630379"; q_c1=a0eebeb7f0634e7792282bf1bceac306|1503887510000|1494232687000; q_c1=a0eebeb7f0634e7792282bf1bceac306|1504688356000|1494232687000; aliyungf_tc=AQ#LNUi2SIIQ8AQEfsc5RHw3SM7uUs; infinity_uid="2|1:0|10:1505184034|12:infinity_uid|24:ODg2OTY0MzkwMDM1ODY1NjAw|dd6fd2c07dd0fb3fb1ad07aca4ed378470a6420a60fb0d8bbaa257c2d53a84f0"; _xsrf=28666d5b-5c8c-4d5f-875e-ccbc5d88252c; r_cap_id="MjcxYWI4ODk2OTE0NDRlZTg4NzY4NDgzMzA3OWJiMzk=|1505184653|5876f662ff54aa1cbc3b7b61e51a353b96e75c29"; __utma=51854390.1046329935.1505184717.1505184717.1505184717.1; __utmb=51854390.0.10.1505184717; __utmc=51854390; __utmz=51854390.1505184717.1.1.utmcsr=zhihu.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmv=51854390.000--|3=entry_date=20170508=1; l_cap_id="OWQyOGZmYTk2ODk2NGYzMmFkNmU3NDg5ZDM4YzdhZjU=|1505185164|92ea8fe79847c654b84acd95dd1caf84c3106f26"; z_c0=Mi4xUUpYUkJRQUFBQUFBQUFLWVhlcEZEQmNBQUFCaEFsVk5ydHJlV1FBVFhIYnVHdm5OLVFjcTNxOU5yYUtfamVEUGxB|1505185198|5c5904bdadce56814173771ba598a851181ea19e; unlock_ticket="QUZCQ2tyZ2dTd3dYQUFBQVlRSlZUYlpVdDFuVVUyZWlza1N2ajhwVnJPbGtxcm1MdWliVWZnPT0=|1505185198|af0cb75a0b7e76fb83f13ce25f4066eca68227d5"; cap_id="NjI2ZmYxZmIwMmU3NDliNzllZTc0MDI3YThkOWRhOTU=|1505185198|98d1814bdebc6d2277c50185475d8aea2c03ca25"
这是为什么?求大神们解答