2012-03-19 72 views
12

我想監視運行Tor實例的狀態。如何通過控制端口獲取Tor出口節點的IP地址?

我已經能夠通過TCP連接獲取信息到控制端口。 例如「GETINFO流狀態」返回數據,但我無法確定當前選擇的出口節點的IP地址。

可以簡單地請求whatismyip.org之類的東西,但這太慢了,並且不能很好地擴展。

那麼獲得Tor連接的出口節點IP地址的最佳方法是什麼?

+0

您是否找到解決方案? – Fluffy 2013-02-02 20:40:44

回答

-1

根據Tor控制協議spec,正確的語法是「GETINFO地址」,它應該呈現the best guess at our external IP address。如果我們沒有猜測,則返回551錯誤。 (在0.1.2.2-α增補)」。

+4

「GETINFO地址」提供了您自己的IP地址(即,如果您選擇繼電器,其他人會看到的地址)。海報所問的是他目前電路的出口中繼地址。 – Damian 2013-06-16 03:26:32

+0

''getinfo電路狀態''當前電路內置和準備。這將包含OR名稱(路由器/跳躍的名稱)和ID。有了這個,你可以用''getinfo ns/id/''或''getinfo ns/name/''可以讓你確定ip – gesell 2015-07-03 12:30:55

8

這是一個很大的問題!下面是使用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

+1

如何知道這些Tor會使用哪一個? – Tyilo 2013-08-20 05:40:51

+0

是的,我們如何知道Tor正在使用哪些? – rdsoze 2014-01-30 12:07:08

+0

這個python/stem的用法如何轉換成Tor控制協議?我想這是'GETINFO電路狀態'。 – 2016-03-13 15:00:19

0

可以使用tor control api。但我不明白這一點。

你知道出口節點id~name,你知道它正在偵聽的IP地址。你不知道什麼樣的網絡interfac e以及它將用於處理您的查詢的ip地址。

我剛剛檢查了約5%的tor出口節點使用未發佈的ipv4地址。

世界正在轉向ipv6。這些IP地址很便宜。每個出口節點可以有一袋ipv6未發佈的地址。