python如何使用Tor中继处理DNS解析?

python如何使用Tor中继处理DNS解析?,python,dns,tor,Python,Dns,Tor,假设此工作代码: import win_inet_pton import socks import socket s = socks.socksocket() s.set_proxy(socks.SOCKS5, "localhost", 9050) s.connect(("xmh57jrzrnw6insl.onion",80)) s.send("GET / HTTP/1.1\r\n\r\n") print 'sended' data=s.recv(1024) print data Tor服务确

假设此工作代码:

import win_inet_pton
import socks
import socket
s = socks.socksocket()
s.set_proxy(socks.SOCKS5, "localhost", 9050)
s.connect(("xmh57jrzrnw6insl.onion",80))
s.send("GET / HTTP/1.1\r\n\r\n")
print 'sended'
data=s.recv(1024)
print data
Tor服务确实在9050端口运行

在正常情况下,python将通过连接到Tor中继的SOCKS5代理执行DNS解析。但是,Tor不处理UDP数据包它直接从TCP数据包中的主机名处理解析,因此DNS解析将失败


这个代码怎么可能工作?例如,java中的等效代码将失败,因为无法进行DNS解析。

此链接对此进行了解释:
您只需使用socks5h而不是socks5即可。本链接对此进行了说明:
您只需使用socks5h而不是socks5

跨站点复制:@tripleee抱歉,但我认为这不是跨站点复制。我想指出的是,代码只能在python中工作。如果您尝试使用其他编程语言,我认为DNS解析是通过代理进行的,将失败并关闭套接字。这是代理/套接字实现通过代理执行DNS解析的正常过程。所以我想知道为什么它在python中工作。另外,这里的过程是不同的,因为我正在尝试连接到洋葱域。如果您尝试连接到隐藏服务,则不存在执行DNS解析的退出节点的概念。跨站点复制:@tripleee抱歉,但我不认为这是跨站点复制。我想指出的是,代码只能在python中工作。如果您尝试使用其他编程语言,我认为DNS解析是通过代理进行的,将失败并关闭套接字。这是代理/套接字实现通过代理执行DNS解析的正常过程。所以我想知道为什么它在python中工作。另外,这里的过程是不同的,因为我尝试连接到洋葱域。如果您尝试连接到一个隐藏的服务,则没有退出节点执行DNS解析的概念。