为啥 Tor 无法访问本地主机页面
Posted
技术标签:
【中文标题】为啥 Tor 无法访问本地主机页面【英文标题】:Why Tor cant access localhost pages为什么 Tor 无法访问本地主机页面 【发布时间】:2012-10-25 00:54:26 【问题描述】:我正在运行 Tor 和一个 python 脚本来获取网页:
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
print urllib2.urlopen(URL).read()
但是,如果 URL 是
http://localhost/some_page.html
我收到以下错误:
raise Socks5Error(ord(resp[1]),_generalerrors[ord(resp[1])])
TypeError: __init__() takes exactly 2 arguments (3 given)
谁能给我解释一下到底发生了什么?
谢谢。
【问题讨论】:
我的猜测是它通过环回接口,而不是通过正常方式。尝试使用真实接口的 IP 地址,而不是 127.0.0.1? 也不能这样工作.. 因此,除了 localhost 之外,您尝试发出的任何 Web 请求都会返回该错误,这意味着您无法通过 Tor 路由您的流量? 【参考方案1】:这是协议的设计方式。当您发送请求时,它会通过 Socks5 信封传输到 Internet 上的另一台机器。所以实际请求是从外部服务器发出的,因此无法访问 127.0.0.1。
【讨论】:
【参考方案2】:您可以在 localhost 中使用 Tor 代理和 php。使用卷曲。将您的本地 IP 放在 LAN 代理配置“无代理:”上。示例 192.168.1.10。然后将您的 php 称为“http://192.168.1.10/your_script.php”
$proxy = '127.0.0.1:9150';
$ur = "http://anydomain.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, $ur);
$curl_scraped_page = curl_exec($ch);
$error = curl_error($ch);
【讨论】:
以上是关于为啥 Tor 无法访问本地主机页面的主要内容,如果未能解决你的问题,请参考以下文章