2016-05-10 3 views
2

パイソン・スクラピーを使用してクロールを開始する前にtorをチェックしたいと思います。私はLinux上でpolipo/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 statusまたはcheck ip addressを知ることができますが、実際に接続が正しく確立されているかどうかを実際に確認したいと思います。

答えて

2

これを行うためのやや明確な方法は、Torの制御ポートに接続し、GETINFO status/circuit-establishedを発行することです。

Torは構築されたアクティブ回路を持っている場合、それが返されます:

250-status/circuit-established=1 
250 OK 

Torはしばらくの間使用されていない場合にも250-dormant=1をもたらすことになるGETINFO dormantを呼び出すことができます0、これは可能性があります。ほとんどの場合、Torを使用しようとすると、回路が構築され、休止状態が0になり、回路が確立され、主要なネットワークの問題が1つになります。

いずれの場合でも、休眠= 0またはcircuit-established = 1は、Torを使用できることを示すには十分です。

これは単純なプロトコルなので、制御ポートへのソケットのオープン、認証、およびコマンドの発行だけ、またはControllerのステムからの使用が可能です。

詳細については、control specを参照してください。

+0

返信ありがとう、私はちょうどツイストがtxtorconを使用していることに気付いたので、私はscrapがtxtorconを使用していると推測するので、代わりにtxtorconでgetinfoを学ぶべきです。 – PHA

+0

[torcontrolprotocol.py] //github.com/meejah/txtorcon/blob/master/txtorcon/torcontrolprotocol.py#L384)。それを使用することもできますが、そのような単純なコマンドに特別なものは何も付いていない非常に単純なコマンドベースのプロトコルです。しかし、特定の結果を解析し、メッセージの終わりを識別する方法を知ることで、より複雑になります。 – drew010

+0

私が正しく理解していれば、Torがしばらく使用されていなければ、 'dormant'と' circuit-established'はそれぞれ1と0を返します。 (1)これらのコマンドはTorを起動しますか? (2)それを目覚めさせる最良の方法は何ですか? – nopara73

関連する問題