为爬虫获取登录cookies:登录的恩恩怨怨

之前讲到的新闻爬虫,是基本不受目标服务器限制的爬虫,技术上的挑战主要在抓取任务的管理、分配,并发的使用,提高效率等方面。而实际中,不同抓取目标的爬虫会遇到很多阻碍,这个阻碍就是登录。

python-crawler-login.jpg

曾几何时,登录是一件很简单的事情,一个账户及其密码,POST给服务器,服务器验证通过即可。那是一个美好的朴素年代,服务器不设防,用户不贪婪。然而,时过境迁,人心变了。越来越多的人想要收集数据,爬虫也就越来越多;而网站就有了网络请求压力,也有了死守数据私心。天下熙熙,皆为利来;天下攘攘,皆为利往。现在的互联网,就成了一个利字当头、魔高一尺道高一丈的战场。

如今,各种网站都设置了复杂的登录这堵高高的墙来阻止爬虫大量甚至全部获取网站的数据。比如,12306的验证码是点选图片,微博是变形的字母验证码,知乎是点选倒立的汉字,哔哩哔哩通过拖动滑块拼图来验证。这些变态的验证过程都是加入人的交互来防止爬虫自动登录,从而阻止爬虫自动化的大批量抓取。

大家都已经知道,HTTP协议是无状态的,用户登录的状态靠cookies在浏览器和服务器之间来回传送来记录。完成登录后,cookies在一定时间范围内是保持不变的,直接获得这个cookies给爬虫用,就可以让爬虫有了登录的状态,进而进行后面的抓取,当然,这个抓取只能持续到cookies过期之前。

1. 爬虫登录的三种层次

完成登录这个过程,最好是程序自动化的实现,那么你写好程序后就可以一边儿玩去了;然而好多时候,事情不是那么让人省心,登录还需要人工参与一下下。总结下来,实现登录有以下三个层次:

简单的POST账户密码就可以实现自动化登录;

通过程序可以模拟出登录流程实现自动化登录;

登录需要人工(智能)介入,人工智能实现自动化登录;

第一个层次,使用requests模块加一两行代码就可以实现,关键是而今遇到这样的良心网站是可遇不可求的。

第二个层次,是很有挑战性的,也是爬虫界人士力求达到的层次。

第三个层次,是很方便的,临时抓取定量数据的宝典利器,无法是人工输入一下验证码;利用人工智能识别验证码,同样也可以达到完全无人介入的地步,但是这已经不是爬虫的范畴了,而要实现人工智能破解各种变态的验证码所耗费的资源也是难以想象的。

由此看来,登录状态cookies的获取,主要还是靠模拟登录流程或人工输入验证码的方式实现。

2. 爬虫登录分析的三类工具

模拟登录,首先就要分析出目标网站的登录流程才能进行程序模拟。而要分析这个过程,就需要工具的辅助,这样的工具有:

Chrome浏览器开发者工具(F12)

Charles、Fiddler Web调试代理(Web Debugging Proxy)工具

Wireshark抓包工具

Chrome的F12,我们前面已经介绍过了,它可以很好的帮助我们分析了解网站的加载过程,但相对于专业工具Charles等又稍显不足;Wireshark是专业的抓包工具,它不仅仅可以分析http协议,TCP、UDP等照样不在话下,但对我们分析登录流程又过于复杂。所以我们还是选择Charles、Fiddler这样的专门的Web(http)调试代理。

来源:PY学习网:原文地址:https://www.py.cn/article.html

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 为爬虫获取登录cookies:登录的恩恩怨怨