我正在尝试将一个简单的网络抓取工具写入“Darknet”网络。 我的第一步是使用python脚本到暗网。 我尝试了很多答案,但没有答案。
我做了什么:我以root身份安装了Tor docker
在正确配置后,我成功通过常规浏览器访问此站点
我成功地使用我的脚本获取check.torproject.org
我在VM上运行ubuntu 16.04
我现在的代码是:
import socks
import ssl
import requests.cert
s = socks.socksocket()
s.setproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", port=9050)
s.connect(('https://nzxj65x32vh2fkhk.onion/all', 443))
ss = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs="requests.cert.where()")
print "Peer cert: ", ss.getpeercert()
ss.write("""GET / HTTP/1.0\r\nHost:https://nzxj65x32vh2fkhk.onion/all\r\n\r\n""")
content = []
while True:
data = ss.read()
if not data: break
content.append(data)
ss.close()
content = "".join(content)
assert "This browser is configured to use Tor" in content
我认为我现在的问题是因为http s 而不是http(我应该更改端口吗?)
任何更好的解决方案? 任何探索如何做到这一点? 感谢
我检查了所有这些问题而且没有工作 -
Python urllib over TOR?,How to route urllib requests through the TOR network?,Using SocksiPy with SSL。
(我在评论中看到,我不是唯一一个没有为他效劳的人。)
我所需要的只是让这个“讨论”贴上..
答案 0 :(得分:0)
facebook几乎是暗网上唯一支持HTTPS的服务器。除此之外,您应该使用 http 和端口 80 。此外,requests
模块 - 任何python webscraping堆栈的重要组成部分 - 支持socks代理。您可以通过请求执行类似的操作:
url = "http://nzxj65x32vh2fkhk.onion/all"
proxy = {"http": "socks5://localhost:9050", "https": "socks5://localhost:9050"}
r = requests.get(url, proxies=proxy)