我想检查洋葱地址(在我的情况下是torchat的ID)是否在线。由于简单的ping无法正常工作,我该如何实现。
我尝试使用以下python代码获取状态响应:
import requests
url = 'http://rrcc5uuudhh4oz3c.onion'
resp = requests.get(url,
proxies=dict(http='socks5h://127.0.0.1:9050',
https='socks5h://127.0.0.1:9050'))
print(resp)
输出为:<Response [200]>
,这正是我想要的。
但是,当我尝试连接到Torchat-ID时,看到它是否可以到达,我得到:Failed to establish a new connection: 0x05: Connection refused
。
是否还有另一种方法可以从Torchat-ID获取状态代码响应以查看其是否仍然存在?
关于Torchat-ID:https://www.deepdotweb.com/jolly-rogers-security-guide-for-beginners/tor-chat/
在下面您可以看到Torchat。用户可以是主动代表。不活跃。如果它们处于活动状态,则应该能够获得状态响应。 Torchat-ID是普通的.onion地址。
报价(link):
the first time you open TorChat your computer might generate
d0dj309jfj94jfgf.onion and from here on out, d0dj309jfj94jfgf will be
your TorChat ID that you give out to people that you want to be able
to message you
答案 0 :(得分:1)
如果在尝试将ProxySchemeUnknown
或socks
用于python请求时遇到socks5h
异常,则可能是因为版本太旧,或者您还需要安装requests[socks]
包。
要为请求安装必要的袜子代理支持,请运行:
pip3 install -U requests[socks]
# or for Python 2
pip install -U requests[socks]
此外,因为您将使用请求的SOCKS支持,所以不应使用默认的SOCKS套接字“猴子补丁”。这不是必需的,并且可能会干扰不应使用Tor的其他套接字交互。要解决此问题,只需删除以下两行:
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9150)
socket.socket = socks.socksocket
使用请求的proxies
选项时不必要。
答案 1 :(得分:1)
您可以尝试使用httping
作为一种非常简单的方法来检查网站是否正常响应了正常的ping请求。
例如,在像这样的Linux上安装:sudo apt install httping
或在OSX brew install httping
上安装。
然后,要检查特定的URL,请运行:httping -g rrcc5uuudhh4oz3c.onion -x 127.0.0.1:9050
,该命令将检查Intel Exchange(一个流行的深色网站)是否可用并且处于活动状态。 这假设您正在运行Tor,并且SOCKS代理是localhost上的默认9050。
对于我来说,结果是:
PING rrcc5uuudhh4oz3c.onion:80 (/):
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=0 time= 0.56 ms
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=1 time= 0.89 ms
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=2 time= 0.71 ms
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=3 time= 0.85 ms
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=4 time= 0.73 ms
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=5 time= 1.06 ms
connected to rrcc5uuudhh4oz3c.onion:80 (89 bytes), seq=6 time= 1.04 ms
希望有帮助。您可以在python中使用call命令或subprocess命令,并以编程方式调用相同的调用。