11

我有 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)

有人可以向我解释到底发生了什么吗?

谢谢你。

4

2 回答 2

16

这是协议的设计方式。当您发送请求时,它会通过 Socks5 信封传输到 Internet 上的另一台机器。因此实际请求是从外部服务器发出的,因此无法访问 127.0.0.1。

于 2012-10-25T03:45:47.610 回答
1

您可以在 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);
于 2016-06-11T05:30:30.703 回答