我正试图获得Tor使用的外部IP,正如前面提到的here。当使用像myip.dnsomatic.com这样的东西时,这是非常慢的。我尝试了前面提到的链接(python +茎通过控制端口来控制tor ),但是您得到的只是电路的IP,没有确定哪个是退出节点上的IP,有时真正的IP甚至不在结果之列。
任何帮助都将不胜感激。
此外,从here,在底部,阿明建议一种方式,以更新身份在托尔。有一个指令,controller.get_newnym_wait(),,他用它来等待新连接准备就绪(控制器来自steam.control中的控制),难道没有任何东西告诉你Tor正在改变它的身份(对不起,我检查了和双重/三次检查,什么也找不到)吗?
发布于 2017-10-12 11:49:00
您可以在不调用geoip站点的情况下获得退出节点ip。
然而,这是在一个不同的stackexchange站点这里- https://tor.stackexchange.com/questions/3253/how-do-i-trap-circuit-id-none-errors-in-the-stem-script-exit-used-py
正如@mirimir发布的,他下面的代码本质上附加了一个流事件侦听器函数,该函数随后用于获取电路标识、电路指纹,最后是退出ip地址-
#!/usr/bin/python
import functools
import time
from stem import StreamStatus
from stem.control import EventType, Controller
def main():
print "Tracking requests for tor exits. Press 'enter' to end."
print
with Controller.from_port() as controller:
controller.authenticate()
stream_listener = functools.partial(stream_event, controller)
controller.add_event_listener(stream_listener, EventType.STREAM)
raw_input() # wait for user to press enter
def stream_event(controller, event):
if event.status == StreamStatus.SUCCEEDED and event.circ_id:
circ = controller.get_circuit(event.circ_id)
exit_fingerprint = circ.path[-1][0]
exit_relay = controller.get_network_status(exit_fingerprint)
t = time.localtime()
print "datetime|%d-%02d-%02d %02d:%02d:%02d % (t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)
print "website|%s" % (event.target)
print "exitip|%s" % (exit_relay.address)
print "exitport|%i" % (exit_relay.or_port)
print "fingerprint|%s" % exit_relay.fingerprint
print "nickname|%s" % exit_relay.nickname
print "locale|%s" % controller.get_info("ip-to-country/%s" % exit_relay.address, 'unknown')
print发布于 2015-09-19 09:32:59
您可以使用此代码检查当前IP (将SOCKS_PORT值更改为您的IP):
import re
import stem.process
import requesocks
SOCKS_PORT = 9053
tor_process = stem.process.launch_tor()
proxy_address = 'socks5://127.0.0.1:{}'.format(SOCKS_PORT)
proxies = {
'http': proxy_address,
'https': proxy_address
}
response = requesocks.get("http://httpbin.org/ip", proxies=proxies)
print re.findall(r'[\d.-]+', response.text)[0]
tor_process.kill()发布于 2016-11-21 11:11:03
如果你想用袜子,你应该做:
pip install requests[socks]然后你就可以:
import requests
import json
import stem.process
import stem
SOCKS_PORT = "9999"
tor = stem.process.launch_tor_with_config(
config={
'SocksPort': SOCKS_PORT,
},
tor_cmd= 'absolute_path/to/tor.exe',
)
r = requests.Session()
proxies = {
'http': 'socks5://localhost:' + SOCKS_PORT,
'https': 'socks5://localhost:' + SOCKS_PORT
}
response = r.get("http://httpbin.org/ip", proxies=proxies)
self.current_ip = response.json()['origin']https://stackoverflow.com/questions/32448750
复制相似问题