【问题标题】:PHP cURL over TOR what am I doing wrong?PHP cURL over TOR 我做错了什么?
【发布时间】:2016-07-09 18:42:49
【问题描述】:

所以我正在尝试 cURL 到一个洋葱网站,例如: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:连接被拒绝

【问题讨论】:

    标签: php curl tor


    【解决方案1】:

    Tor 浏览器默认为 SOCKS 使用端口 9150,Linux 上的 Tor 守护程序或 Windows 上的 Expert Bundle 的默认端口是 9050。

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

    【讨论】:

      【解决方案2】:

      php docscurl_exec

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

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

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

      【讨论】:

      • 它返回此错误:“错误:无法连接到 127.0.0.1 端口 9050:连接被拒绝”这很奇怪,因为 Tor 浏览器是打开的
      • 我认为这是一台 Windows 机器?
      • 在这一点上,这并不是一个与 curl 相关的问题,而是一个与 TOR 相关的问题。我会看看这样的想法:superuser.com/questions/303251/… 在 Windows 上运行 netstat 并确保端口正在侦听。确保 TOR 不需要身份验证(不太确定协议)。
      猜你喜欢
      • 1970-01-01
      • 2011-11-03
      • 2010-10-23
      • 1970-01-01
      • 2015-03-30
      • 2019-07-31
      • 2011-06-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多