如何使用带有cURL的SOCKS 5代理?

use*_*989 18 php proxy curl socks

普通代理(例如72.41.132.22:3128)与cURL配合良好,但是当我使用带有用户名/密码的SOCKS 5代理时,它只是在页面上给我"[1".

有没有办法使用SOCKY 5代理与cURL?

$proxy = "cagsan:jw22wdw@108.61.25.223:34792";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

Kel*_*vin 36

您需要告诉cURL代理是SOCKS5代理,否则cURL假定它是HTTP代理:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
Run Code Online (Sandbox Code Playgroud)

来自文档:

CURLOPT_PROXYTYPE

CURLPROXY_HTTP(默认值)或CURLPROXY_SOCKS5.


GiD*_*iDo 19

从cURL 7.21.7开始,您可以使用CURLOPT_PROXY并指定SOCKS协议:

curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');
Run Code Online (Sandbox Code Playgroud)

libcurl文档中的更多信息.