ホームページ >バックエンド開発 >PHPチュートリアル >PHP は CURL を使用して、検証コードによる Web サイトへのシミュレートされたログインを実装します。curl 検証コード_PHP チュートリアル
インターネット上の多くのシミュレートされたログイン プログラムは、ほとんどの場合、サービス プログラム apache を通じて実行され、確認コードを取得した後、Web ページに表示され、入力されて POST されます。これは、シミュレートされたログインであるため、非常にフレンドリーに見えます。 , ログイン後、実行される処理は必ずしも短時間で完了するとは限りません。そのため、これは PHP の最大実行時間の影響を受け、一部の操作には十分な権限がない可能性があります。
この記事では、検証コードを取得して画像として保存し、20 秒後にユーザーが画像を手動で表示して検証コードを入力するというプログラムの例を示します。 code.txt ファイル。20 秒間の休止状態が完了すると、プログラムは code.txt の検証コードを読み取り、その検証コードを使用してログインします。具体的なコードは次のとおりです:
リファラーとユーザーエージェントがブラウザの値をシミュレートできるかどうかなど、シミュレートされていない他の http ヘッダーがあるかどうかを確認できます。 完全なリクエストは次のようになります。
GET /home/pack/data/content id? =31,2399,13,30&asyn=1&t=0.03439752989200834&_req_seqid=0xa982225f0637c78a HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Referer: www.baidu.com/
x-re requested -with: XMLHttpRequest
Accept-Encoding: gzip、deflate
User-Agent: Mozilla/4.0 (互換性; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS123401; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; MS-RTC LM 8)
ホスト: www.baidu.com
接続: キープアライブ
Cookie: XCXXXXX
$url = "localhost/post_output.php";
$post_data = array (
"foo" => "bar",
"query" => "Nettuts",
"action" => "Submit"
);
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// データを POST しています。
curl_setopt($ch, CURLOPT_POST, 1);
//post 変数を
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output =curl_exec($ch);
curl_close($ch);
echo に追加します$出力;
結果