0.关于HttpClient
虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
- 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
- 支持自动重定向
- 支持 HTTPS 协议
- 支持代理服务器等
1.HttpClient4.5模拟登录网站步骤
- 创建CloseHttpClient和HttpClientContext对象
- 创建HttpPost(类似http中的post请求)对象
- 添加请求参数到HttpPost对象中
- 执行请求
- 登录成功
由于网站模拟登录都会有验证码,关于验证码的处理一般有以下两种方式:
- 验证码识别接口(大多都是收费的),这种情况适合大规模登录。
- 将验证码下载到本地,手动输入验证码(以下例子采用这种方式)。
2.模拟登录的分析过程
- 浏览器访问知乎 - 与世界分享你的知识、经验和见解知乎登录页面,然后右键审查元素(快捷键F12),选择network,把Preservre log选上,然后输入账号密码和验证码,点击登录。如果登录成功会重定向到知乎首页然后会有大量的请求了,这时找登录请求可能不方便。所以这里有个小技巧,故意把密码输错,这时候就不会重定向跳转了,就可以容易的找到登录请求。这里我用的邮箱登录。如下图