Heim > Backend-Entwicklung > PHP-Tutorial > Warum ist es schwierig, sich mit Curl, SSL und Cookies auf der mobilen Website von Barnes & Noble anzumelden?

Warum ist es schwierig, sich mit Curl, SSL und Cookies auf der mobilen Website von Barnes & Noble anzumelden?

Susan Sarandon
Freigeben: 2024-11-09 13:43:02
Original
919 Leute haben es durchsucht

Why is it difficult to log in to Barnes & Noble's mobile site using Curl, SSL, and cookies?

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:

  • Benutzer können sich mit Curl nicht auf der mobilen Website von barnesandnoble.com anmelden.
  • Die zurückgegebene Seite zeigt keine Fehler an und das E-Mail-Feld enthält standardmäßig die E-Mail-Eingabe des Anmeldeformulars Feld.
  • Derselbe Code meldet sich erfolgreich bei eBay an, was darauf hinweist, dass das Problem in den einzigartigen Merkmalen der Barnesandnobles-Website liegt.

Lösung:

Um sich mit Curl erfolgreich bei barnesandnoble.com anzumelden, berücksichtigen Sie Folgendes Folgendes:

  • URL-Kodierung: Stellen Sie sicher, dass URL-Parameter (wie E-Mail und Passwort) in der Beitragszeichenfolge ordnungsgemäß URL-kodiert sind.
  • x-Wert: Fügen Sie den x-Wert als Teil der Anmelde-URL ein. Dieser Wert wird normalerweise aus der ersten Antwort extrahiert.

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage