ホームページ  >  記事  >  バックエンド開発  >  PHP は CURL を使用して、検証コードによる Web サイトへのシミュレートされたログインを実装します。

PHP は CURL を使用して、検証コードによる Web サイトへのシミュレートされたログインを実装します。

WBOY
WBOYオリジナル
2016-08-08 09:21:24918ブラウズ

インターネット上の多くのシミュレートされたログイン プログラムは、ほとんどの場合、サービス プログラム apache を通じて実行され、確認コードを取得した後、Web ページに表示され、入力されて POST されます。これは、シミュレートされたログインであるため、非常にフレンドリーに見えます。 , ログイン後、実行される処理は必ずしも短時間で完了するとは限りません。そのため、これは PHP の最大実行時間の影響を受け、一部の操作には十分な権限がない可能性があります。

この記事では、検証コードを取得して画像として保存し、20 秒後にユーザーが画像を手動で表示して検証コードを入力するというプログラムの例を示します。 code.txt ファイルに入力すると、20 秒間のスリープが完了した後、プログラムは code.txt 内の検証コードを読み取り、その検証コードを使用してログインします。具体的なコードは次のとおりです:

/**
 * 模拟登录
 */
 
//初始化变量
$cookie_file = "tmp.cookie";
$login_url = "http://xxx.com/logon.php";
$verify_code_url = "http://xxx.com/verifyCode.php";
 
echo "正在获取COOKIE...\n";
$curlj = curl_init();
$timeout = 5;
curl_setopt($curl, CURLOPT_URL, $login_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //获取COOKIE并存储
$contents = curl_exec($curl);
curl_close($curl);
 
echo "COOKIE获取完成,正在取验证码...\n";
//取出验证码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $verify_code_url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$img = curl_exec($curl);
curl_close($curl);
 
$fp = fopen("verifyCode.jpg","w");
fwrite($fp,$img);
fclose($fp);
echo "验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存\n";
//停止运行20秒
sleep(20);
 
echo "休眠完成,开始取验证码...\n";
$code = file_get_contents("code.txt");
echo "验证码成功取出:$code\n";
echo "正在准备模拟登录...\n";
 
$post = "username=maben&pwd=hahahaha&verifycode=$code";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$result=curl_exec($curl);
curl_close($curl);
 
//这一块根据自己抓包获取到的网站上的数据来做判断
if(substr_count($result,"登录成功")){
 echo "登录成功\n";
}else{
 echo "登录失败\n";
 exit;
}
 
//OK,开始做你想做的事吧。。。。。

上記では、PHP が CURL を使用して検証コードを使用して Web サイトへのログインをシミュレートする方法を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。