美文网首页
爬虫进阶必备技能:模拟登录

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

作者: Miltonlong | 来源:发表于2018-03-17 11:57 被阅读33次

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    小结:

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

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

    相关文章

      网友评论

          本文标题:爬虫进阶必备技能:模拟登录

          本文链接:https://www.haomeiwen.com/subject/amxjqftx.html