主页 >> 程序猿的东西 >> scrapy爬虫教程摘要(二)——反爬攻防

scrapy爬虫教程摘要(二)——反爬攻防

前言

数据爬取的工作往往是一个灰色地带,即使爬取的是公开的数据,也有可能被禁。那就需要一些攻防技巧。但是,也有一句话叫“爬虫写的好,牢饭吃到饱”,所以请大家谨遵龟腚,不要非法爬取。

正文

通常有以下几种方法

  • 使用user agent池,轮流选择之一来作为user agent。池中包含常见的浏览器的user agent(google一下一大堆)
  • 禁止cookies(参考 COOKIES_ENABLED),有些站点会使用cookies来发现爬虫的轨迹。
  • 设置下载延迟(2或更高)。参考 DOWNLOAD_DELAY 设置。
  • 如果可行,使用 Google cache 来爬取数据,而不是直接访问站点。
  • 使用IP池。例如免费的 Tor项目 或付费服务(ProxyMesh)。
  • 使用高度分布式的下载器(downloader)来绕过禁止(ban),您就只需要专注分析处理页面。这样的例子有: Crawlera

以上来自scrapy文档《实践经验》部分,其实主要是行为模仿,通过不停变换user-agent,ip,关闭cookie,使得让网站认为你是一个全新的用户,通常网站不会针对一个新用户设置过高的门槛,只会封杀频繁访问的用户。设置延迟也是为了模仿正常用户的访问频率,避免过高的QPS。不过对于是否关闭cookie其实要具体问题具体分析,有的内容是登录用户可见的就必须要带上cookie,最好多备用几个轮流使用,避免显得同一个用户太频繁访问。

使用google cache代替原网站的访问是个眼前一亮的奇技淫巧,国内用户不能访问google可以使用百度快照代替,因为大部分网站对搜索引擎的爬虫是持欢迎态度的,咱们去取搜索引擎爬到的数据也是可以的,缺点可能就是搜索引擎上面的快照不一定很新,如果对时效性有要求的话要多加斟酌。

Crawlera我没有用过,看起来也是一个行为模拟工具,相当于把行为模拟代理出去了,他负责设置各种代理和UA等(可能主要是IP),确保帮你把页面下载到,你只需要专注于分析即可。

参考

官方文档/公共实践>>

发表评论