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 相关文章推荐
定制404错误页面,并发信给管理员的程序
Oct 09 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
php微信公众账号开发之前五个坑(一)
Sep 18 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
Laravel学习教程之路由模块
Aug 18 PHP
Smarty模板变量与调节器实例详解
Jul 20 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/29 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
JavaScript使用cookie
2007/02/02 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
python入门之井字棋小游戏
2020/03/05 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
捐书寄语赠言
2014/01/18 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
新闻稿件写作范文
2015/07/18 职场文书
银行柜员工作心得体会
2016/01/23 职场文书