我想自动生成可以到达某个IP地址的tor退出节点列表。我在互联网上搜索了一段时间,并从http://sjoerd-hemminga.com/blog/2012/10/block-tor-exit-nodes-using-iptables/
中看到了这段代码if [[ -z "$1" ]]; then
echo Usage: $0 "<your host's ip>"
exit 1
fi
hostip=$1
for i in $(wget https://check.torproject.org/cgi-bin/TorBulkExitList.py\?ip=$hostip -O- -q |\
grep -E '^[[:digit:]]+(\.[[:digit:]]+){3}$'); do
sudo iptables -A INPUT -s "$i" -j DROP
done
有人可以帮助我更好地理解这些代码,因为每次我尝试运行它都会产生错误。
欢迎任何替代答案,但我想如果它们是Python。
答案 0 :(得分:3)
import os
import re
import sys
import urllib
if len(sys.argv) != 2:
print "Usage {} <your host's ip>".format(sys.argv[0])
sys.exit(1)
hostip = sys.argv[1]
u = urllib.urlopen('https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=' + hostip)
for ip in u:
ip = ip.strip()
if re.match('\d+(\.\d+){3}$', ip):
#print ip
os.system('sudo iptables -A INPUT -s "{}" -j DROP'.format(ip))
u.close()
答案 1 :(得分:0)
如果您已将Tor配置为具有控制端口和服务器描述符......
ControlPort 9051
CookieAuthentication 1
UseMicrodescriptors 0
...然后您可以使用stem ...
轻松枚举退出from stem.control import Controller
with Controller.from_port(port = 9051) as controller:
controller.authenticate()
for desc in controller.get_server_descriptors():
if desc.exit_policy.is_exiting_allowed():
print desc.address
那就是说,如果你真正的问题是'如何使用每个Tor出口做什么'那么请不要!反复制作电路对Tor网络有害,有关详细信息,请参阅stem's FAQ。
答案 2 :(得分:0)
Here(https://github.com/RD17/DeTor)是一个简单的REST API,用于确定请求是否来自TOR网络。
请求是:
curl -X GET http://detor.ambar.cloud/
。
回应是
{
"sourceIp": "104.200.20.46",
"destIp": "89.207.89.82",
"destPort": "8080",
"found": true
}