前言
疫情期间不是都流行打卡吗?但是,像我这种基本不出门的,理论上是没什么安全隐患的。
天天打卡挺麻烦的,写个程序自己打卡不香吗? #(墨镜滑稽)
(由于流程过于简单,在此不做分析,直接贴代码(无打卡操作),仅供学习与交流)
Start
// 模拟访问登录页面 $lopginpage = CUIT_loginPage(); // 模拟提交的数据 $body = "WinW=1304&WinH=768&txtId={$account['id']}&txtMM={$account['pass']}&verifycode=%B2%BB%B7%D6%B4%F3%D0%A1%D0%B4&codeKey={$lopginpage['codeKey']}&Login=Check&IbtnEnter.x=31&IbtnEnter.y=28"; // 由登录页面的cookie与要i教的数据组成验证数组 $verify = array( "cookie" => $lopginpage['cookie'], "body" => $body ); // 模拟登录,取得最终cookie $cookie = CUIT_login($verify); function CUIT_loginPage() { $http = new EasyHttp(); $response = $http->request("http://login.cuit.edu.cn/Login/xLogin/Login.asp", array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => null, 'blocking' => true, // 是否阻塞 'headers' => null, // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); $cookie = $response["headers"]["set-cookie"]; $cookie = explode(";", $cookie)[0]; preg_match_all ("/<input type=\"hidden\" name=\"codeKey\" value=\"(.*)\"><INPUT /U", $response['body'], $yzm); return array( "cookie" => $cookie, "codeKey" => $yzm[1][0] ); } function CUIT_login($verify) { $http = new EasyHttp(); $response = $http->request("http://login.cuit.edu.cn/Login/xLogin/Login.asp", array( 'method' => 'POST', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "cookie" => $verify['cookie'], "Referer" => "http://login.cuit.edu.cn/Login/xLogin/Login.asp" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => $verify['body'], 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); // 据分析,该请求成功后会有302跳转操作 if($response["response"]["code"] != 302) { return false; } // 操作另一个域名 $response = $http->request("http://jszx-jxpt.cuit.edu.cn/jxgl/xs/netks/sj.asp?jkdk=Y", array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "Referer" => "http://jxgl.cuit.edu.cn/" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); $cookie1 = $response["headers"]["set-cookie"]; $response = $http->request("http://jszx-jxpt.cuit.edu.cn/Jxgl/Login/tyLogin.asp", array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "cookie" => $cookie1, "Referer" => "http://jxgl.cuit.edu.cn/" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); preg_match_all("/;URL=(.*)\">/U", $response['body'], $ret); // 得到一个链接:http://login.cuit.edu.cn/Login/qqLogin.asp?Oid=jszx%2Djxpt%2Ecuit%2Eedu%2Ecn&OSid=******* // 这是绑定jszx-jxpt与login的关系吗? $response = $http->request($ret[1][0], array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "cookie" => $verify['cookie'], "Referer" => "http://jszx-jxpt.cuit.edu.cn/" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); // 从这里开始,似乎在激活cookie1 $response = $http->request("http://jszx-jxpt.cuit.edu.cn/Jxgl/Login/tyLogin.asp", array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "cookie" => $cookie1, "Referer" => "http://jszx-jxpt.cuit.edu.cn/" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); $response = $http->request("http://jszx-jxpt.cuit.edu.cn/Jxgl/Login/syLogin.asp", array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "cookie" => $cookie1, "Referer" => "http://jszx-jxpt.cuit.edu.cn/" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); $response = $http->request("http://jszx-jxpt.cuit.edu.cn/Jxgl/UserPub/Login.asp?UTp=Xs&Func=Login", array( 'method' => 'GET', // GET/POST 'timeout' => 5, // 超时的秒数 'redirection' => 0, // 最大重定向次数 'httpversion' => '1.1', // 1.0/1.1 'user-agent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.0 Safari/537.36 Edg/84.0.521.0", 'blocking' => true, // 是否阻塞 'headers' => array( "cookie" => $cookie1, "Referer" => "http://jszx-jxpt.cuit.edu.cn/" ), // header信息 'cookies' => null, // 关联数组形式的cookie信息 // 'cookies' => $cookies, 'body' => null, 'compress' => false, // 是否压缩 'decompress' => true, // 是否自动解压缩结果 'sslverify' => true, 'stream' => false, 'filename' => null // 如果stream = true,则必须设定一个临时文件名 )); return $cookie1; }