scrapy爬虫防止被禁止 User Agent切换

原创 2015年09月18日 13:19:07

http://doc.scrapy.org/en/1.0/topics/practices.html#bans

1. User Agent轮换

2. 禁Cookie

3. 设置大于2s的DOWNLOAD_DELAY

4. 使用Google Cache (不懂)

5. 使用轮换IP(还不会)

6. 使用分布式下载器(不知道scrapy-redis算不算)


User Agent轮换例子

1)新建一个middlewares.py文件,内容如下,文件放在与items.py, settings.py所在的文件夹下。

#!/usr/bin/python
#-*-coding:utf-8-*-

import random
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware

class RotateUserAgentMiddleware(UserAgentMiddleware):
    def __init__(self, user_agent=''):
        self.user_agent = user_agent

    def process_request(self, request, spider):
        ua = random.choice(self.user_agent_list)
        if ua:
            print ua, '-----------------yyyyyyyyyyyyyyyyyyyyyyyyy'
            request.headers.setdefault('User-Agent', ua)

    #the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape
    #for more user agent strings,you can find it in 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"
       ]
2) 然后在settings.py中按如下设置

DOWNLOADER_MIDDLEWARES = {
	'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,
	'example.middlewares.RotateUserAgentMiddleware':400,
}

运行爬虫scrapy crawl spider1 -L WARNING   不打印Debug信息,可以清楚得看到print出来的User Agent不同。


scrapy-redis介绍(三):如何自定义user-agent

一般情况下,我们在编写爬虫的时候都会不停的更换用户代理,这样就可以降低被ban掉的风险。在scrapy中,默认会给我们一个user-agent,这明显是不可以直接拿来用的,所以,我们需要修改这一部分,...
  • hjhmpl123
  • hjhmpl123
  • 2016年12月01日 11:23
  • 1579

python爬虫之scrapy中user agent浅谈(两种方法)

user agent简述 User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏...
  • china_python
  • china_python
  • 2017年11月24日 00:35
  • 115

scrapy在爬取网页时使用随机user-agent方法

转载 默认情况下scrapy采集时只能使用一种user-agent,这样容易被网站屏蔽,下面的代码可以从预先定义的user-agent的列表中随机选择一个来采集不同的页面 在settings.py...
  • liyuetao680
  • liyuetao680
  • 2015年09月16日 20:58
  • 5764

scrapy采集数据时为每个请求随机分配user-agent

通过这个方法可以每次请求更换不同的user-agent,防止网站根据user-agent屏蔽scrapy的蜘蛛 首先将下面的代码添加到settings.py文件,替换默认的user-agent处理模...
  • Yelbosh
  • Yelbosh
  • 2014年03月19日 17:09
  • 3273

Scrapy研究探索(七)——如何防止被ban之策略大集合

话说在尝试设置download_delay小于1,并且无任何其他防止被ban的策略之后,我终于成功的被ban了。如下: 敌退我进,敌攻我挡。 本篇博客主要研究使用防止被ban的几大策略以及在s...
  • u012150179
  • u012150179
  • 2014年06月29日 10:45
  • 29990

python scrapy 之 随机选择user-agent

settting中配置 DOWNLOADER_MIDDLEWARES = { 'scrapy.contrib.downloadermiddleware.useragent.UserAgen...
  • x631617479
  • x631617479
  • 2017年05月19日 10:27
  • 1164

scrapy随机user-agent

  • 2017年04月16日 00:19
  • 9KB
  • 下载

反反爬虫------设置scrapy随机user_agents

在我们使用爬虫的时候,总会遇到一些网站规则,限制我们去爬取,其中一个就行限制浏览器请求头 我们可以设置一个user_agent的列表,然后随机抽取其中的一个作为浏览器请求头,这样每次访问网站就可以使...
  • LCYong_
  • LCYong_
  • 2017年06月03日 21:09
  • 1149

Scrapy在采集网页时使用随机user-agent

随机生成User-agent:更改User-agent能够防止一些403或者400的错误,基本上属于每个爬虫都会写的。这里我们可以重写scrapy 里的middleware,让程序每次请求都随机获取一...
  • Gooooa
  • Gooooa
  • 2017年06月22日 17:25
  • 501

scrapy爬取某网站,模拟登陆过程中遇到的那些坑

最近接触scrapy,爬取了几个网站,用着还挺顺手的. 前几天,一个做业务的同事让我帮他爬取一个网站上的用户信息,我就满口承诺下来了.毕竟,通过前几次的爬取,已经自信心爆棚了(从此入坑). ...
  • amaomao123
  • amaomao123
  • 2016年09月12日 11:13
  • 8202
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scrapy爬虫防止被禁止 User Agent切换
举报原因:
原因补充:

(最多只允许输入30个字)