>  기사  >  백엔드 개발  >  CURL을 사용하여 PHP_php에서 로그인을 시뮬레이션하는 방법 팁

CURL을 사용하여 PHP_php에서 로그인을 시뮬레이션하는 방법 팁

WBOY
WBOY원래의
2016-05-16 20:11:20994검색

인터넷상의 많은 시뮬레이션된 로그인 프로그램은 대부분 아파치 서비스 프로그램을 통해 실행됩니다. 인증 코드를 얻은 후 웹 페이지에 표시되고 입력된 다음 게시됩니다. 시뮬레이션 로그인, 로그인 후 수행하는 작업이 반드시 짧은 시간 내에 완료되는 것은 아니므로 이는 PHP의 최대 실행 시간에 따라 달라지며 일부 작업에는 충분한 권한이 없을 수 있습니다.

이 기사에서는 인증 코드를 획득하고 인증 코드를 이미지로 저장한 다음 20초 후에 사용자가 수동으로 이미지를 보고 인증을 입력하는 아이디어를 제공합니다. 파일에서 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并保存
";
//停止运行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,开始做你想做的事吧。。。。。
 

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.