必要があったので、スクリプトを書きました。
スクリプトの動き
- 公開されているTor出口リストをダウンロード。
- IPアドレスのみを抽出。
- 重複を排除してソート。
スクリプト内容
- tor_exit_hodes.sh
#!/bin/bash
# 出口ノードリストのURL
TOR_EXIT_LIST_URL="https://check.torproject.org/exit-addresses"
# ダウンロード先ファイル名
OUTPUT_FILE="exit_nodes.$(date +%Y%m%d).txt"
# curlを使用してリストをダウンロード
curl -o "$OUTPUT_FILE" "$TOR_EXIT_LIST_URL"
##curl -o "$OUTPUT_FILE" "$TOR_EXIT_LIST_URL" >/dev/null 2>&1
##cron処理などを行う場合はこちらを使います。
# ダウンロードが成功したかどうかを確認
if [ $? -eq 0 ]; then
echo "Tor出口ノードリストをダウンロードしました。ファイル: $OUTPUT_FILE"
else
echo "ダウンロード中にエラーが発生しました。"
exit 1
fi
# IPアドレスのみを抽出し、ソートして出力
awk '/^ExitAddress/ {print $2}' "$OUTPUT_FILE" | sort | uniq | tee sorted_ip_addresses$(date +%Y%m%d).txt
##awk '/^ExitAddress/ {print $2}' "$OUTPUT_FILE" | sort | uniq > sorted_ip_addresses$(date +%Y%m%d).txt >/dev/null 2>&1
##cron処理などを行う場合はこちらを使います。
これで、IPアドレスのみが抽出されますので、apache/nginxやFiwawall/WAFとの連携が容易になります。
今後の動き
- Cron化
- Mod_Securityとの連携
などやっていきます。