Comment se connecter avec Curl, SSL et cookies
Lorsque vous essayez de vous connecter à barnesandnoble.com en utilisant Curl, SSL et cookies , certains utilisateurs rencontrent des difficultés en raison de différences dans les protocoles des sites Web et de problèmes potentiels de gestion des cookies. Voici une description du problème et une solution :
Problème :
Solution :
Pour réussir à vous connecter à barnesandnoble.com à l'aide de Curl, considérez les éléments suivants :
Voici un exemple de script qui intègre ces solutions :
// Options $EMAIL = '[email protected]'; $PASSWORD = 'yourpassword'; $cookie_file_path = "/tmp/cookies.txt"; $LOGINURL = "https://cart2.barnesandnoble.com/mobileacct/op.asp?stage=signIn"; $agent = "Nokia-Communicator-WWW-Browser/2.0 (Geos 3.0 Nokia-9000i)"; // Begin Script $ch = curl_init(); // Extra Headers $headers[] = "Accept: */*"; $headers[] = "Connection: Keep-Alive"; // Basic Curl Options curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); // Initial URL curl_setopt($ch, CURLOPT_URL, $LOGINURL); // Get Cookies and Form Inputs $content = curl_exec($ch); // Extract Hidden Inputs $fields = getFormFields($content); $fields['emailAddress'] = $EMAIL; $fields['acctPassword'] = $PASSWORD; // Get x Value $x = ''; if (preg_match('/op\.asp\?x=(\d+)/i', $content, $match)) { $x = $match[1]; } // Updated Login URL $LOGINURL = "https://cart2.barnesandnoble.com/mobileacct/op.asp?x=$x"; // Post Options curl_setopt($ch, CURLOPT_URL, $LOGINURL); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields)); // Perform Login $result = curl_exec($ch); print $result; // Helper Function to Extract Form Inputs function getFormFields($data) { $inputs = array(); $elements = preg_match_all('/(<input[^>]+>)/is', $data, $matches); if ($elements > 0) { for ($i = 0; $i < $elements; $i++) { $el = preg_replace('/\s{2,}/', ' ', $matches[1][$i]); if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name)) { $name = $name[1]; $value = ''; if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value)) { $value = $value[1]; } $inputs[$name] = $value; } } } return $inputs; }
N'oubliez pas de modifier les variables $EMAIL et $PASSWORD avec votre valeur réelle. identifiants de connexion. De plus, $cookie_file_path doit pointer vers un emplacement accessible en écriture sur le système de fichiers.
Une fois connecté, vous pouvez créer un nouvel objet Curl, en spécifiant les options COOKIEFILE et COOKIEJAR, et vous resterez authentifié sans effectuer les premières étapes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!