Heim  >  Artikel  >  Backend-Entwicklung  >  Wie melde ich mich mit Curl bei Websites mit SSL-Zertifikaten und Cookies an?

Wie melde ich mich mit Curl bei Websites mit SSL-Zertifikaten und Cookies an?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 13:02:02457Durchsuche

How to Log in to Websites with SSL Certificates and Cookies Using Curl?

So gehen Sie mit SSL-Zertifikaten und Cookies für Anmeldungen mit Curl um

Problem

Die Anmeldung bei einer Website wie barnesandnoble.com mithilfe von cURL kann eine Herausforderung sein. insbesondere beim Umgang mit SSL-Zertifikaten und Cookies.

Lösung

Formularfelder abrufen:

  • Verwenden Sie die Funktion getFormFields(), um versteckte Felder zu extrahieren Eingabeformularfelder für die Anmeldung erforderlich.

POST-String erstellen:

  • URL-kodierte Parameter im POST-String (cURL führt dies nicht automatisch durch). ).
  • Verwenden Sie http_build_query(), um die POST-Zeichenfolge aus Formularfeldern zu erstellen.

SSL-Zertifikate verwalten:

  • Set CURLOPT_SSL_VERIFYHOST auf 0.
  • CURLOPT_SSL_VERIFYPEER auf false setzen.

Cookies verwalten:

  • Verwenden Sie CURLOPT_COOKIEFILE und CURLOPT_COOKIEJAR, um Cookies zu verarbeiten.

Beispielcode:

Der folgende Codeausschnitt zeigt ein erfolgreiches Anmeldeskript:

<?php
// Options
$EMAIL = '[email&#160;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();

// 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);

// Get Form Fields
curl_setopt($ch, CURLOPT_URL, $LOGINURL);
$content = curl_exec($ch);
$fields = getFormFields($content);
$fields['emailAddress'] = $EMAIL;
$fields['acctPassword'] = $PASSWORD;

// Get x Value
$x = '';
preg_match('/op\.asp\?x=(\d+)/i', $content, $match);
if (isset($match[1])) {
    $x = $match[1];
}

// Build POST String
$POSTFIELDS = http_build_query($fields);

// Change URL to Login URL
curl_setopt($ch, CURLOPT_URL, "https://cart2.barnesandnoble.com/mobileacct/op.asp?x=$x");

// Set POST Options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);

// Perform Login
$result = curl_exec($ch);

print $result;

function getFormFields($data) {
    preg_match('/(<form action="op.*?<\/form>)/is', $data, $matches);
    if (isset($matches[1])) {
        return getInputs($matches[1]);
    } else {
        die('didnt find login form');
    }
}

function getInputs($form) {
    $inputs = array();
    preg_match_all('/(<input[^>]+>)/is', $form, $matches);
    foreach ($matches[1] as $el) {
        $el = preg_replace('/\s{2,}/', ' ', $el);
        preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name);
        if (isset($name[1])) {
            $name = $name[1];
            $value = '';
            preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value);
            if (isset($value[1])) {
                $value = $value[1];
            }
            $inputs[$name] = $value;
        }
    }
    return $inputs;
}

Zusätzliche Hinweise:

  • Sobald Cookies eingerichtet sind, können Sie ein neues cURL-Objekt erstellen und die COOKIEFILE und COOKIEJAR angeben, um angemeldet zu bleiben.
  • Curl kann auch für mehrere Aktionen und das Senden verwendet werden XML mit Headern.
  • Weitere Informationen und Fehlerbehebung finden Sie in den bereitgestellten externen Ressourcen.

Das obige ist der detaillierte Inhalt vonWie melde ich mich mit Curl bei Websites mit SSL-Zertifikaten und Cookies an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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