PHP基于curl后台远程登录正方教务系统的方法


Posted in PHP onOctober 14, 2016

本文实例讲述了PHP基于curl后台远程登录正方教务系统的方法。分享给大家供大家参考,具体如下:

从去年想这个事情怎么解决,今年终于算是把他搞清楚了,但验证码必须要填。

如果你能像360抢票哪有自动识别验证码,那就没事了。废话不多扯了。回归正题

这里要用CURL。

设计思路:先登录页面获取COOKIES,然后拿着cookies找服务器要验证码。最后提供服务器需要的全部信息。

(这种思维是完全模拟游览器访问页面,根本区别出来是人还机器)

public function index(){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url); //填对于的URL就可以了
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //主要cookie的路径,本保存页面cookie
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //返回结果自动输出
 $response = curl_exec($ch);
 curl_close($ch);
}

访问正方教务系统的首页,第一获取页面中的HTML,第二是获取cookies。

其他的就想问?获取HTML有啥用?

如果你细心观察教务系统首页的HTML的话,你会发现里面有很多隐藏字段,而这些字段又是变化的。
所以你干脆把HTML都获取然后解析,然后把需要的字段都桃出来

PHP基于curl后台远程登录正方教务系统的方法

HTML结构

看到没有,那么的隐藏字段,都是提交数据的必须,而且不能多。

PHP基于curl后台远程登录正方教务系统的方法

页面效果

接下来我要将一个最重要的问题,怎么获取验证码?

开始我想直接

<img src="xxxx/CheckCode.aspx" />

不就行了?这样验证码虽然是出来,但这个验证码不属于你,所以在你存远程登录时候,都会告诉你,验证码错误

那怎么获取属于自己的验证码呢?这时候,自然想到的是cookies。

服务器是怎么区分游览器请求是不是同一个人,就看cookies里面的sessionid了

这样。你拿着你在首页获取到的cookies,再找服务器要你的验证码,它会给错?

public function 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 (compatible; MSIE 6.0; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, "10");
    header("Content-type:image/gif"); //这个视不同图片格式不一样,请注意
    echo curl_exec($ch);
    curl_close($ch);
}

然后再在其他页面调用这个方法,你就可以获取到验证码。

CURL的PHP请求跟你游览器发出的PHP属于两个不同的线程,所以,他们的cookies是不同共用的。

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

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 PHP
php车辆违章查询数据示例
Oct 14 #PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 #PHP
php+jQuery递归调用POST循环请求示例
Oct 14 #PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 #PHP
PHP中多线程的两个实现方法
Oct 14 #PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 #PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 #PHP
You might like
PHP获取服务器端信息的方法
2014/11/28 PHP
隐性调用php程序的方法
2015/06/13 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
Python分析学校四六级过关情况
2017/11/22 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
个人简历中的自我评价范例
2013/10/29 职场文书
应届生英语教师求职信
2013/11/05 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
给校长的一封检讨书
2014/09/20 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书