当 Tor 客户端想要连接到一个网站(例如:google.com)时,它是否先解析其 IP,然后通过中继发送 IP?还是传递由最后一个出口节点解析的域名?
答案1
这取决于客户端。Tor有远程解析名称的能力,并且当被要求连接到域名时,你的本地 Tor 节点将始终使用基于 Tor 的解析,但实际上这一切都取决于客户端应用程序提供名称,而不是在本地进行自己的名称解析。
例如,Firefox(SOCKS 客户端)有一个名为“使用 SOCKS v5 时代理 DNS”的选项 - 只要选择 SOCKS 版本 5,就可以启用远程(基于 Tor)名称解析。
同时,较旧的 SOCKS v4 协议根本没有此功能;它仅支持发送 IP 地址。(不过,版本 4a 添加了此功能。如果您看到专门提供 SOCKS v4a 的程序,这通常意味着它们会发送主机名。)
再例如,curl
可以在“socks4”(发送 IP 地址)、“socks4a”(发送主机名)、“socks5”(发送 IP 地址)和“socks5h”(发送主机名)代理类型之间进行选择。
使用HTTP代理模式时,通常发送完整主机名。如果您使用 HTTP 到 SOCKS 转换器,例如 Polipo 或 Privoxy(我记得上个世纪曾与 Tor 一起使用过),则除了客户端的能力外,还取决于转换器的能力。