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 utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
php array_keys 返回数组的键名
Oct 25 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
php 可变函数使用小结
Jun 12 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 PHP
关于PHP中interface的用处详解
Jul 26 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
Thinkphp多文件上传实现方法
2014/10/31 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
用python实现刷点击率的示例代码
2019/02/21 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
yy结婚证婚词
2014/01/10 职场文书
应届生求职信
2014/05/31 职场文书
2014年行政工作总结
2014/11/19 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
消费者投诉书范文
2015/07/02 职场文书
小学生运动会广播
2015/08/19 职场文书