用php的CURL模拟登录正方教务系统
2023-06-13 09:11:05 时间
用php的CURL模拟登录正方教务系统
作者:matrix 被围观: 11,477 次 发布时间:2014-05-12 分类:零零星星 | 20 条评论 »
这是一个创建于 3034 天前的主题,其中的信息可能已经有所发展或是发生改变。
学校用的是正方教务系统,这玩意做的太恶心了。
用php模拟登录前进行fiddler软件抓包。
每个学校的正方教务系统略有不同,这里仅仅是个样本。
根据抓包结果找到提交所需的post数据
__VIEWSTATE=内容&tbYHM=内容&tbPSW=内容&ddlSF=%D1%A7%C9%FA&imgDL.x=39&imgDL.y=13 说明:第一个内容是登录页面里找到的,第二、三个内容是用户名和密码
判断是否登录成功
成功登录后页面会302跳转到/xsmainfs.aspx?xh=XXX的URL
php代码参考:
<?php
$url = '';//正方教务系统登录地址
$ID = '';
$PA = '';
$cookieid = Get_SessionId($url);//获取登录页面的会话ID
/*
is_login()函数判断是否登录成功
*/
function is_login()
{
global $url,$ID,$PA,$cookieid;
preg_match('#value="([^"]+)"#', curl_get($url), $vi);
$p = '__VIEWSTATE=' . urlencode($vi[1]) . '&tbYHM=' . $ID . '&tbPSW=' . $PA . '&ddlSF=%D1%A7%C9%FA&imgDL.x=39&imgDL.y=13'; //默认学生
$co = curl_get($url, $p, 0, 0, 0, array('Cookie: ASP.NET_SessionId=' . $cookieid));
//curl_get('地址/xsleft.aspx?flag=grxx', array('Cookie: ASP.NET_SessionId=' . $cookieid)); //获取基本信息以前必须访问这个地址
return strpos($co, "/xsmainfs.aspx?xh=" . $ID)? true : false ;
}
function curl_get($url, $add_arry_header = 0)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'));
if ($add_arry_header)
{
curl_setopt($ch, CURLOPT_HTTPHEADER, $add_arry_header);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$get_url = curl_exec($ch);
curl_close($ch);
return $get_url;
}
function Get_SessionId($u) // 获取aspx的会话ID
{
$a = get_headers($u);
$a = str_replace(array(';', ':'), '&', $a[6]);
parse_str($a, $aa);
return $aa['ASP_NET_SessionId'] ;
}
?>
说明:代码不完全可用,只是参考,记录。
ps:
正方教务系统的登录地址还有default4.aspx的精简登录框,模拟这个的话应该更简单。
相关文章
- verifycode.php,verifycode.php
- golang实现类似PHP json_encode和json_decode 函数
- 两个 PHP 可逆加密函数
- SQL注入之PHP-MySQL实现手工注入-字符型
- Linux系统下搜索PHP文件的技巧(linux查找php文件)
- 环境快速搭建Linux上的PHP开发环境(Linux装php)
- 安装安装Linux下的64位PHP(linux64位php)
- 基于MySQL的PHP留言板系统开发(php留言板mysql)
- 环境搭建PHP在Linux下的环境搭建与应用(php用linux)
- 数据如何使用PHP在MySQL中添加数据(php添加mysql)
- PHP与MySQL数据库之间的连接(php链接mysql)
- PHP编译MySQL:一步一步指南(php编译mysql)
- Linux系统下如何快速安装PHP(linux命令安装php)
- 快速安装配置PHP在Linux系统上(php安装配置linux)
- 搭建 PHP 环境,在 Linux 系统里更轻松!(php环境linux)
- 器使用Linux快速启动PHP服务器(linux启动php服务)
- 一步步获取 PHP 导入 MySQL 无忧(php导入mysql)
- 深入探索:Linux 系统下 PHP 的适用与优势(Linux中php)
- PHP中使用Redis缓存数据的优势(php使用redis)
- 重启Linux服务器,以使PHP生效(php重启linux)
- 分析Linux下PHP日志的管理技巧(linuxphp日志)
- 使用PHP驱动程序实现与SQL Server数据库的连接(php连接sqlserver)
- PHP Redis实时监控系统的应用(php redis 监控)
- PHP与MSSQL架构构建的网站系统实践(php mssql 架构)
- 混合开发助力企业信息化C语言PHP和MySQL联动提升系统性能(c php mysql)
- windows服务器下IIS6/7下PHP无法加载php_curl.dll等动态链接库
- Linux中用PHP判断程序运行状态的2个方法
- PHP使用GIFEncoder类生成的GIF动态图片验证码
- php生成excel列名超过26列大于Z时的解决方法