如何将 SOCKS 5 代理与 cURL 结合使用?

2022-08-30 18:43:19

普通代理(例如:)与cURL配合得很好,但是当我使用带有用户名/pass的SOCKS 5代理时,它只是在页面上给我“[1”。72.41.132.22:3128

有没有办法将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);

答案 1

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

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

文档中

CURLOPT_PROXYTYPE

CURLPROXY_HTTP(默认)或CURLPROXY_SOCKS5。


答案 2

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

curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');

更多信息请见 libcurl 文档


推荐