【问题标题】:How python handle DNS resolution with Tor Relay?python 如何使用 Tor Relay 处理 DNS 解析?
【发布时间】:2016-09-03 17:19:12
【问题描述】:

假设这个工作代码:

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 解析)。

【问题讨论】:

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

标签: python dns tor


【解决方案1】:

在此链接中解释了它:Python requests fails when tryign to connect to .onion site 您只需使用socks5h 而不是socks5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多