用phpcurl实现模拟登录带验证码urp教务系统获取成绩

思路:链接登录页,获取验证码和cookie到本地,人工输入验证码,post账号密码验证码,链接成绩页。

先po出代码来,改天再详细修改。

<?php
/**
 * 模拟登录
 */




$cookie_file = dirname(__FILE__)."";//cookie存储的路径

$login_url = "";//登录页url
$verify_code_url = "";//验证码url
$grade_url="";//成绩页url


echo "正在获取COOKIE...\n";

 //获取COOKIE并存储
$curl = 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);
curl_exec($curl);
echo "获取成功";






echo "COOKIE获取完成,正在取验证码...\n";
//取出验证码


curl_setopt($curl, CURLOPT_URL, $verify_code_url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$img = curl_exec($curl);

$fp = fopen("PATH_COOKIE","w");  //PATH_COOKIE为验证码图片保存路径
fwrite($fp,$img);
fclose($fp);


//此处需要人工查看验证码,填入code.txt.
echo "验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存\n";
sleep(10);//休眠



echo "休眠完成,开始取验证码...\n";
sleep(10);
$code = file_get_contents('code.txt');

echo "验证码成功取出:$code\n";
echo "正在准备模拟登录...\n";
unlink(dirname(__FILE__)."/log/verifyCode.jpg");//删除验证码文件


//
$post = array ( 
'zjh1' => '',
'tips' => '',
'lx' => '',
'evalue' => '',
'eflag' => '',
'fs' => '' ,
'dzslh'=>'',
'zjh'=>'',
'mm'=>'',
'v_yzm'=>$code
); 




curl_setopt($curl, CURLOPT_URL, $login_url);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$result=curl_exec($curl);


if(curl_error($curl)){
echo '[Curl error] ' . curl_error($urlobj);}

if ($result) {
echo "[result]yes";}
else {
echo "[result]no";}




curl_setopt($curl, CURLOPT_URL, $grade_url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$chengji = curl_exec($curl);
$chengji = iconv("gb2312","utf-8//IGNORE",$chengji);//根据编码修改
if(curl_error($curl)){
echo '[Curl error] ' . curl_error($urlobj);}
if ($chengji) {
echo "[chengji]".$chengji;
}
else {echo "[chengji]NULL";}
curl_close($curl);




?>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值