宝哥软件园

基于curl背景的郑方教务系统PHP远程登录方法

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

本文介绍了基于curl背景下PHP远程登录郑方教务系统的方法。分享给大家参考,如下:

去年思考过如何解决这个问题,今年终于想通了,但是验证码一定要填。

如果能像360一样抢到票,能自动识别验证码,就没事了。废话少说。回到主题

在这里使用CURL。

设计思路:先登陆页面获取cookies,然后拿着COOKIES向服务器索要验证码。最后,提供服务器所需的所有信息。

(这种思维是完全模拟访客访问页面,根本区别在于人还是机器。)

公共函数索引(){ $ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,$ URL);//只需填写curl _ setopt的URL($ ch,curl opt _ header,0);curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/4.0(兼容;MSIE 6.0windows NT 5.0)');curl_setopt($ch,CURLOPT_COOKIEJAR,$ COOKIE _ file);//这个保存的页面的主cookie,cookie curl _ setopt ($ ch,curl opt _ returntransfer,1)的路径;//返回结果并自动输出$ response=curl _ exec($ ch);curl _ close($ ch);}访问郑方教务系统首页,首先是获取页面上的HTML,其次是获取cookies。

别人就是想问?得到HTML有什么用?

如果你仔细观察教务系统主页上的HTML,你会发现里面隐藏着很多字段,而且这些字段是可变的。因此,您只需获取所有的HTML并解析它,然后挑选出您需要的所有字段

HTML结构

看,所有隐藏字段都是提交数据所必需的,隐藏字段不多。

页面效果

接下来,我想问最重要的一个问题,如何获取验证码?

起初我想直截了当

img src=' http : XXX/check code . aspx '/为什么不呢?虽然验证码出来了,但是这个验证码不属于你,所以当你保存远程登录时,会被告知验证码是错误的

如何获得自己的验证码?这时候,自然想到饼干。

服务器如何区分浏览器请求是否是同一个人取决于cookies中的sessionid

这边走。如果你拿着你在主页上得到的cookies,向服务器要你的验证码,它会给你一个错误的?

公共函数GetImg(){ $ URL=' http://xxxx/CheckCode . aspx ';$filedir=SITE_PATH。/TMP/Cookies ';$cookie_file=$filedir。/cookie . txt ';$ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,$ URL);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/4.0(兼容;MSIE 6.0windows NT 5.0)');curl_setopt($ch,CURLOPT _ COOKIEFILE,$ COOKIE _ FILE);//curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_TIMEOUT,' 10 ');标题(' Content-type : image/gif ');//这取决于不同的图片格式。请注意echo curl _ exec($ ch);curl _ close($ ch);}然后在其他页面调用这个方法,就可以得到验证码了。

CURL的PHP请求和你的浏览器发送的PHP属于两个不同的线程,所以它们的cookies是不同的,是共享的。

所以你可以登录,但是不要以为这样登录就可以操作所有的功能,那你就想错了。有一个小细节。

更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》。

希望本文对PHP编程有所帮助。

更多资讯
游戏推荐
更多+