模擬登入學校教務網 獲取課程表資訊

2021-07-12 05:18:46 字數 2354 閱讀 9849

最終效果:

第一步:使用 httpwatch 對教務網抓包 使用volley框架和httpurlconnection 獲取課程表資訊

獲取cookie

之前自己在寫模擬登入學校教務網資訊的時候,找了一下部落格上的前輩們的文章。 很多文章上寫的cookie是在post登入訊息的時候伺服器返回的,可是根據我自己的抓包情況我發現我的cookie是在進入教務網登入頁面的時候 伺服器就返回了的(所以大家還是要以自己的抓包情況來分析)。 在圖中我用紅色框框標出了 set-cookie ,它的值就是我們後面傳送請求需要的cookie了(獲取cookie這個很重要)。

使用 httpurlconnection 將學生的登入資訊(學號,密碼,驗證碼)post 給教務網系統

抓包截圖:

個人認為post是整個功能中實現最困難的一步

寫post的時候要特別注意的幾個問題:

注意1:重定向問題 要post的時候要設定重定向為false

之前一直習慣用volley框架,可是volley設定重定向的時候沒有直接的方法,最後果斷選擇httpurlconnection

postcon.setinstancefollowredirects(false);
注意2:當寫post引數的時候注意編碼問題,因為正方教務網的編碼用的是gb2312的,那麼我們在post的時候要將所有引數轉換為gbk(gb2312),

__viewstate和_viewstategenerator引數的內容,你可以通過解析原始碼後達到。

string postdata = "__viewstate=" + urlencoder.encode(__viewstate, "gbk") + "&__viewstategenerator=" + __viewstategenerator + "&textbox1=" + account.gettext().tostring() + "&textbox2=" + password.gettext().tostring() + "&textbox3=" + checkcode + "&radiobuttonlist1=" + urlencoder.encode("學生", "gbk") + "&button1="

;

注意3: post請求頭:要將上面獲取的那個cookie寫入(這樣才能讓伺服器知道是同乙個使用者在訪問伺服器  還有 referer 這個也很重要  不能忘)
postcon.setrequestproperty("cookie", cookiestring);

postcon.setrequestproperty("referer", mainurl);

到這裡 post請求就已經寫好了 如果在伺服器返回的頭資訊中能夠拿到location的話 就說明你已經登入成功了 ,如果未拿到正確的location資訊,請檢查一下 我上面說的幾點注意 你是否做好。

登入成功之後, 獲取課程表資訊

根據你的抓包結果 向正確的url傳送get請求 (還是要帶上之前獲取的cookie) 就可以獲取正確的課程表網頁的原始碼了,因為根據我抓包的情況來看我不需要設定重定向,那肯定就使用volley框架了。

// 獲取課表的網頁資訊

private

void

getcourse(string name, string number)

}, new response.errorlistener()

}) };

} catch (unsupportedencodingexception e)

courserequest.settag("courserequest");

requestqueue.add(courserequest);

傳送請求的時候會有乙個姓名的引數要放在url中 這個引數也是可以通過解析之前post請求成功後返回的網頁原始碼得到的。

模擬登入教務處 header

import htmlparser import urlparse import urllib import urllib2 import cookielib import string import re 登入的主頁面 hosturl 自己填寫 post資料接收和處理的頁面 我們要向這個頁面傳送我...

訊號與系統課程向學校教務科需要提交的資料

根據教育效能公式清華大學第三批標桿課程評比結果評比結果,訊號與系統分析課程被列為第三批清華大學標桿課程。根據學校教務科 chenyujie 的要求,需要將以下材料傳送到 chenyujie tsinghua.edu.cn。1 課程簡介 200字左右 2 教師介紹 100字左右 3 教師 課堂 各一張...

PHP獲取Cookie模擬登入

一 定義cookie儲存路徑 必須使用絕對路徑 cookie jar dirname file pic.cookie 二 獲取cookie 將cookie存入檔案 url ch curl init curl setopt ch,curlopt url,url curl setopt ch,curlo...