關於PHP寫的投票網站之刷票原理(curl模組)
阿新 • • 發佈:2019-02-02
告訴大家一個壞訊息,還是有刷票的行為,有圖有真相:
倒數第三項是時間軸,倒數第二項是IP,倒數第一項是郵箱,你們要刷票,攔都攔不住呀呀呀呀呀呀!!!!!
看看這些時間的間隔,看看這些IP的地址,哎,再看看郵箱,全163的,再也不愛了。
再來看看這些軟體,有圖有真相:
還有神馬人工輸入驗證碼的,自動輸入驗證碼的,哎,被秒殺了瞬間。。。。
繼上篇刷票風雲的隨筆之後,我還是決定用每個學生登入教務處的密碼嘗試一下,雖然這個我在開學的時候做微信開發的時候弄過。
首先要做的是登入學校教務處網站,然後開啟sharkwire,取得傳過去的資訊,這些圖我就明天上傳補上,現在是用的同學電腦。
獲取到傳過去的資料之後,我們就可以copy一下,用curl這個PHP中的API,創造個cookie傳過去。
//第一步:提交資料,生成cookie,將cookie儲存在臨時目錄下 //在指定目錄中建立一個具有唯一檔名的檔案。如果該目錄不存在,tempnam() 會在系統臨時目錄中生成一個檔案,並返回其檔名 $cookie_file=tempnam('./temp','cookie'); $ch=curl_init(); $login_url="網址"; $curlPost="uname=賬號&upwd=密碼&usertypex=%B9%DC%C0%ED%D4%B1"; curl_setopt($ch,CURLOPT_URL,$login_url); //啟用時會將標頭檔案的資訊作為資料流輸出 curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MS IE 9.0; Windows NT 6.1; WOW 64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.0.30729; BRI/2; MASM; .NET4.0C; .NET4.0E; InfoPath.3; Media Center PC 6.0; SE 2.X MeTaSr 1.0)'); curl_setopt($ch,CURLOPT_HEADER,true); curl_setopt($ch,CURLOPT_MAXREDIRS,1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost); //設定連線結束後儲存cookie資訊的檔案 curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); $content_login=curl_exec($ch); //print_r($content_login); var_dump($cookie_file); curl_close($ch);
測試什麼都沒有顯示,因為:
$content_login=curl_exec($ch);
//print_r($content_login);
後面會解釋,繼續:
$ch2=curl_init(); $login_url2=網址2"; curl_setopt($ch2,CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MS IE 9.0; Windows NT 6.1; WOW 64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.0.30729; BRI/2; MASM; .NET4.0C; .NET4.0E; InfoPath.3; Media Center PC 6.0; SE 2.X MeTaSr 1.0)'); curl_setopt($ch2,CURLOPT_HEADER,0); curl_setopt($ch2,CURLOPT_URL,$login_url2); curl_setopt($ch2,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch2,CURLOPT_CONNECTTIMEOUT,120); curl_setopt($ch2,CURLOPT_AUTOREFERER,1); curl_setopt($ch2,CURLOPT_POST,1); curl_setopt($ch2,CURLOPT_POSTFIELDS,$curlPost); curl_setopt($ch2,CURLOPT_REFERER,"來源"); //設定連線結束後儲存cookie資訊的檔案 curl_setopt($ch2,CURLOPT_COOKIEFILE,$cookie_file); $content_login=curl_exec($ch2); //$content_login='1'; print_r($content_login); //curl_exec($ch); curl_close($ch2);
在這裡,用到的是同一個cookie,這樣伺服器就可以直接識別了。
$content_login=curl_exec($ch2);
這是獲取到網頁上的內容。
print_r($content_login);
這是將獲取到的內容打印出來,如果你細心,你可以發現前面有:
$content_login='1';
這麼一句話被我註釋掉了,這是我檢測是否能修改資料用的,當初在獲取課表的時候就不能修改獲得的資料,也不知道是為何,但是在這裡可以。
如果賬號密碼錯了,就會按網站那樣彈出個對話方塊顯示賬號密碼錯誤,這樣,只要再資料表裡面再新增一項student_id便可以了,一個賬號只能用一次。
真心希望這次能真正的制止住刷票,我已經心疲力盡了。
也謝謝網友們,蘑菇街的驗證碼真心好,我也弄出來了,明天與大家分享,但是刷票器有個功能是手工輸入驗證碼,這又沒轍了,所以放棄驗證碼了。
我要被那些人罵死了。