Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah sukar untuk log masuk ke tapak mudah alih Barnes & Noble menggunakan Curl, SSL dan kuki?
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:
Penyelesaian:
Untuk berjaya log masuk ke barnesandnoble.com menggunakan Curl, pertimbangkan perkara berikut:
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!