您当前的位置: 首页 >  Python

Python爬虫:scrapy防止爬虫被禁的策略

彭世瑜 发布时间:2018-06-22 18:20:37 ,浏览量:2

爬虫策略:

1、动态User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息),使用中间件

class RandomUserAgentMiddleware(object):
    def process_request(self, request, spider):
        request.headers.setdefault('User-Agent', "xxx")

2、禁用Cookies(也就是不启用cookies middleware,不向Server发送cookies,有些网站通过cookie的使用发现爬虫行为)可以通过COOKIES_ENABLED 控制 CookiesMiddleware 开启或关闭

# 禁用cookies,防止某些网站根据Cookie来封锁爬虫。
COOKIES_ENABLED = False

3、 延迟下载(防止访问过于频繁,设置为 2秒 或更高)

# 设置下载延迟
DOWNLOAD_DELAY = 3

4、 缓存数据 Google Cache 和 Baidu Cache:如果可能的话,使用谷歌/百度等搜索引擎服务器页面缓存获取页面数据。

5、IP地址池:VPN和代理IP,现在大部分网站都是根据IP来ban的。

class RandomProxyMiddleware(object):
    def process_request(self, request, spider):
        request.meta["proxy"] = "127.0.0.1:8888"

6、 Crawlera(专用于爬虫的代理组件),正确配置和设置下载中间件后,项目所有的request都是通过crawlera发出。

DOWNLOADER_MIDDLEWARES = {
    'scrapy_crawlera.CrawleraMiddleware': 600
}

CRAWLERA_ENABLED = True
CRAWLERA_USER = '注册/购买的UserKey'
CRAWLERA_PASS = '注册/购买的Password'

参考

  1. 爬虫框架Scrapy之Downloader Middlewares
  2. 下载器中间件(Downloader Middleware)
关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 2浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0658s