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

Posted

技术标签:

【中文标题】使用python连接到tor上的.onion网站?【英文标题】:Connect to .onion websites on tor using python? 【发布时间】:2017-04-28 14:42:20 【问题描述】:

这是我到现在为止的代码

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 时它显示错误

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

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

【问题讨论】:

你不能只通过 HTTP 连接 - 你看过优秀的 Python Stem package for Tor? @samiles 现在让我看看 :) 你可以找到 urllib2 here的猴子补丁 【参考方案1】:

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

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 地址。

【讨论】:

【参考方案2】:

对此有一个更简单的解决方案,但因此您将需要 Kali Linux。如果你有这个操作系统,你可以安装 tor 服务和 kalitorify,用 sudo service tor start 启动 tor 服务,用 sudo kalitorify -t 启动 kalitorify。现在您的流量将通过 tor 发送,您可以像访问普通网站一样访问 .onion 网站。

【讨论】:

以上是关于使用python连接到tor上的.onion网站?的主要内容,如果未能解决你的问题,请参考以下文章

使用Python 3.6.2连接到IBM Bluemix上的MongoDB

如何使用App Engine上的Python标准环境连接到Cloud SQL上的Postgres

如何在没有浏览器的情况下在 python 中使用 Tor?

使公共网站重新连接到本地 html 或 xampp

连接到 *** 时如何使用 ngrok 进行隧道传输?

无法使用 Python 2.7 从 django 网站连接到 MySQL,但可以使用 Python 2.5