PHP模擬登陸獲取成績資訊

2022-05-05 22:06:17 字數 2082 閱讀 3726

首先用wireshark抓包分析。在瀏覽器中進入西電研究生院的登陸頁面 抓包得到的結果如下:

1. 獲取cookie:

從圖中可以看到,此時已從伺服器那裡得到了cookie。我做了個測試,如果停留在這個頁面時間過長,cookie就會失效,此時即使輸入正確的使用者名稱和密碼,也不會正常登陸,而是出現以下情況:

或者

所以php模擬登陸第一步要做的就是訪問這個url並獲得cookie.根據抓包截圖,發現有host、user-agent、accept、accept-language、accept-encoding、connection、cookie這7個引數。其中設定user-agent的php語句為curl_setopt($ch, curlopt_useragent, 'mozilla/5.0 (windows nt 6.2; wow64; rv:19.0) gecko/20100101 firefox/19.0'),其他的暫時不會,就先不管了。所以目前語句是這樣的:

測試結果如下:

2. 驗證:

由圖中可以看到,這一步是要帶著剛才獲取到的cookie和自己的使用者名稱、密碼向 這個url post資料,其中curlopt_useragent設定為 'mozilla/5.0 (windows nt 6.2; wow64; rv:19.0) gecko/20100101 firefox/19.0',accept和accept-language、accept-encoding、connection、content-type、content-length應該不用管,cookie值就是剛在第一步中獲取到的,j_username和j_password則是需要使用者填寫的賬號和密碼,referer自己構造,**如下:

測試結果如下:

尼瑪啊,又是400號錯誤。索性之前做過c#模擬登陸,這一步也是400,但是對於最終獲取資料並無影響,先不管了。

3. 進入系統主頁:

**如下:

測試結果如下:

一開始我很疑惑,它不是應該把我主頁的資訊輸出嗎?後來想明白了,因為主頁是用frame實現的,自然沒辦法顯示詳細內容。

4. 獲取成績資訊

**如下:

測試結果如下:

bingo! 拿到了。雖然最終實現了抓取目的,但還是有很多地方想不透徹。比如說在通過j_security_check進行驗證的時候,用瀏覽器正常登陸的時候,向j_security_check post資料後返回資訊為:

標誌碼為302,可是php模擬登陸的時候,這一步的返回資訊為:

標誌碼為400,且提示「invalid direct reference to form login page」,為此我除錯了半天,後來拿出以前的c#版本發現它在這一步也是這麼個情況。難道模擬登陸時出現「invalid direct reference to form login page」都可以忽略嗎?求指點。

php模擬登陸,php模擬登陸的實現方法分析

php模擬登陸的實現方法,這裡分別列舉兩種方法實現模擬登陸人人網。具體例項 如下 1 使用snoopy模擬登陸 set time limit 0 require snoopy.class.php snoopy new snoopy snoopy referer snoopy agent mozill...

通過cookies資訊模擬登陸

1 import requests23 這個練習演示的是通過傳入cookie資訊模擬登陸,這樣操作的前提是需要預先在瀏覽器登陸賬戶抓包得到cookie欄位資訊 45 url 6 headers1 78 headers2 1011 cookie cookie字串 1213 這行 的解釋14 首先for...

模擬登陸 github模擬登陸,列印資訊流

目的 動態獲取cookie 1 開啟開發者工具,檢視各自請求 2 可以看到name為session的請求 方式post,傳入的data 3 檢視name為login的請求,原始碼中獲得token,作為上乙個請求中的data的一部分 檢視資訊流請求的url,自行構建對應的url,解析 1 這裡有個技巧...