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 :

  1. CURLOPT_HTTPPROXYTUNNEL qui permet d'indiquer à CURL que l'on veut exécuter la requête via un proxy
  2. CURLOPT_PROXY qui permet d'indiquer l'adresse du proxy sous la forme domaine.tld:port
  3. 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 = 'http://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;
?>

Une question ? Venez la poser sur notre forum développement web !

A propos de l'auteur

Antoine Beaumont

Antoine Beaumont est Consultant Web et Développeur. Fort d'une expérience construite au sein de grandes agences Web-marketing, pour tous types de comptes, il accompagne désormais les professionnels dans leurs projets Web, de façon souple et objective.

Newsletter Marketing