爬虫进阶必备技能:模拟登录

在爬取数据时,有时会发现,有一些网站需要登录才能获取到数据。

面对这样的情况,就必须用到模拟登录。

我们就来试着模拟登录,我看过一些网站,有些登录太简单,而有一些又太难,对于新手比较难上手。我们今天拿GitHub来实战一下,难度不是太高,跟着这篇文章一步一步地做,你一定能够做出来。

今天我们要用的一个工具——Fiddler抓包工具,当然浏览器自带的开发者调试工具也可以,只是不如Fiddler好用。


第一步当然还是分析网页,模拟登录抓包时一定要注意尽量要把所有的数据都抓到,包括从主页面,一直到点击登录的所有数据。


爬虫进阶必备技能:模拟登录_第1张图片

点击图中红色方框处进入登录页面。注意:主页面这个地方是申请账号,不是登录页面。


爬虫进阶必备技能:模拟登录_第2张图片

在这里登录,抓包的时候不用输入正确的账号密码。


爬虫进阶必备技能:模拟登录_第3张图片

这就是抓包结果,图中选中的就是登录的URL。因为通常情况下,登录都是用的post请求,在fiddler里面可以通过“=post”的命令,可以快速查找到post请求。


爬虫进阶必备技能:模拟登录_第4张图片

打开WebForm,可以看到post请求时传的值。


爬虫进阶必备技能:模拟登录_第5张图片

通过单词的意思,基本都能看明白,但是authenticity_token值里面的一串乱码是什么呢?

这个时候就要体现出Fiddler的优势了,不知道没关系,在Fiddler搜一下。


爬虫进阶必备技能:模拟登录_第6张图片


爬虫进阶必备技能:模拟登录_第7张图片

在这里可以看到,这个值是在前面https://github.com/login,这个页面返回的。

那么我们要登录,就必须在传值之前去获取到这个authenticity_token 值,然后我们在通过post方法登录。




大致流程已经弄清楚了,现在我们就来写代码实现模拟登录。

在写登录时,一般用session,这个有个好处,就是自动帮你把headers,cookies等信息保存下来,不用再去考虑这些问题。


爬虫进阶必备技能:模拟登录_第8张图片

先来获取authenticity_token,这里可以用正则表达式来取值。


在获取authenticity_token,就可以用post传值登录了。


爬虫进阶必备技能:模拟登录_第9张图片

这里可以传入正确的账号密码,通过print的值可以看到我们已经登录成功了。



小结:

[if !supportLists]1.   [endif]这里由于证书的原因,必须传入verify = False,来忽略验证证书,但是仍然会有一个警告信息,对于有强迫症的朋友不喜欢看见红色的字,可以导入 urllib3,通过urllib3.disable_warnings()来消除。

[if !supportLists]2.   [endif]通过session的方式来登录非常的简单,为了更好的理解这个登录的过程,可以自己尝试一下通过requests,自己来传入headers,cookies来实现这个登录。



爬虫进阶必备技能:模拟登录_第10张图片

你可能感兴趣的:(爬虫进阶必备技能:模拟登录)