常见爬虫策略

首先来了解常见的反爬虫策略

1. robots.txt 协议

不强制,更像是约定 绅士些的爬虫都会遵循。

2. 后台对访问进行统计,如果单个IP访问超过阈值,予以处理。

可以分析ip的请求时间、频率、路径,排除白名单IP 和正常spider(baidu,google...)

有两个缺陷,一个是非常容易误伤普通用户,另一个就是,IP其实不值钱,几十块钱甚至有可能买到几十万个IP。

3. 后台对访问进行统计,如果单个session访问超过阈值,予以处理

这个看起来更高级了一些,但是其实效果更差,因为session完全不值钱,重新申请一个就可以了。

4. 后台对访问进行统计,如果单个userAgent访问超过阈值,予以处理。

这个是大招,类似于抗生素之类的,效果出奇的好,但是杀伤力过大,误伤非常严重

5. 以上的组合。

组合起来能力变大,误伤率下降,在遇到低级爬虫的时候,还是比较好用的。

** 6.加验证码**

直接封锁ip不友善,容易误伤,统计ip访问计数,单位时间超过阙值发送验证码

爬虫策略

本文只举了些许常见的爬虫策略,截图大部分为settings.py自带。

1.robots.txt rules

Robots协议更像是一种情怀, 需要强爬就设置

 ROBOTSTXT_OBEY = False 

robots设置

2.请求时延

限制爬取速度,一方面能避免被反爬虫措施封禁,另一方面也能减轻对服务器的压力 编辑配置文件settings.py,设置

 DOWNLOAD_DELAY = 3

也可加更多限制条件

delay

3.禁用cookies

添加COOKIES_ENABLED = False

禁用cookies

4.重写请求头

请求头

5. IP池

Settings.py同级目录下添加middlewares.py, middlewares.py 内容如下 只需加一个process_request 方法

ip中间件内容

并在settings.py中配置启动中间件

DOWNLOADER_MIDDLEWARES = {}

ip池配置

**6.随机切换userAgent **

伪装成浏览器之类,亦可加referer 配置文件settings.py 同级目录下新增下载中间件 rotate_useragent.py

userAgent中间件内容

加 下列代码

#UA池,更多UA头部可参考 http://www.useragentstring.com/pages/useragentstring.php
  user_agent_list = [
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 ",
      "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
      "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 ",
      "(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 ",
      "(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
      "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 ",
      "(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
      "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 ",
      "(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
      "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 ",
      "(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
      "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 ",
      "(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
      "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
      "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
      "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
      "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
      "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 ",
      "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
      "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 ",
      "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
      "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 ",
      "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
]

编辑配置文件settings.py,启用下载中间件

DOWNLOADER_MIDDLEWARES = {
    'ip_proxy.rotate_useragent.RotateUserAgentMiddleware': 1,
}

7..实现分布式爬虫(还没试)

** 8.分析验证码结构,实现一些简单验证码的识别(还没试)**

转载于:https://my.oschina.net/jingzigege/blog/739857

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值