Se connecter à un proxy avec CURL PHP
Comment se connecter à un proxy avec un script PHP CURL ?
Le passage par un serveur proxy pour effectuer une requête CURL s'effectue via 3 options :
- CURLOPT_HTTPPROXYTUNNEL qui permet d'indiquer à CURL que l'on veut exécuter la requête via un proxy
- CURLOPT_PROXY qui permet d'indiquer l'adresse du proxy sous la forme domaine.tld:port
- CURLOPT_PROXYUSERPWD qui sert, si besoin, à indiquer les nom d'utilisateur et mot de passe de connexion au proxy, sous la forme nom_utilisateur:mot_de_passe
<?php $url = 'https://www.oseox.fr'; $timeout = 10; $proxy_host = 'my-proxy.com:80'; // host:port $proxy_ident = ''; // username:password $ch = curl_init($url); curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); if (preg_match('`^https://`i', $url)) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Activation de l'utilisation d'un serveur proxy curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); // Définition de l'adresse du proxy curl_setopt($ch, CURLOPT_PROXY, $proxy_host); // Définition des identifiants si le proxy requiert une identification if ($proxy_ident) curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_ident); $page_content = curl_exec($ch); curl_close($ch); echo $page_content; ?>