在运行scrapy之前建立检查连接

时间:2016-05-10 10:01:41

标签: python scrapy tor

在开始使用python scrapy进行爬行之前,我想查看tor。我在linux上使用polipo/tor/scrapy

正确地使用这个设置scrapy在它的爬行上使用tor。我检查使用tor正确的scrapy是否在myspider中抓取this page的方式。

class mySpider(scrapy.Spider): 
    def start_requests(self):
         yield Request('https://check.torproject.org/', self.parse)

    def parse(self, response):
         logging.info("Check tor page:" + str(response.css('.content h1::text')))

但是我认为可能有更好/更干净的方式。我知道我可以check tor service statuscheck ip address但我想实际检查是否正确建立了连接。

1 个答案:

答案 0 :(得分:2)

这样做有点明确的方法是连接到Tor的控制端口并发出GETINFO status/circuit-established

如果Tor有一个有源电路,它将返回:

250-status/circuit-established=1
250 OK

如果暂时没有使用Tor,则可以为0.您也可以拨打GETINFO dormant,这将产生250-dormant=1。很可能当你尝试使用Tor时,它将构建一个电路,休眠将变为0,并且电路建立将是1,除非出现任何主要的网络问题。

在任何一种情况下,休眠= 0或电路建立= 1应该足以告诉你可以使用Tor。

这是一个简单的协议,因此您只需打开控制端口的套接字,进行身份验证和发出命令,或者使用Stem中的Controller

有关详细信息,请参阅control spec