どうやって Tor からの接続かどうか確認したらいいのかを調べてみました。
tor nginx で検索して見つけたやり方
http://www.reaper-x.com/2012/05/15/how-to-block-tor-on-apache-and-nginx/
あ~、だめだわこれ
exitnode の増加現に対応できない
しかし大規模だと静的にするしかないかもしれないのでこうなるか…
DNS ベース
他の方法がないか調べてみたら DNS ベースのものを発見
https://trac.torproject.org/projects/tor/wiki/doc/TorDNSExitList
dig での例は https://www.torproject.org/projects/tordnsel.html.en
exitnode リスト
昔は http://exitlist.torproject.org/exit-addresses からリストを取得
パースしてリストを作成していたけど今アクセスすると 403
https://check.torproject.org/exit-addresses が現時点での exitnode のアドレス一覧かな?
http://exitlist.torproject.org/exit-addresses は各種情報を含めていたりして
cron で全世界から取得されて転送量がすごいことになったから廃止になったのかな?
ブラウザベース
ブラウザベースでの確認ページが https://check.torproject.org/
ソースの gitweb は https://gitweb.torproject.org/check.git
API(未検証)
python の stem(https://gitweb.torproject.org/stem.git)
を使用して circuit から exitnode を取り出してデータ化
stem/descriptor/remote.py から
exit_policy の is_exiting_allowed が true なら exitnode
DescriptorDownloader でサーバのリストが取得できそう
python なのは CentOS とかなら yum に必要なので基本的にインストールされているから