php CURL模拟登录正方教务系统的例子

发布时间:2020-06-20编辑:脚本学堂
本文介绍了php curl模拟登录正方教务系统的方法,有关php curl模拟登录的例子,需要的朋友参考下。

php CURL模拟登录实例教程

学校用的是正方教务系统,用php模拟登录前进行fiddler软件抓包。
fiddler抓包1

每个学校的正方教务系统略有不同,这里仅仅是个样本。

fiddler抓包2

根据抓包结果找到提交所需的post数据
__VIEWSTATE=内容&tbYHM=内容&tbPSW=内容&ddlSF=%D1%A7%C9%FA&imgDL.x=39&imgDL.y=13
说明:第一个内容是登录页面里找到的,第二、三个内容是用户名和密码
判断是否登录成功
成功登录后页面会302跳转到/xsmainfs.aspx?xh=XXX的URL

例子:
 

复制代码 代码示例:
<?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 ;
    } // www.jb200.com
    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'] ;
    }
?>

说明:
代码不完全可用,只是参考,记录。
正方教务系统的登录地址还有default4.aspx的精简登录框,模拟应该更简单。

>>> 更多 php模拟登录 文章,专题链接:php模拟登录 php curl模拟登录教程大全