监控:模拟登录

模拟登录


设想:
利用curl请求调用登录页面的url为:xxxx/login.php
再次利用curl请求调用登录后的页面,url为:xxx/myadmin.php
抓取第二次返回的结果中是否有指定的关键字,如:“退出登录”
如果有的话认为模拟登录成功,否则的话认为失败


问题:
实现的过程中 因为login.php将cookie种到了浏览器中,而监控程序跑的时候并没有在浏览器中跑,而是以脚本的形式跑的,所以种cookie的时候没有中上,导致调取第二个页面的时候因并未读取到cookie导致返回的始终是登录页面并非登录成功后的页面


解决方法:
在用curl调用第一个方法时,指定其种cookie的位置为服务器路径下的某一个文本中,在第二次调用curl的时候将cookie的位置传过去,这样在第二个页面读cookie的时候就能读取到cookie了,进而能成功模拟登录


实现代码:
$loginUser = xxx;
$loginPass = xxx;
//模拟用户登录
$postData = array(
    'login'=> $loginUser,
    'passwd'=> $loginPass
);
ob_start();//开启输出缓冲
$checkLoginURL = "xxx/login.php";
$cookieFile = dirname(__FILE__) . '/cookie.txt';
//Request::loginPost($checkLoginURL, $cookieFile, $postData);
$curl = curl_init(); //初始化curl模块
curl_setopt($curl, CURLOPT_URL, $checkLoginURL); //登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0); //是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0); //是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1); //post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData)); //要提交的信息
curl_exec($curl); //执行cURL
curl_close($curl); //关闭cURL资源,并且释放系统资源


$myadminURL = "xxx/myadmin.php";
//$resultHTML = Request::getContent($myadminURL, $cookieFile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $myadminURL);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); //读取指定位置的cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);


@unlink($cookieFile);
ob_end_clean();


if(strpos($rs,'退出登录') !== false){
    //todo
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值