在初始 SOCKS5 响应 phpcurl 中收到无效版本

问题描述 投票:0回答:1

我正在尝试使用带有curl和PHP的socks5代理从我的API接收数据。

但无论我尝试什么,我都会收到此错误

Received invalid version in initial SOCKS5 response

我已经尽我所能尝试谷歌,但没有找到解决办法。我尝试了他们列出的所有解决方案,但都返回此错误。

这是我当前的代码

<?php
function fetchContent($url) {
    $proxy = 'socks5h://domain.com:22';
    $proxyAuth = 'username:password';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyAuth);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

    $response = curl_exec($ch);

    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    } else {
        echo $response;
    }

    curl_close($ch);
}

fetchContent('https://ipinfo.io/ip');
?>

作为额外信息,我在笔记本电脑上通过 SSH 使用相同的ocks5代理,并通过 putty 隧道进行连接,效果很好。

php curl socks5
1个回答
0
投票

默认情况下,curl 使用

CURLPROXY_HTTP
作为
CURLOPT_PROXYTYPE
选项。

要使用

socks5h
,您需要将
CURLOPT_PROXYTYPE
设置为
CURLPROXY_SOCKS5_HOSTNAME

<?php
# ... your code ...
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
# ... your code ...

附注考虑从代理地址定义中删除协议

<?php  
$proxy = 'domain.com:22';
© www.soinside.com 2019 - 2024. All rights reserved.