我想監視運行Tor實例的狀態。如何通過控制端口獲取Tor出口節點的IP地址?
我已經能夠通過TCP連接獲取信息到控制端口。 例如「GETINFO流狀態」返回數據,但我無法確定當前選擇的出口節點的IP地址。
可以簡單地請求whatismyip.org之類的東西,但這太慢了,並且不能很好地擴展。
那麼獲得Tor連接的出口節點IP地址的最佳方法是什麼?
我想監視運行Tor實例的狀態。如何通過控制端口獲取Tor出口節點的IP地址?
我已經能夠通過TCP連接獲取信息到控制端口。 例如「GETINFO流狀態」返回數據,但我無法確定當前選擇的出口節點的IP地址。
可以簡單地請求whatismyip.org之類的東西,但這太慢了,並且不能很好地擴展。
那麼獲得Tor連接的出口節點IP地址的最佳方法是什麼?
根據Tor控制協議spec,正確的語法是「GETINFO地址」,它應該呈現the best guess at our external IP address
。如果我們沒有猜測,則返回551錯誤。 (在0.1.2.2-α增補)」。
這是一個很大的問題!下面是使用stem做一個簡短的腳本...
from stem import CircStatus
from stem.control import Controller
with Controller.from_port(port = 9051) as controller:
controller.authenticate()
for circ in controller.get_circuits():
if circ.status != CircStatus.BUILT:
continue
exit_fp, exit_nickname = circ.path[-1]
exit_desc = controller.get_network_status(exit_fp, None)
exit_address = exit_desc.address if exit_desc else 'unknown'
print "Exit relay"
print " fingerprint: %s" % exit_fp
print " nickname: %s" % exit_nickname
print " address: %s" % exit_address
print
謝謝你的問題。我已經添加了這個到our FAQ。
可以使用tor control api。但我不明白這一點。
你知道出口節點id~name
,你知道它正在偵聽的IP地址。你不知道什麼樣的網絡interfac e以及它將用於處理您的查詢的ip地址。
我剛剛檢查了約5%的tor出口節點使用未發佈的ipv4地址。
世界正在轉向ipv6。這些IP地址很便宜。每個出口節點可以有一袋ipv6未發佈的地址。
您是否找到解決方案? – Fluffy 2013-02-02 20:40:44