ホームページ >バックエンド開発 >PHPチュートリアル >模擬ログイン。確認コードを入力する必要があります。

模擬ログイン。確認コードを入力する必要があります。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 11:59:111140ブラウズ

模擬ログインには確認コードの入力が必要です
最近、興味があり、Zhihu.com で模擬ログインをしてみたいと思いました。しかし、認証コードを入力する必要があるという問題が発生しました

何度もブラウザでログインしてみて、いくつかのルールを学びました。

確認コードを入力する必要がある場合、Yan 確認コードを取得するときに、再度確認コードを取得するたびに、対応する Cookie が一度変更されます。

すると、私はcurlを使用しています。ログインをシミュレートするときに、検証コードCookieが返送されましたが、毎回検証コードエラーが表示されます。

最大 4 つのパラメータを送信する必要があります。 _xsrf と同様に、送信する必要はありません。または、

を使用して、このリンクと同様の特定のコードを実装できます。この方法も使用できません
http://www.cnblogs.com/echo-something/archive/2012/07/18/2597831.html

<br>/**<br> * @author Chasing__something<br> * @version $id<br>*/<br>define('SCRIPT_ROOT',dirname(__FILE__).'/');<br>$act = trim(isset($_REQUEST['act']) ? $_REQUEST['act'] : "");<br>switch($act)<br>{<br> case 'login':<br> // 確認コードを取得<br> $code = trim($ _REQUEST ['コード']);<br> <br> ] = '123123';<br> $loginParams['email'] = [email protected]';<br> $loginParams['captcha'] = $ code;<br> <br> // $cookieFile がロードされます コードの検証時に保存された cookie ファイル名 <br> $cookieFile = SCRIPT_ROOT.'cookie.tmp';<br> <br> // $targetUrl ターゲット アドレス送信者:curl <br> $targetUrl = 'http://www.zhihu.com/login';<br> = "http://www.zhihu.com";<br> <br> echo vget( $targetURL );<br> break;<br> case 'authcode':<br> ('Content-Type:image/png');<br> showAuthcode('http://www.zhihu.com/captcha.gif' );<br> exit;<br> Break;<br>}<br><br>/**<br> * 模擬ログイン <br> * @param string $url 送信アドレス <br> * @param string $cookieFile クッキーを保存するファイル <br> * @param string $loginParams 送信時に送信するパラメータ <br> * @戻り文字列 $content 返されたコンテンツ<br>*/<br>functioncurlLogin($url, $cookieFile, $loginParams)<br>{<br> $header = array(<br> 'Accept:*/*', <br> 'Accept-Encoding:gzip,deflate,sdch',<br> 'Accept-Language:zh-CN,zh;q=0.8 ,zh-TW;q=0.6',<br> 'キャッシュ制御: キャッシュなし',<br> '接続:キープアライブ',<br> 'Content-Type:application/x-www-form- urlencoded; charset=UTF-8',<br> 'ホスト:www.zhihu .com',<br> 'オリジン:http://www.zhihu.com',<br> 'リファラー:http://www .zhihu.com',<br> 'X-Requested-With:XMLHttpRequest' <br> );<br> <br> $curl =curl_init() //curl セッションを開始します<br>curl_setopt($curl, CURLOPT_URL, $url); //アクセスするアドレス<br>curl_setopt($curl, CURLOPT_HTTPHEADER, $header) //HTTP ヘッダフィールドの配列を設定します<br>curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); /認証証明書のソースを確認してください<br>curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); //証明書から SSL 暗号化アルゴリズムが存在するかどうかを確認します<br>curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like) Gecko ) Chrome/33.0.1750.22 Safari/537.36'); //ユーザーが使用するブラウザをシミュレートします<br>curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1) ; cookieFile); //同時に Cookie を送信します<br>curl_setopt($curl, CURLOPT_TIMEOUT, 30) //無限ループを防ぐためにタイムアウト制限を設定します<br> $result =curl_exec($curl); / /curl を実行しますsession<br> <br> if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200') {<br> $headSize =curl_getinfo($curl, CURLINFO_HEADER_SIZE);<br> }<br> <br> $this- >_cookies($result);<br> <br>curl_close($curl); <br><br>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。