web-dev-qa-db-fra.com

Comment utiliser un proxy SOCKS 5 avec cURL?

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);
17
user198989

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.

36
Kelvin

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 .

18
GiDo

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);
1
iautomation