創作內容

0 GP

某大學選課系統用python搶課筆記

作者:AA│2022-09-15 21:17:53│巴幣:0│人氣:636

因為怕自己忘記同時也剛好有人問到 寫這篇算是記錄

假設你已經會登入了 登入後你會拿到一個回傳的東東
這個回傳的東東長這樣 裡面是沒有登入頁面的資料的
你要再對伺服器回傳的網址get一次 他才會回傳資料給你 然後瀏覽器再解析response裏頭的文本屬性 最後把選課的頁面渲染出來 這就是網站的重新導向
詳細可以看這篇
然後我也不知道這邊的guid有沒有hash 會不會有資安問題所以加減碼一下

反正程式碼大概長是這樣

為了知道在你按下加選的時候瀏覽器會傳什麼東西給伺服器 打開F12看一下
比較一下發現瀏覽器要求的URL其實就是原本伺服器回傳的網址在問號前面再加上'AddWithdraw.aspx'

然後再看一下承載裡面伺服器要求的資料
整理了一下發現有以下鍵值
然後經歷了多次登出登入加選退選後 發現ctl開頭key的value不會變化所以就不管他
裡頭會變化的有'__VIEWSTATE''__EVENTVALIDATION''__EVENTTARGET'

那這個'__VIEWSTATE''__EVENTVALIDATION'是啥呢
用ctrl+f 發現這兩個屬性原本就在html標籤裡 每次刷新頁面都會改變一次
查了一下google說是某種驗證機制 那我們就每次get或post的時候都對html抓取值並同步更改這兩個鍵值即可

最後是'__EVENTTARGET' 用鍵值去回查發現這就是加選按鈕的name
按鈕的name是ctl00$MainContent$TabContainer1$tabSelected$gvWishList$ctl02$btnAdd
假設願望清單有4個 後面幾個按鈕的name就依序是ctl04 ctl06 ctl08這樣

這邊有個坑 我在一開始的時候把ctl看成ct1 然後就想說幹怎麼post都沒反應 找了好久才發現這是L不是1= =

最後就把這些資料收集起來 包成一個dict跟header一起post出去
然後就可以用抓回來的東西去判斷 有沒有加選成功了
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5558698
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★zxcfgh 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:教你怎麼在簽名檔放會動的...

追蹤私訊切換新版閱覽

作品資料夾

a4755063全巴友
小說更新歡迎來寒舍參觀參觀看更多我要大聲說昨天17:49


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】