PHP cURL over TOR我做错了什么?

时间:2016-07-09 18:42:49

标签: php curl tor

所以我试图去一个洋葱网站,例如:facebookcorewwwi.onion 我会有以下代码:

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curl, CURLOPT_URL, 'http://facebookcorewwwi.onion/');
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_HTTPGET, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_PROXY, '127.0.0.1:9050');
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
$html = curl_exec($curl);
var_dump($html);

这给出了以下输出:
布尔(假)

但这不是我想要的结果,我想要实际的页面内容!
inb4:是的我打开了tor浏览器

curl_error发出以下错误:
错误:无法连接到127.0.0.1端口9050:连接被拒绝

2 个答案:

答案 0 :(得分:1)

默认情况下,Tor浏览器使用端口9150作为SOCKS,其中Linux上的Tor守护程序或Windows上的专用程序包的默认值为9050.

如果您更改为端口9150,您应该能够成功通过Tor进行中继。

答案 1 :(得分:0)

来自curl_exec的{​​{3}}:

  

成功时返回TRUE,失败时返回FALSE。但是,如果设置了CURLOPT_RETURNTRANSFER选项,它将在成功时返回结果,在失败时返回FALSE。

如果curl_exec返回布尔值false,则发生错误。尝试获取错误:

$html = curl_exec($curl);
if ( $html === false ) {
   echo 'Error: ' . curl_error($curl);
}