Curl、SSL、Cookie を使用してログインする方法
Curl、SSL、Cookie を使用して barnesandnoble.com にログインしようとする場合、Web サイトのプロトコルの違いや Cookie の処理に関する潜在的な問題により、一部のユーザーが問題に遭遇することがあります。問題の内訳と解決策は次のとおりです:
問題:
解決策:
Curl を使用して barnesandnoble.com に正常にログインするには、次の点を考慮してください。以下:
これらのソリューションを組み込んだスクリプトの例を次に示します。
// 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; }
$EMAIL 変数と $PASSWORD 変数を実際の値で変更することを忘れないでください。ログイン認証情報。さらに、$cookie_file_path は、ファイル システム上の書き込み可能な場所を指す必要があります。
ログインしたら、COOKIEFILE および COOKIEJAR オプションを指定して新しい Curl オブジェクトを作成できます。これにより、次の操作を行わずに認証されたままになります。最初のステップ。
以上がCurl、SSL、Cookie を使用して Barnes & Noble のモバイル サイトにログインするのが難しいのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。