Comment se connecter à un site internet avec un script PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2020-12-19 12:19:30
Thèmes : webmaster - script - curl - php
Question

Comment faire pour se connecter à un site internet qui dispose d'un espace membre via un script PHP. Je voudrais que mon script puisse remplir automatiquement le formulaire de connexion, et accéder au contenu de la page membre, merci.

Réponse

Pour qu'un script PHP remplisse automatiquement un formulaire de connexion et accède à la page protégée par ce formulaire, vous pouvez utiliser la librairie Curl.

Voici les différentes étapes que vous devez accomplir avec PHP et Curl :

  • Spécifier l'URL de la page de connexion, et celle qui est protégée.
  • Définir un User Agent.
  • Lister les arguments de connexion.
  • Gérer les notions de SSL, temps maximum de connexion et redirections.
  • Soumettre le formulaire de connexion.
  • Récupérer les cookies et les sessions.
  • Accéder au contenu de la page protégée.

Avant toute chose vous devez inspecter le code source HTML du formulaire de connexion pour identifier tous les arguments qui sont passés en GET ou POST par le formulaire.

Généralement il y a trois arguments : celui de l'identifiant de connexion, celui du mot de passe, et celui qui correspond au bouton d'envoi.

Ensuite vous devez utiliser Curl et ses différentes options pour accomplir les différentes étapes listées ci-avant.

Voici exemple de script pour se connecter à un site internet avec PHP et Curl, puis accéder au contenu de la page protégée :

<?php
$script = curl_init();
curl_setopt($script, CURLOPT_URL, 'https://www.exemple.fr/connexion.php');
curl_setopt($script, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64)');
curl_setopt($script, CURLOPT_POST, true);
curl_setopt($script, CURLOPT_POSTFIELDS, "login=login&user_name=identifiant&user_pass=mot_de_passe");
curl_setopt($script, CURLOPT_RETURNTRANSFER, true);
curl_setopt($script, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($script, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($script, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($script, CURLOPT_TIMEOUT, 120);
curl_setopt($script, CURLOPT_MAXREDIRS, 10);
curl_setopt($script, CURLOPT_COOKIESESSION, true);
curl_setopt($script, CURLOPT_COOKIEJAR, ''.dirname(__FILE__).'/cookie.txt');
curl_setopt($script, CURLOPT_COOKIEFILE, ''.dirname(__FILE__).'/cookie.txt');
$connexion = curl_exec($script);
if (curl_error($script)) {
    echo curl_error($script);
}
else
{
curl_setopt($script, CURLOPT_URL, 'https://www.exemple.fr/membres.php');
curl_setopt($script, CURLOPT_POST, false);
curl_setopt($script, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($script, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($script, CURLOPT_POSTFIELDS, "");
$contenu = curl_exec($script);
if (curl_error($script)) {
echo curl_error($script);
}
else
{
echo $contenu;
}
}
?>