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 相关文章推荐
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
PHP 截取字符串专题集合
Aug 19 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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高级应用技巧果断收藏
2015/09/25 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
php实现小程序支付完整版
2018/10/09 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
Python字符转换
2008/09/06 Python
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
Wallis官网:英国女装零售商
2020/01/21 全球购物
中间件分为哪几类
2016/09/18 面试题
工商管理应届生求职信
2013/10/07 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
幼儿园小班评语
2014/04/18 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
先进员工事迹材料
2014/12/20 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
活动经费申请报告
2015/05/15 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
进行数据处理的6个 Python 代码块分享
2022/04/06 Python