gpt4 book ai didi

curl - Tor 不是 HTTP 代理

转载 作者:行者123 更新时间:2023-12-04 17:44:49 25 4
gpt4 key购买 nike

我使用云服务器 Ubuntu 12.04 作为 Tor 代理服务器进行报废。我现在面临的问题是显示错误

HTTP/1.0 501 Tor 不是 HTTP 代理 内容类型:text/html;字符集=iso-8859-1

$url = 'http://whatismyipaddress.com';
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init('http://whatismyipaddress.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'https://127.0.01:9050/');
curl_exec($ch);
curl_close($ch);

$result=curl_exec($ch);

需要帮助我所缺少的。
我已经尝试使用
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

一个请求正在加载并且 session 过期没有结果。

最佳答案

这是真的,Tor 不是 HTTP 代理,而是 SOCKS v5 代理。

基于您的 cURL 选项 CURLOPT_HTTPPROXYTUNNEL ,您告诉 cURL 尝试错误地使用 Tor 的代理(作为 HTTP 代理)。

正确的方法是去掉代理隧道选项,只设置代理和 SOCKS 代理类型:

$proxy = '127.0.0.1:9050';  // no https:// or http://; just host:port
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

如果您没有 PHP 5.5.23 或更高版本(引入 CURLPROXY_SOCKS5_HOSTNAME ),您可以使用 curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
如果 PHP 编译的 cURL 版本低于 7.18.0,它不支持带有主机名查找的 SOCSK5,所以你必须回退到 CURLPROXY_SOCKS5并且知道您的 DNS 查找不会通过 Tor 并且可能会被暴露。

旁注:我写了一个名为 TorUtils 的 PHP 库它提供了许多用于在 PHP 中与 Tor 交互的类。提供的一类是 TorCurlWrapper它抽象了上面的逻辑并强制 cURL 正确使用 Tor 的 SOCKS 代理。有一个用法示例 here .您可以使用 composer require dapphp/torutils 安装库或者通过下载包并将其添加到您的代码中。

关于curl - Tor 不是 HTTP 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38950330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com