这个是爬虫教程第三篇,教大家如何模拟用户表单登录。
前期准备:
- JSOUP 1.83 jar包
- Eclipse 任意版本能运行java就行
- 谷歌浏览器
第一步:依然是分析页面结构
我们要模拟CSDN用户表单登录,来获取用户登录后的数据。
在一些网站和论坛,部分内容总是需要会员用户等需要一定权限的用户才能看得到。
好了由此可见模拟用户表单登录的重要性了。
进入登录页,在页面上按F12查看页面元素的内容。
这次我们只要form标签,和其内部的账号密码输入框信息。
第二步:讲解一下Post需要的操作具体流程
一般表单的id都是唯一的,所以要过滤出表单是很容易的一件事情
这里表单的id值是fm1
下一步是获得表单下面的帐号和密码输入框控件,同样可以根据id来过滤,不过这里使用的是name属性。
一般网站设计都会把name属性配上value,post到服务端。
直接在Map对象中put帐号和密码的键值对,代码如下
这个就是表单的帐号密码输入框的键值
也可以不做遍历直接
哈哈,是不是少了许多。
经过这一步之后datas里已经存放了我们要post的数据了。
可以执行第二次请求将登录信息post上去了。
Response login = con2.ignoreContentType(true).method(Method.POST)
.data(datas).cookies(rs.cookies()).execute();
携带登录的Map数据和第一次登录返回的cookie,进行post。
第三步:开始写代码
好了就是这么简单。接下来看看代码吧。
总结
这个类中写了两次网站访问的请求
第一次请求用来获取cookie信息
第二次请求将携带cookie和登录数据的信息post出去用来模拟登录。
就是这么简单~~~
小Tips:
想要模拟用户表单登录,链接头信息是不可少的,"User-Agent"代表的是浏览器访问信息。
通过下图可以看到请求头可以有这么多的信息,
服务端可能会通过约束请求头来判别用户post/get的信息是否合法
所以请求头很重要~请求头很重要~请求头很重要~(重要的事情说三遍)
这个是登录后每一次操作都需要携带的头部信息。可以通过F12查看页面网络访问状态来查看请求头和返回头。
好啦,有了模拟表单登录了,是时候去大展身手了。
爬虫教程到此结束,希望有兴趣的小伙伴可以继续深入研究
By Xiaolong:You have a dream,you got to protect it!