怎样用php中的curl模拟登陆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用php中的curl模拟登陆相关的知识,希望对你有一定的参考价值。

在我的博客《php cURL模拟登录与采集分析过程详解》做了详细的介绍,步骤有:
1. 访问目标网站
2. 打开Firebug(快捷键:F12)
3. 清除【Cookie】
4. 重新访问目标网站
5. 设置【网络】为[保持]状态
6. 填写表单,提交登录请求
7. 利用【网络】,分析提交信息
8. 复制请求的cURL命令
9. 分析命令传输的参数与Cookie和前面页面响应内容的关联性
10. 如果遇到Cookie和响应内容都无法查找到的参数,Ctrl+S保存当前页面为全部,利用文本搜索该参数的位置
11. 利用cURL命令组装模拟登录程序

详情请参考博客内容:http://www.zjmainstay.cn/php-curl-step

参考技术A /**
* 模拟登录
*/

//初始化变量
$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;
参考技术B 百度会告诉你

以上是关于怎样用php中的curl模拟登陆的主要内容,如果未能解决你的问题,请参考以下文章

php curl模拟登陆抓取数据

PHP CURL模拟登陆

php实现模拟登陆

php爬虫(curl) 模拟登陆获取cookie,然后使用cookie查看个人中心

php 模拟登陆(不带验证码)采集数据

PHP通过伪造和模拟客户端COOKIE登陆来采集抓取远程网址