使用 python 连接到 tor 上的 .onion 网站?
Connect to .onion websites on tor using python?
这是我到目前为止的代码
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
url 它显示错误
Failed to establish a new connection: [Errno -2] Name or service not known
经过一番研究后,我发现虽然 http 请求是通过 tor
发出的,但解析仍然发生在 clearnet 上。什么是正确的方法,这样我也可以通过 Tor 网络解析域以连接到 .onion
urls?
尽可能避免猴子补丁。如果您使用的是现代版本的请求,那么您应该已经拥有此功能。
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://
方案指定代理很重要,这样 DNS 解析就可以通过 SOCKS 处理,这样 Tor 就可以正确解析 .onion
地址。
对此有一个更简单的解决方案,但因此您需要 Kali Linux。如果你有这个OS,你可以安装tor服务和kalitorify,用sudo service tor start启动tor服务,用sudo kalitorify -t启动kalitorify 。现在您的流量将通过 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
url 它显示错误
Failed to establish a new connection: [Errno -2] Name or service not known
经过一番研究后,我发现虽然 http 请求是通过 tor
发出的,但解析仍然发生在 clearnet 上。什么是正确的方法,这样我也可以通过 Tor 网络解析域以连接到 .onion
urls?
尽可能避免猴子补丁。如果您使用的是现代版本的请求,那么您应该已经拥有此功能。
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://
方案指定代理很重要,这样 DNS 解析就可以通过 SOCKS 处理,这样 Tor 就可以正确解析 .onion
地址。
对此有一个更简单的解决方案,但因此您需要 Kali Linux。如果你有这个OS,你可以安装tor服务和kalitorify,用sudo service tor start启动tor服务,用sudo kalitorify -t启动kalitorify 。现在您的流量将通过 tor 发送,您可以访问 .onion 网站,就像访问普通网站一样。