PHP如何模擬登錄學校個人門戶?

https://sso.ctgu.edu.cn:7002/cas/login?service=http%3A%2F%2Fportal.ctgu.edu.cn%2Fportal%2Findex.jsp

用戶名:2010138112
密碼:15872474165

如題所示,模擬登錄獲取個人信息。求高手給出源代碼


瀉藥
建議連同酬勞一併寫入提問當中。


之前寫過一個,基本上和你的需求是一樣的,給你參考自己寫吧。

Crawl/identifyCode at master · Tairy/Crawl · GitHub

這種模擬登陸其實很簡單,php的話主要用curl來實現。仔細研究一下你要抓的站具體是怎麼實現用戶登錄的,可以用wireshark或者burpsuite(建議用後者)抓包看看整個過程都有那幾次請求,每次請求都發送了哪些數據,構造好發給他就可以實現登錄了。

之後獲取個人信息就很容易了,找找php解析html庫,或者最簡單粗暴的就是字元串截取函數加正則表達式,把你想要的數據提取出來就好了。

對於你給出的這種驗證碼屬於非常容易識別的驗證碼了,基本的識別原理參看使用Canvas進行驗證碼識別。

當然比較蛋疼的問題就是網頁編碼問題,經常爬過來全是亂碼,網上找找看轉碼的方法,都試一下,這是一門玄學,能不能成功看你人品和耐心吧。

我這個repo裡面基本上實現了上面的一套流程,你可以參照著寫吧!

最後還想說的是,爬站還是用python吧,request+beautifulsoup不是一般的好用。做這個php真不擅長。雖然我依然認為php是世界上最好的語言!!!(如果你想用python或者其他的寫的話看看我這個repo裡面的其他目錄,我在readme裡面寫清楚的)。


之前寫過一個模擬登錄我們學校門戶網站的PHP程序,當時主要是為了抓取學生成績信息計算出學分積,而且我們的門戶網站沒有驗證密碼,所以就簡單了很多,鑒於你這個有驗證碼,就會涉及到圖片驗證碼的識別,這個恐怕你得找個識別率高的識別演算法才能搞定了,我就簡單說下模擬登錄的步驟,分析下你們那個網頁的登錄過程,找到登錄時的表單,然後把帳號,密碼和驗證碼參數都填好提交表單,然後一步一步分析登錄過程,一般都會跳轉好幾次,還有可能是跨域名的跳轉,所以最好每次都更新下cookie,直到轉到有需要信息的頁面,後面每次get頁面時記得帶上cookie就好...


使用 firefox,chrome,safari 之類的主流瀏覽器看一下請求頭。
然後用 php 的 curl 模擬請求。
curl_setopt($ch, CURLOPT_HTTPHEADER, $HttpHeaderArray);


curl,搞個cookie,設置下瀏覽器標識,還有什麼referer,你的問題聽起來沒多難,寫起來不知道那個網站防止自動登陸的代碼到底怎樣,要一個一個試,尤其是一些ajax操作,參數裹在一堆js里,少傳一個參數給你一個error,說到底是個體力活。


戳開後發現有驗證碼,好吧… 你要多加一步驗證碼識別的模塊,然後全部post到介面就應該能行了


簡單的辦法是用curl,不會先百度一下吧,一個晚上怎麼都搞清楚了。然後先用瀏覽器抓包分析下,搞清楚request和response,然後就可以寫代碼去實現了。驗證碼能寫出識別演算法就寫吧,寫不出來就把驗證碼抓下來手填吧=_=


推薦閱讀:

新人剛接觸 PHP,哪種框架比較容易上手?
PHP 的哪個 MVC 框架值得推薦?
YII 框架的優點有哪些?
怎麼在網上找到簡單的 PHP 實例?
如何從頭開始學習 PHP?看教程,從 WordPress 入手怎麼樣?

TAG:PHP | PHP框架 | PHP程序員 | PHP學習 | 模擬登錄 |