#File name is rotate_useragent
# -*- coding: UTF-8 -*-
import random
import urllib2
import redis
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware
from CrawlerTools.ScrapyFileSystem.config import *
class RotateUserAgentMiddleware(UserAgentMiddleware):
    
    def __inti__(self,user_agent=""):
        self.user_agent=user_agent

def process_request(self,request,spider):
        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"  ]
        ua=random.choice(user_agent_list)
        if ua:
            request.headers.setdefault("User-Agent",ua)

#Get  ip
        cfg=config("Redis")
        redisId=redis.Redis(cfg["host"],cfg["port"],1,cfg["pwd"])
        res=redisId.srandmember("ipPool",1)[0].strip()
        urls=res.split(":")
        request.meta['proxy'] ="http://"+str(urls[0])+":"+str(urls[1])
        # Use the following lines if your proxy requires authentication

#Configuration profile
DOWNLOADER_MIDDLEWARES = {
        'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None,  
    'CrawlerTools.rotate_useragent.RotateUserAgentMiddleware' :400  
}

scrapy_ip_agent的更多相关文章

随机推荐

  1. HDU5071 - Chat(STL模拟)

    题目描述 略... 题解 现场赛的时候真是脑残...用splay去写..写完发现调试不出来...然后才发现数据范围才5000...不过那时候只有40分钟了..用数组模拟了速度敲了一发.写完只剩10几分 ...

  2. js滑动门及对像的使用

    function scrollDoor() { } scrollDoor.prototype = { sd: function (menus, divs, openClass, closeClass) ...

  3. UVALive 7327 Digit Division (模拟)

    Digit Division 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/D Description We are given ...

  4. 玩转轻巧型C/C++ IDE之C-Free(配置GCC、Visual C++、Borland C++编译器)

    玩转轻巧型C/C++ IDE之C-Free(配置GCC.Visual C++.Borland C++编译器) 之前在写一点简单的C/C++代码时习惯了VC++6.0,但是由于在windows7下VC6 ...

  5. AutoCAD.NET二次开发:创建自定义菜单(COM)

    当我们要在CAD中创建自定菜单时,可以引用COM组件来实现. 下面是实现方式: 1.新建类库项目,并引用CAD目录(我这里用的是CAD2008)下的acdbmgd.dll.acmgd.dll,并将引用 ...

  6. IOS开发--数据持久化篇文件存储(二)

    前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不 ...

  7. CPU与内存(经典问答)

    原文:http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如 ...

  8. MemCacheManager

    #region Fields private AreaRepository _areaRepository = new AreaRepository(); private ICacheManager ...

  9. Android之基于HTTP协议的下载

    Android之基于HTTP协议的下载 http://www.blogjava.net/zh-weir/archive/2010/05/02/319892.html http://www.qianfa ...

  10. 剑指OFFER之链表中倒数第k个节点(九度OJ1517)

    题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为两个整数n和k(0<= ...