爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!

原文链接: https://segmentfault.com/a/1190000018320490

1 前言
近期,有些朋友问我一些关于如何应对反爬虫的问题。由于好多朋友都在问,因此决定写一篇此类的博客。把我知道的一些方法,分享给大家。博主属于小菜级别,玩爬虫也完全是处于兴趣爱好,如有不足之处,还望指正。

在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots)。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息。

说句实在话,如果我的网站总是让人爬来爬取的,经常被虚拟访问者骚扰,我也是蛮烦的,而且如果遇到“霸道”一点的爬虫,都能直接把服务器卡死。因此,我们在爬取别人网站的时候,也多为对方考虑考虑。不过话说回来,我却没有这个烦恼,为什么呢?因为我根本就没有自己的网站。=.=

2 黑科技
网站防采集的前提就是要正确地区分人类访问用户和网络机器人。现在网站有很多技术来防止爬虫,比如验证码,对于一些简单的数字验证码,可以使用训练好的caffemodel诸如此类的模型去识别,准确率还是可以的。当然,也可以在Github搜一搜关于验证码识别的东西,看一看大牛们是怎么玩的。除了这些高大上的,还有一些十分简单的方法可以让你的网络机器人看起来更像人类访问用户。

2.1 构造合理的HTTP请求头
除了处理网站表单,requests 模块还是一个设置请求头的利器。HTTP 的请求头是在你每次向网络服务器发送请求时,传递的一组属性和配置信息。HTTP 定义了十几种古怪的请求头类型,不过大多数都不常用。

每个网站都有不同的请求头,如何获取这个请求头呢?可以用我从前提到过的Fiddler或者审查元素的方法,我们可以根据实际情况进行配置。例如,GET百度根目录的时候,需要添加的请求头信息如下:

你可能感兴趣的:(爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!)