这篇博客文章可能会帮助您,因为它处理了相同的问题。
编辑: 基于具体要求(对于每个请求或之后新的IP Ñ
请求),把适当的呼叫到
set_new_ip在
process_request中间件的方法。但是请注意,对
set_new_ip函数的调用并不一定总是确保新的IP(存在指向FAQ的链接以及相关说明)。
EDIT2: 具有
ProxyMiddleware类的模块如下所示:
from stem import Signalfrom stem.control import Controllerdef _set_new_ip(): with Controller.from_port(port=9051) as controller: controller.authenticate(password='tor_password') controller.signal(Signal.NEWNYM)class ProxyMiddleware(object): def process_request(self, request, spider): _set_new_ip() request.meta['proxy'] = 'http://127.0.0.1:8118' spider.log('Proxy : %s' % request.meta['proxy'])


