问题:使用python连接到tor上的.onion网站?

这是我到目前为止的代码

import socks
import socket
import requests
import json

socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr="127.0.0.1", port=9050)
socket.socket = socks.socksocket

data = json.loads(requests.get("http://freegeoip.net/json/").text)

它工作正常。问题是当我使用.onion网址时它显示错误

无法建立新连接:[Errno -2] 名称或服务未知

经过一番研究后,我发现虽然 http 请求是通过tor发出的,但分辨率仍然发生在 clearnet 上。什么是正确的方法,所以我也可以通过 tor 网络解析域以连接到.onionurl?

解答

如果可能,尽量避免猴子修补。如果您使用的是现代版本的请求,那么您应该已经拥有此功能。

import requests
import json

proxies = {
    'http': 'socks5h://127.0.0.1:9050',
    'https': 'socks5h://127.0.0.1:9050'
}

data = requests.get("http://altaddresswcxlld.onion",proxies=proxies).text

print(data)

使用socks5h://方案指定代理很重要,以便通过 SOCKS 处理 DNS 解析,以便 Tor 可以正确解析.onion地址。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐