
Fresh Onionsは、zlal32teyptf4tvi.onionでホストされているオープンソースのTORスパイダー / 隠しサービスオニオンクローラーです。
これは、http://zlal32teyptf4tvi.onion 隠しサービスのソースコードのコピーであり、tor 隠しサービス クローラー/スパイダーおよびウェブサイトを実装しています。
このソフトウェアはGNU Affero GPL 3ライセンスの下で提供されています。これは、このソフトウェアを一般に公開されているネットワークソフトウェアの一部としてデプロイする場合、ソースコード(および修正版)を利用可能にしなければならないことを意味します。
GNUサイトより:
GNU Affero General Public Licenseは、通常のGNU GPLバージョン3の修正版です。追加要件が1つあります。修正されたプログラムをサーバー上で実行し、他のユーザーがそこで通信できるようにする場合、サーバーはその修正版に対応するソースコードをダウンロードできるようにしなければなりません。
pip install -r requirements.txt
schema.sqlからMySQLデータベースを作成します
データベース設定のためにetc/databaseを編集します
TOR設定のためにetc/proxyを編集します
script/push.sh someoniondirectory.onion
script/push.sh anotheroniondirectory.onion
etc/uwsgi_onlyを編集し、BASEDIRをtorscraperがインストールされている場所(例:/home/user/torscraper)に設定します
実行:
init/scraper_service.sh # クロールを開始する
init/isup_service.sh # サイトステータスを最新に保つ
torscraperにはオプションのelasticsearch機能が付属しています(デフォルトで有効)。etc/elasticsearchを編集して変数を設定するか、ELASTICSEARCH_ENABLED=falseに設定して無効にします。設定後にscripts/elasticsearch_migrate.shを実行して初期セットアップを行います。
elasticsearchが無効の場合、全文検索は利用できませんが、クロールと新しいサイトの発見は引き続き動作します。
# 様々なソースからオニオンを収集
1 18 * * * /home/scraper/torscraper/scripts/harvest.sh
# 新しいサイトのSSHフィンガープリントを取得
1 4,16 * * * /home/scraper/torscraper/scripts/update_fingerprints.sh
# /r/darknetmarkets スーパーリストからサイトを本物/偽物としてマーク
1 9 * * 1 /home/scraper/torscraper/scripts/get_valid.sh
# オニオンをpastebinからスクレイピング(有料アカウント/IPホワイトリスト登録が必要)
*/5 * * * * /home/scraper/torscraper/scripts/pastebin.sh
# 新しいオニオンをポートスキャン
1 */6 * * * /home/scraper/torscraper/scripts/portscan_up.sh
# stronghold pasteをスクレイピング
32 */2 * * * /home/scraper/torscraper/scripts/stronghold_paste_rip.sh
# クローンを検出
16 3 * * * /home/scraper/torscraper/scripts/detect_clones.sh
Fresh Onionsは2台のサーバーで動作しています。データベースと隠しサービスWebサイトを実行するフロントエンドホストと、クローラーを実行するバックエンドホストです。おそらく読者にとって最も興味深いのはバックエンドのセットアップでしょう。TORクライアントは完全にシングルスレッドです。そうです!2017年になっても、空飛ぶ車が完全に不足しているのと同様に、TORはシングルスレッドで動作します。つまり、単一のTORインスタンスでクローラーを実行しようとすると、すぐにCPU使用率が100%に達することがわかるでしょう。
この問題の解決策は、複数のTORインスタンスを実行し、リクエストをラウンドロビンする何らかのフロントエンドを介して接続することです。Fresh Onionsクローラーは8つのTorインスタンスを実行します。
Debian(およびUbuntu)には、複数のTORインスタンスを迅速に作成するための便利なプログラム「tor-instance-create」が付属しています。フロントエンドプロキシとしてSquidを使用しましたが、残念ながらSOCKSに直接接続できないため、中間プロキシとして「privoxy」を使用しました。各TORインスタンスに対して1つのprivoxyインスタンスが必要です。Debianシステムでprivoxyインスタンスを作成するためのスクリプトが「scripts/create_privoxy.sh」にあります。また、/etc/privoxy/default.filterを空のファイルに置き換えることで、不要な正規表現を削除してCPU負荷を軽減するのに役立ちます。
さらに、このリソース https://www.howtoforge.com/ultimate-security-proxy-with-tor はSquidのセットアップに役立つかもしれません。クロールのみを行い、匿名性を気にしない場合は、速度向上のためにTORをtor2webモードで実行することをお勧めします(再コンパイルが必要)。