Java Jsoup 爬虫模拟登陆

最近想把之前用python+selenium写的一个自动提交表单的插件优化一下,实在是因为自学的python基础比较渣,需要处理的异常处理不到位,总之代码不是很健壮,就想着还是用java来写吧,而后不知道从哪里看到Jsoup这个工具,瞬间惊为天人,真的是很方便,API调用也简单易用,下面简单写一下这个jar的使用方法。

开发工具: eclipse
依赖jar: jsoup-1.11.3.jar
其他工具: Chrome / IE9+

关于开发

可以取官网 (https://jsoup.org/)了解一下,例子都比较简单,上手容易。

了解登录逻辑

首先需要了解我们需要爬取或者模拟的登录逻辑。
以开源中国(https://www.oschina.net/)为例吧。(为什么?因为我现在正好打开的这个网站。)

登录页面

Chrome新建无痕窗口,打开调试工具(F12),选择Network,勾选 Preserve log,防止页面重定向而失去log,输入登录url(https://www.oschina.net/home/login),会得到如下信息。

F12 - Network.png

分析需要获取的请求信息:

  1. login
Request
Request URL: https://www.oschina.net/home/login
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36
Response
Set-Cookie: aliyungf_tc=---; Path=/; HttpOnly
Set-Cookie: _user_behavior_=---; Domain=.oschina.net; Expires=---; Path=/; HttpOnly
  1. captcha
Request:
Request URL: https://www.oschina.net/action/user/captcha
Cookie: aliyungf_tc=---; _user_behavior_=---
Response:
Set-Cookie: _reg_key_=---; Domain=.oschina.net; Expires=---; Path=/; HttpOnly

可以发现这里请求用的Cookie是上面login的response。

账户密码登录

在页面上输入账号密码,尝试登录,观察Network。
我们发现页面跳转到主页,Request Cookie多了一些未知的信息,所以应该是登录的form表单在post提交之后,页面被重定向时Response的,然后跳转到主页。

Cookie: aliyungf_tc=---; oscid=---

这里我们就需要继续获取form表单post提交的信息了。

Request:
Request URL: https://www.oschina.net/action/user/hash_login?from=
Request Method: POST
email: ---
pwd: ****************
verifyCode: 
save_login: 0
Cookie: aliyungf_tc=---; _user_behavior_=---; _reg_key_=--

Response:
Set-Cookie: oscid=""; Domain=.oschina.net; Expires=---; Path=/; HttpOnly
Set-Cookie: oscid=---; Domain=.oschina.net; Path=/; HttpOnly

可以看到密码是加密过的,退出登录返回到登录页面,查看页面源码,好吧,这段逻辑几乎没法看,手动尝试发现,密码采用的是Hash Sha1加密方式。

至此,登录逻辑解析完成。

其他

接下来沿着业务逻辑进行编码就可以。
其他的操作也就是类似的流程,先理清楚逻辑在编写代码就可以完成。

你可能感兴趣的:(Java Jsoup 爬虫模拟登陆)