PHP, cURL : Passer à travers le SSL et les cookies

16/01/2010

Lorsque l’on veut s’affranchir d’une application imposée par une école/institution/entreprise, il faut souvent passer à travers du SSL. Pire encore, il y a des cookies et des variables à récupérer un peu partout (à la manière de pac-man ?). Heuresement, cURL est là ! Combiné à PHP, on peut facilement arriver à ses fins.

~

$url = "https://www.mapage.fr";
$usecookie = "cookies.txt"; // un fichier contenant les cookies

$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_COOKIEJAR, $usecookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $usecookie);    

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$retour = curl_exec($ch);
// $retour contient la page
// Les potentielles erreurs sont visibles via cette fonction :
// curl_error($ch);

curl_close($ch);

Maintenant que nous sommes sur cette page, sans doute voulons nous passer des arguments. Et puis, comme on ne pense jamais à nous, ils sont passés en POST.

// A rajouter avec les autres options
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "arg1=var1&arg2=var2");