ExcludeNodes の設定を半自動化

追記

ExcludeNodes, ExcludeExitNodes の設定は参考サイトから丸パクリして載せていましたが, 消したようなので消しました.

このプログラムは, BadExit の付いたノードが一つも存在しない場合の処理が抜けています. 気が向いたら直しておきます.直しました.

ここから記事スタート

最近 Tails を使っている。 ExcludeNodes に BadExit フラグが付いたノードを追加するのが面倒だったので、半自動化した。 cURLPython を使用した。

現在のノードのリストはここで確認できる (JSON):

https://onionoo.torproject.org/details

cURLJSON を取得し、BadExit が付いたノードの fingerprints をすべて torrc に突っ込む。

これを実行すると torrc にそのままコピペできる出力が得られる:

#!/bin/sh
URL='https://onionoo.torproject.org/summary?flag=badexit'
echo 'ExcludeNodes SlowServer'|tr -d '\n'
curl -s ${URL}|python3 -c "import sys;import json;a=['$'+r['f']for r in json.loads(sys.stdin.read())['relays']];print(len(a)and',{}'.format(','.join(a))or'')"
echo 'StrictNodes 1'

そのまま使ってもよいが, 各自調整したほうがよい.

参考ウェブサイト

Sources – Tor Metrics

Torを導入した後にやっておくこと – 無能ブログ