带有代理的PHP cURL(非SOCKS5)

bis0qfac  于 2022-11-13  发布在  PHP
关注(0)|答案(2)|浏览(211)

我有工作代码,通过他们的SOCKS 5协议使用我的VPN(NordVPN)凭证.
最近,他们已经放弃了对socks 5的支持,所以我不得不使用他们的其他协议,但是我无法让任何协议工作。
在这里可以看到他们所有可用的协议

https://nordvpn.com/servers/tools/

- IKEv2/IPSec
- OpenVPN
- Wireguard
- HTTP Proxy (SSL)

下面是我的代码,尝试使用他们的“HTTP代理(SSL)”协议

$cookie_file = tempnam("/tmp", "CURLCOOKIE");;

$ch = curl_init();

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // in seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_PROXYPORT, "443");
curl_setopt($ch, CURLOPT_PROXY, "au643.nordvpn.com");

curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyUser . ":" . $proxyPass); 
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);

curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

curl_setopt($ch, CURLOPT_URL, $Url);
$result = curl_exec($ch);
curl_close($ch);

我得到的错误是

curl_exec(): supplied resource is not a valid cURL handle resource in ...

我不在乎是什么协议,只要它能起作用就行。

  • 谢谢-谢谢
z9smfwbn

z9smfwbn1#

在面对同样的问题后,我已经想出了解决办法

$PROXY_HOST = "xxx.xxxxxx.com";
$PROXY_PORT = "89";
$PROXY_USER = "yourproxyusername";
$PROXY_PASS = "yourproxypassword";

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_PROXY_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$PROXY_USER:$PROXY_PASS");
curl_setopt($ch, CURLOPT_PROXY, "https://$PROXY_HOST:$PROXY_PORT");

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response= curl_exec($ch);
$error = curl_error($ch); 
echo $error;
echo $response;
curl_close($ch);

需要注意的一点是,对于NordVPN,您必须使用端口89进行HTTP代理(SSL),用户名和密码不是您的帐户用户名和密码,而是您的代理特定的凭据,您可以在您的帐户页面上找到。
也不要引用我的话,但我认为你需要使用PHP7.3+才能做到这一点。

esyap4oy

esyap4oy2#

我们可以使用它与protonvpn或vpnbook?

相关问题