python寫乙個搶研討間的指令碼

2021-10-11 21:36:29 字數 3900 閱讀 2642

最近嘗試了圖書館的研討間以後覺得實在是太香了,既可以滿足我的學習效率要求,又能讓我沒有一種被大家盯著的感覺,但是就是因為太香,所以特別難搶,我們設定晚上九點開搶,之前因為手速不太夠,沒搶到,所以想著寫個指令碼,直接一鍵搶,舒服

首先使用指令碼來實現搶座(暫且這麼稱呼),其實就是以自己組裝報文以欺騙瀏覽器以為是正常訪問操作,所幸python為我們提供了相關的庫

首先我們有乙個登入函式(實際上我推薦自己先登入著,這樣能簡單很多)我們其實可以開啟瀏覽器的開發者工具,在進行登入操作以後,可以在其中的network欄看到自己傳送的請求,點開紅色方框標記的請求報文,可以看到request headers,將其中的引數複製設定為自己的login_header

# 登入函式

deflogin

(user_id, passwd)

:"""

用來模擬使用者的登入行為,目前還無法自主識別驗證碼,需使用者自己登入

:param user_id: 使用者登入時的 id

:param passwd: 使用者登入時的 password

:return: 返回建立好的連線

"""login_header =

# 要登入的**

login_url =

'*********************'

# 建立session就是建立連線並保持,這樣cookie可以持續用

spider = requests.session(

) request = spider.get(url=login_url, headers=login_header)

# 返回登入成功的例項

return spider

然後我們將其中的cookie複製以後儲存好,這樣等會預訂的時候直接用。我們再在瀏覽器中預約個房間試試,並再次檢視此時的request headers,然後寫乙個預約函式模擬使用者的預約行為:

import json

# 預約函式

defsubscribe

(spider, start_time, end_time)

:"""

用來模擬使用者預約行為的函式

:param spider: 之前登入時建立的連線

:param start_time: 要預約的開始時間,格式為2000-01-01 08:30

:param end_time: 要預約的結束時間,格式為2000-01-01 12:30

:return: 返回的是預約結果

"""sub_header =

sub_params =

# 預約時的**

sub_url =

'******************xx'

request = spider.get(url=sub_url, headers=sub_header, params=sub_params)

print

(request.text)

response = json.loads(request.text)

msg = response[

'msg'

]if msg ==

'操作成功!'

:print

('success'

)return

1else

:print

('fail'

)return

2

然後就是我們的主函式

from datetime import datetime, date, timedelta

defmain()

:# 要登入的**

url =

"***************************"

begin_time1 =

'08:00'

end_time1 =

'12:00'

begin_time2 =

'14:00'

end_time2 =

'18:00'

# stu_id = input("請輸入您的學號:")

stu_id =

'******'

# stu_passwd = input("請輸入您的密碼:")

stu_passwd =

'******'

# 先獲取日期,我們是預約後天的

after_tomorrow = date.isoformat(date.today(

)+ timedelta(days=2)

)# 如果到點了就開始搶座

while

true

:if date.isoformat(date.today(

)+ timedelta(days=2)

)== after_tomorrow:

stu = login(stu_id, stu_passwd)

start_time1 = after_tomorrow +

' '+ begin_time1

start_time2 = after_tomorrow +

' '+ begin_time2

finish_time1 = after_tomorrow +

' '+ end_time1

finish_time2 = after_tomorrow +

' '+ end_time2

while

true

:print

('現在開始預約'

+str

(after_tomorrow)

+' '

+ begin_time1 +

'-'+ end_time1)

result1 = subscribe(stu, start_time1, finish_time1)

if result1 ==1:

# 第乙個時間段預約成功

print

('已經預約成功,請重新整理檢視'

)break

elif result1 ==2:

# 被預約,搶下乙個 room 的座位

room =

str(

int(room)-1

)continue

else

:continue

while

true

:print

('現在開始預約'

+str

(after_tomorrow)

+' '

+ begin_time2 +

'-'+ end_time2)

result1 = subscribe(stu, start_time2, finish_time2)

if result1 ==1:

# 第二個時間段預約成功

print

('已經預約成功,請重新整理檢視'

)break

elif result1 ==2:

# 被預約,搶下乙個 room 的座位

room =

str(

int(room)-1

)continue

else

:continue

else

:print

("還沒到時間呢。"

)return

if __name__ ==

"__main__"

: main(

)

當然了,在我琢磨這個指令碼怎麼寫的時候我是非常痛苦的,覺得為什麼不能給我乙份**直接執行呢?但是當我琢磨完了以後,我覺得,還是大家自己琢磨琢磨更好,而且教大家用指令碼去搶研討間多少也有點不太好。

python寫乙個服務 Python寫乙個服務

coding utf 8 import json from urllib.parse import parse qs from wsgiref.server import make server 定義函式,引數是函式的兩個引數,都是python本身定義的,預設就行了。定義檔案請求的型別和當前請求成功...

python寫乙個incaseformat檢測工具

1.13日爆發的incaseformat病毒會在對應的系統時間觸發攻擊行為,能在短時間內刪除除了系統盤之外的所有檔案。據研究人員稱該病毒會在1.23再次爆發,小r根據該病毒生成特點製作了乙個簡單的檢測工具。程式設計環境 python3.7 from tkinter import import os....

手把手教你寫乙個搶講座的指令碼

利用js指令碼來幫你搶到乙個表單提交型別的各種活動,這裡以講座為例 註冊乙個麥克表單 建立乙個自己的表單 首先自己提交乙個表單,同時開啟f12中的network,看一看自己提交的東西包含了什麼。比如這裡我們發現了d這個物件 之後我們嘗試著按照它這種格式,自己提交一下,看看能不能成功。這裡我選用了re...