普通代理(例如: 72.41.132.22:3128
)与卷曲工作得很好,但是当我用SOCKS代理5使用用户名/密码,这给了我“[1”的页面上。
有没有办法使用SOCKY 5个代理与卷曲的方法吗?
$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);
你需要告诉卷曲代理是一个SOCKS5代理,否则卷曲假定它是一个HTTP代理服务器:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
从文档 :
CURLOPT_PROXYTYPE
无论是CURLPROXY_HTTP(默认)或CURLPROXY_SOCKS5。
因为卷曲7.21.7,您可以使用CURLOPT_PROXY
并指定SOCKS协议:
curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');
更多信息将在libcurl的文档 。
对于那些希望通过主机连接(本地主机?),并且它不与工作CURLPROXY_SOCKS5
,你可以尝试CURLPROXY_SOCKS5_HOSTNAME
。
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
在一些早期的PHP版本,你将不得不这样做:
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);