如何在torcc文件,polipo配置文件中设置多个socks端口,并在scrapy项目中实现它?

时间:2019-02-22 18:03:07

标签: python scrapy tor stem polipo

我的目标是像here一样使用单个蜘蛛的多个命令,并为每个启动的命令获取不同的IP。因此,我在下面介绍一些想法。

据我了解,我可以在一个torrc文件中写入几个端口,正如在topic中adrelanos的答案中介绍的那样。 如果为true,则很有用,因为我使用Vidalia启动它,并且我只能设置一个torrc文件。 注意,我暂时未对其进行测试

但是我有几次审问。

在此page (在上一个topic中存在)中,torrc文件也需要一个Socksport和一个ControlPort 。首先真的有必要同时拥有两者吗?我可以在polipo config文件中设置第二个文件吗,可以像socksParentProxy (在polipo手册中找不到该文件一样)中设置几个不同的torrc吗?第三,如何在下面的代码中用Socksport在草率的middlewares.py中实现controller

在我的项目中,我打算根据蜘蛛的不同命令设置不同的控制端口,如下所示:

spider.py

def __init__ (self, arg1=None, arg2=None , controlport=None, proxyport=None, socksport=None) : 
    arg1= self.arg1
    arg2= self.arg2

middlewares.py

from toripchanger import TorIpChanger
from stem import Signal
from stem.control import Controller

def _set_new_ip(controlport):
    with Controller.from_port(port=controlport) as controller:
        controller.authenticate(password='tor_password')
        controller.signal(Signal.NEWNYM)

class ProxyMiddleware(object):
    def process_request(self, request, spider):
        _set_new_ip(spider.controlport) #not sure it could work but you get the idea
        request.meta['proxy'] = 'http://127.0.0.1:'+str(spider.proxyport)
        spider.log('Proxy : %s' % request.meta['proxy'])

那么如何在其中设置socksport?我查看了stem文件中使用的middlewares.py库的Controller文档,但看不到哪种方法可以帮助我做到这一点。

最后一个问题,代理服务器是可选的,如果我不使用代理服务器而仅使用Tor,会有什么风险?

0 个答案:

没有答案