Curl, SSL 및 쿠키를 사용하여 로그인하는 방법
Curl, SSL 및 쿠키를 사용하여 barnesandnoble.com에 로그인하려고 할 때 , 일부 사용자는 웹사이트 프로토콜의 차이와 잠재적인 쿠키 처리 문제로 인해 어려움을 겪고 있습니다. 다음은 문제 분석 및 해결 방법입니다.
문제:
해결책:
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, 쿠키를 사용하여 Barnes & Noble의 모바일 사이트에 로그인하는 것이 왜 어려운가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!