Proxy normaux (ex: 72.41.132.22:3128
) fonctionne bien avec cURL, cependant quand j'utilise des proxys SOCKS 5 avec un nom d'utilisateur/pass, cela me donne juste "[1" sur la page.
Existe-t-il un moyen d'utiliser les proxys SOCKY 5 avec cURL?
$proxy = "cagsan:[email protected]: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);
Vous devez indiquer à cURL que le proxy est un proxy SOCKS5, sinon cURL suppose qu'il s'agit d'un proxy HTTP:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
De la docs :
CURLOPT_PROXYTYPE
Soit CURLPROXY_HTTP (par défaut), soit CURLPROXY_SOCKS5.
depuis cURL 7.21.7, vous pouvez utiliser CURLOPT_PROXY
et spécifiez le protocole SOCKS:
curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');
Plus d'informations dans la documentation libcurl .
Pour ceux qui cherchent à se connecter via un nom d'hôte (localhost?), Et cela ne fonctionne pas avec CURLPROXY_SOCKS5
, tu peux essayer CURLPROXY_SOCKS5_HOSTNAME
.
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
Dans certaines versions antérieures PHP, vous devrez faire:
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);