PHP的curl带验证码模拟登陆学校的教务系统(验证码已被自动识别,不需要输入)

5 篇文章 0 订阅

初次使用curl模仿登陆成功,有什么不好的地方多多指出。

我要模拟登陆的地址是:http://jwc.wyu.edu.cn/student/  

原本学校的教务系统是这样的:

现在我做的模拟登陆界面是这样的:


有没发现少了什么,没错就是验证码没了,我们不用输验证码也能愉快地登录了~~~~~~~~~~~~~


其实模拟登陆并不难,我们来第一步

获取验证码并保存验证码页面对应的cookie

                //获取图片
		$judge = getImg("http://jwc.wyu.edu.cn/student/rndnum.asp","image.jpeg");
                //第一个参数是验证码生成地址,第二个参数随便,作用是采集验证码的图片并将这张图片保存为image.jpeg
		if($judge){//判断图片是否获取成功
			$valid = new Valite();   //这里采用了一个自动识别验证码的类
			$valid->setImage("image.jpeg");
			$valid->getHec();
			$validCode = $valid->run();
			// echo $validCode;
			$CookieFile = $judge; //获取保存好的cookie  (用curl_setopt($hander, CURLOPT_COOKIEJAR, $CookieFile);保存的)
	}else{
			echo "<script>alert('自动获取验证失败');window.location.href='index.html';</script>";
		}

这里的验证码自动识别类可查看网址:http://www.poboke.com/study/php-verification-code-identification-primary.html  这里有详解


第二步就是模拟登陆:

在第一步验证码和cookie都已经获取了,剩下就是一些小细节,我先用火狐自带的firebug抓下登陆后的包先

以上的两个图就是我们需要研究的重要信息了,Post信息是必须的,而请求头中的 Referer 也经常需要伪造

        $user = $_POST['user'];//获取来自登录界面post过来的账号和密码
	$password = $_POST['password'];
	$p="UserCode=".$user."&UserPwd=".$password."&Validate=".$validCode."&Submit=提交";//Post信息(必须的)
	$ch = curl_init();
	// 2. 设置选项,包括URL
	$reffer = 'http://jwc.wyu.edu.cn/student/body.htm';
	curl_setopt($ch, CURLOPT_REFERER, $reffer);       //伪造Referer 请求头中有 复制下来就行了
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0"); //伪造user-agent请求头也有
	curl_setopt($ch,CURLOPT_URL, "http://jwc.wyu.edu.cn/student/logon.asp");//这里填的是登录地址了(就是表单登录时action="xxx"提交的地址)
	curl_setopt($ch,CURLOPT_COOKIEFILE, $CookieFile);//发送第一步保存好的Cookie
	curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch,CURLOPT_POST, 1);//采用POST传值方式
	curl_setopt($ch,CURLOPT_POSTFIELDS, $p);  //提交Post信息
	curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);  //防止重定向 不填可能会跳转页面
	$s = curl_exec($ch);
	curl_close($ch);

第三步:

前面已经模拟登陆进来了,现在可以干你想做的事,抓你想要的信息了,代码贴上

$ch = curl_init();
	$reffer = 'http://jwc.wyu.edu.cn/student/menu.asp';  //这里同样是抓包,。。。。。这里就自己抓吧(登录后的自己想要的网址)
	curl_setopt($ch, CURLOPT_REFERER, $reffer);//伪造Referer来源
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");
	curl_setopt($ch,CURLOPT_URL, "http://jwc.wyu.edu.cn/student/f4_myscore.asp");  //这里是我想要信息的网址
	curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
	curl_setopt($ch,CURLOPT_COOKIEFILE, $CookieFile);//同时发送Cookie
	curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
	$return = curl_exec($ch);
	echo $return;//输出结果
	curl_close($ch);
就这样我抓去了下面的信息

呃~~~貌似暴露了自己的智商~~~~~~~到这里就写完了,源码下载地址是:http://yunpan.cn/cmKiR5PX7Eb2w  访问密码 b401









评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值