So melden Sie sich mit Curl, SSL und Cookies an
Beim Versuch, sich mit Curl, SSL und Cookies bei barnesandnoble.com anzumelden Einige Benutzer stoßen aufgrund unterschiedlicher Website-Protokolle und möglicher Probleme bei der Verarbeitung von Cookies auf Schwierigkeiten. Hier ist eine Aufschlüsselung des Problems und eine Lösung:
Problem:
Lösung:
Um sich mit Curl erfolgreich bei barnesandnoble.com anzumelden, berücksichtigen Sie Folgendes Folgendes:
Hier ist ein Beispielskript, das diese Lösungen enthält:
// 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; }
Denken Sie daran, die Variablen $EMAIL und $PASSWORD durch Ihre tatsächlichen zu ändern Anmeldedaten. Darüber hinaus sollte der $cookie_file_path auf einen beschreibbaren Speicherort im Dateisystem verweisen.
Sobald Sie sich angemeldet haben, können Sie unter Angabe der Optionen COOKIEFILE und COOKIEJAR ein neues Curl-Objekt erstellen und bleiben ohne Durchführung authentifiziert die ersten Schritte.
Das obige ist der detaillierte Inhalt vonWarum ist es schwierig, sich mit Curl, SSL und Cookies auf der mobilen Website von Barnes & Noble anzumelden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!