【问题标题】:Facing issue while using Tor with Curl将 Tor 与 Curl 一起使用时面临的问题
【发布时间】:2014-12-16 15:24:27
【问题描述】:

将 Tor 与 Curl 结合使用时遇到的问题:

我有这个脚本:

$ch = curl_init();<br>
curl_setopt($ch, CURLOPT_URL, "http://whatismyip.org");<br>
curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:9050");<br>
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);<br>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>
curl_setopt($ch, CURLOPT_VERBOSE, 0);<br>
$response = curl_exec($ch);<br>
$errno = curl_error($ch);<br>
print_r($errno);<br>

当我使用它时会遇到这个错误:

无法完成 SOCKS5 与 0.0.0.0:0 的连接。 (6)

当我使用这个脚本时:

$proxy = "127.0.0.1";<br>
$port = "9050";<br>
$url = "http://whatismyip.org";<br>
$ch = curl_init();<br>
curl_setopt ($ch, CURLOPT_URL, $url);<br>
curl_setopt ($ch, CURLOPT_HEADER, 0);<br>
curl_setopt ($ch, CURLOPT_PROXYTYPE, 7 );<br>
curl_setopt ($ch, CURLOPT_PROXY, $proxy.':'.$port );<br>
ob_start();<br>
curl_exec ($ch);<br>
curl_close ($ch);<br>
$result = ob_get_contents();<br>
ob_end_clean();<br>
var_dump($result);<br>

面对这个问题:

Tor 不是 HTTP 代理

您似乎已将网络浏览器配置为使用 Tor 作为 HTTP 代理。这是不正确的:Tor 是 SOCKS 代理,而不是 HTTP 代理。请相应地配置您的客户端。 请参阅https://www.torproject.org/documentation.html 了解更多信息。

如果有人知道这个问题的解决方案,请帮助我。

提前致谢。

【问题讨论】:

    标签: php curl proxy socks


    【解决方案1】:

    这是我正在使用的代码:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_PROXY, "http://localhost:9150/");
    curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    $result = curl_exec($ch);
    

    我看到的唯一可见差异是 localhost 与环回、CURLOPT_PROXY 上的 http 前缀以及各种技术差异(详细等)。如果您要卷曲任何洋葱站点,我建议您设置超时,因为根据我的经验,您会遇到导致连接挂起的加载块。

    另外,请确保您的代理实际上在正确的端口上!根据您使用 Tor 的方式,代理可能在端口 9050、9051、9150 或 9151 上。使用 netstat 或类似的实用程序(我与 XAMPP 捆绑)或 Process Hacker 2(网络选项卡)查看内容在什么港口。 Tor.exe 应该位于上述端口之一。将其用于您的代理。

    我知道我过去在这方面遇到过一些麻烦。祝你好运!

    编辑:完整的测试代码:

    <?php
        $url = (isset($_REQUEST['url']) ? $_REQUEST['url'] : "http://msydqstlz2kzerdg.onion/search/");
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_PROXY, "http://localhost:9150/");
        curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
        curl_setopt($ch, CURLOPT_TIMEOUT, 120);
        $output = curl_exec($ch);
        $curl_error = curl_error($ch);
        curl_close($ch);
    
        print_r($output);
        print_r($curl_error);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多