学习随便 Scrapy中间件添加proxy

时间:2021-05-10 04:13:52

Scrapy默认环境下,proxy的设置是由中间件scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware控制的,添加代理与之前的添加UserAgent不同,添加UserAgent是继承重写UserAgentMiddleware,需要禁止系统的UserAgentMiddleware,而现在添加代理只是需要在系统的HttpProxyMiddleware之前执行而已。

weather/customMiddlewares.py

from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware

class CustomProxy(object):
    def process_rquest(self, request, spider):
        request.meta['proxy'] = 'http://x.x.x.x:x'
weather/settings.py
DOWNLOADER_MIDDLEWARES = {
    'weather.customMiddlewares.CustomProxy':10,
    'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 20,
}
request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常是浏览器的名称和版本号)。 注意,Header信息的完整列表取决于用户所发送的Header信息和服务器端设置的Header信息。 这个字典中几个常见的键值有:
HTTP_REFERER,进站前链接网页,如果有的话。 (请注意,它是REFERRER的笔误。)
HTTP_USER_AGENT,用户浏览器的user-agent字符串,如果有的话。 例如: "Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17" .
REMOTE_ADDR 客户端IP,如:"12.345.67.89" 。(如果申请是经过代理服务器的话,那么它可能是以逗号分割的多个IP地址,如:"12.345.67.89,23.456.78.90" 。)
……