Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah sukar untuk log masuk ke tapak mudah alih Barnes & Noble menggunakan Curl, SSL dan kuki?

Mengapakah sukar untuk log masuk ke tapak mudah alih Barnes & Noble menggunakan Curl, SSL dan kuki?

Susan Sarandon
Susan Sarandonasal
2024-11-09 13:43:02922semak imbas

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

Cara Log Masuk dengan Curl, SSL dan Cookies

Apabila cuba log masuk ke barnesandnoble.com menggunakan Curl, SSL dan kuki , sesetengah pengguna menghadapi kesukaran kerana perbezaan dalam protokol tapak web dan isu pengendalian kuki yang berpotensi. Berikut ialah pecahan masalah dan penyelesaian:

Masalah:

  • Pengguna tidak dapat log masuk ke tapak mudah alih barnesandnoble.com menggunakan Curl.
  • Halaman yang dikembalikan tidak memaparkan ralat dan medan e-mel menjadi lalai kepada kotak input e-mel borang log masuk.
  • Kod yang sama berjaya log masuk ke eBay, menunjukkan bahawa isu itu terletak pada ciri unik tapak web barnesandnobles.

Penyelesaian:

Untuk berjaya log masuk ke barnesandnoble.com menggunakan Curl, pertimbangkan perkara berikut:

  • Pengekodan URL : Pastikan parameter URL (seperti e-mel dan kata laluan) dalam rentetan siaran dikodkan URL dengan betul.
  • Nilai x: Sertakan nilai x sebagai sebahagian daripada URL log masuk . Nilai ini biasanya diekstrak daripada respons awal.

Berikut ialah skrip contoh yang menggabungkan penyelesaian ini:

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

Ingat untuk mengubah suai pembolehubah $EMAIL dan $PASSWORD dengan sebenar anda kelayakan log masuk. Selain itu, $cookie_file_path harus menghala ke lokasi yang boleh ditulis pada sistem fail.

Setelah anda melog masuk, anda boleh mencipta objek Curl baharu, menyatakan pilihan COOKIEFILE dan COOKIEJAR, dan anda akan kekal disahkan tanpa melakukan langkah awal.

Atas ialah kandungan terperinci Mengapakah sukar untuk log masuk ke tapak mudah alih Barnes & Noble menggunakan Curl, SSL dan kuki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn