Java爬虫——模拟登录知乎

简介:   登录界面,首先随意输入一个账号,登录查看发送表单的请求    可以发现请求是Post : https://www.zhihu.com/login/phone_num 发送的表单是 _xsrf: password: 密码 无需加密captcha: 验证码 无需验证码时为不用此...

 

登录界面,首先随意输入一个账号,登录查看发送表单的请求

 

 可以发现请求是Post : https://www.zhihu.com/login/phone_num

发送的表单是

_xsrf: 
password: 密码 无需加密
captcha: 验证码 无需验证码时为不用此项 ,需要验证码时为验证码图片倒立字体坐标
captcha_type:cn
phone_num: 账号

 1 package 知乎模拟登录;
 2 
 3 import org.apache.http.HttpEntity;
 4 import org.apache.http.NameValuePair;
 5 import org.apache.http.client.entity.UrlEncodedFormEntity;
 6 import org.apache.http.client.methods.CloseableHttpResponse;
 7 import org.apache.http.client.methods.HttpPost;
 8 import org.apache.http.impl.client.CloseableHttpClient;
 9 import org.apache.http.impl.client.HttpClients;
10 import org.apache.http.message.BasicNameValuePair;
11 import org.apache.http.protocol.HTTP;
12 import org.apache.http.util.EntityUtils;
13 
14 import java.util.ArrayList;
15 import java.util.List;
16 
17 public class GetProblem {
18     public static void main(String[] args) throws Exception {
19         CloseableHttpClient closeableHttpClient = HttpClients.createDefault() ;
20         HttpPost httpPost = new HttpPost("https://www.zhihu.com/login/phone_num") ;
21         List<NameValuePair> nvps = new ArrayList<NameValuePair>();
22         nvps.add(new BasicNameValuePair("_xsrf", "66653239623962342d396237632d346233332d396331362d333434386438326438616139"));
23         nvps.add(new BasicNameValuePair("password", "1325200471"));
24         nvps.add(new BasicNameValuePair("captcha_type", "cn"));
25         nvps.add(new BasicNameValuePair("phone_num", "15890956765"));
26 
27         httpPost.setEntity(new UrlEncodedFormEntity(nvps));
28         CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpPost) ;
29         HttpEntity entity = closeableHttpResponse.getEntity() ;
30         String s = EntityUtils.toString(entity);
31         System.out.println(s);
32     }
33 } 

   可能出现的情况

   请求返回体为:

    {

  "r": 1,
  "errcode": 1991829,
  "data": {"captcha":"\u9a8c\u8bc1\u7801\u9519\u8bef"},
  "msg": "\u9a8c\u8bc1\u7801\u9519\u8bef"
 }

"errcode": 1991829

 

目录
相关文章
|
3月前
|
前端开发 Java 数据库连接
JavaWeb:登录注册功能实现
JavaWeb 登录注册是一种常见的网站开发功能,使用 Java 编程语言和 Web 技术来实现用户注册和登录功能
33 3
|
3月前
|
前端开发 Java 数据库连接
【Java实战篇】SpringBoot+MyBatis快速实现登录注册
【1月更文挑战第19天】【Java实战篇】SpringBoot+MyBatis快速实现登录注册
|
30天前
|
JSON 前端开发 Java
|
1月前
|
存储 Java 关系型数据库
Java注册与登录
Java注册与登录
9 0
|
1月前
|
数据采集 前端开发 JavaScript
Java网络爬虫实践:解析微信公众号页面的技巧
Java网络爬虫实践:解析微信公众号页面的技巧
|
1月前
|
Java 程序员 数据安全/隐私保护
【Java每日一题】——第十二题:完成百战程序员系统登录功能
【Java每日一题】——第十二题:完成百战程序员系统登录功能
30 0
|
1月前
|
数据采集 Web App开发 Java
盘点Java爬虫框架
盘点Java爬虫框架
30 0
|
3月前
|
数据采集 存储 Java
Java爬虫与SSL代理:实际案例分析与技术探讨
Java爬虫与SSL代理:实际案例分析与技术探讨
|
3月前
|
JavaScript 小程序 Java
基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)
基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)
23 0
|
4月前
|
数据采集 Java API
百度搜索:蓝易云【Java爬虫与Python爬虫有什么区别】
综上所述,Java爬虫和Python爬虫在语言特性、代码复杂性、生态系统、并发处理和执行性能等方面存在一些区别。选择使用哪种爬虫工具取决于具体的需求、项目要求和个人技术偏好。
42 0