第一次用php實現類比登陸真的是弄了好久,還挺好玩的就是,都是自己一點一點探索的收穫還是慢慢的。到現在還有一點沒弄明白的就是為什麼不用提交驗證碼資訊也能登陸,感覺可能是bug吧!
想要實現類比登陸,首先要開啟瀏覽器登入你想要類比登陸的網站然後按F12去找到類比登陸要提交的資料,像正方還有個隱藏的__VIEWSTATE的變數需要用Regex匹配找到這個變數的值,登陸進去了你就會在頁面發現你的個人資訊並在代碼中注意儲存你的cookie以便於跳轉到另一個想要查詢的頁面,My Code就是查詢成績的方法,有興趣的可以與我交流一起探討!
$result,'txtUserName' => $username,'TextBox2' => $password,'RadioButtonList1' => iconv('utf-8', 'gb2312', '學生'),'Button1' => '');$filecookie = dirname(__FILE__)."/cookie"; $ch2 = curl_init();curl_setopt($ch2, CURLOPT_URL, $url);curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch2, CURLOPT_POST, 1);curl_setopt($ch2, CURLOPT_POSTFIELDS, http_build_query($post1));curl_setopt($ch2, CURLOPT_COOKIEJAR, $filecookie); //儲存登陸的cookie資訊到filecookie檔案中curl_exec($ch2);curl_close($ch2);//類比登入成績頁面擷取__VIEWSTATE$ch3 = curl_init();curl_setopt($ch3, CURLOPT_URL, "http://jw.jxust.edu.cn/xscj_gc.aspx?xh=$username&gnmkdm=N121605");curl_setopt($ch3, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch3, CURLOPT_COOKIEFILE, $filecookie);curl_setopt($ch3, CURLOPT_REFERER, "http://jw.jxust.edu.cn");$data = curl_exec($ch3);curl_close($ch3);$pattern = '/ $cj__VIEWSTATE,'ddlXN' => '','ddlXQ' => '', 'Button1' => iconv('utf-8', 'gb2312', '按學期查詢') );curl_setopt($ch4, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch4, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch4, CURLOPT_COOKIEFILE, $filecookie);curl_setopt($ch4, CURLOPT_POST, 1);curl_setopt($ch4, CURLOPT_POSTFIELDS, $post2);curl_setopt($ch4, CURLOPT_REFERER, "http://jw.jxust.edu.cn");$data = curl_exec($ch4);//preg_match_all($pattern, $data, $matches);curl_close($ch4);?>
以上就介紹了用php實現正方教務系統的類比登陸,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。