提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助檔案
文章目錄
- 前言
- 一、準備作業
- 二、開始操作
- 1.進入第二課堂
- 2.大致思路
前言
第二課堂某某學習部分需要計時才能答題,不小心滑出界面就要重新計時,個人經常手滑,就想用python程式解決手誤重新計時帶來的苦惱,
一、準備作業
- fiddler(用來抓包)
- 電腦端微信(打開要抓包小程式)
二、開始操作
1.進入第二課堂
進入下圖界面,打開fiddler抓包,點擊網路學習:

fiddler抓包界面如下:

第7,8個都是一樣關于文章內容的包觀察其網址

大膽推測page/后面的一個數字是關于頁數的,為我們后來爬取做了鋪墊,
進入網路學習界面的社會責任感選項:

發現 文章所在的包 可以查看到文章對應的id=466428472206557184

微信點擊進入第一篇文章,抓到三個資料

第一個資料記錄著文章內容
第二個資料記錄著當前的分數
第三個資料記錄著問題和選項
我們所需要的正是第三個資料,如下圖,每個選項都對應一個問題id

回答問題只需post傳遞一個問題id即可,在post四次后可能會完成這個題(因為某些問題沒有正確答案…)
再觀察問題所在包的url,如下圖,是不是后面一大堆數字與前面文章的id一模一樣

是否我們可以讓程式自動解決這一切呢?不可能還打開抓包軟體去查看問題id再post過去
2.大致思路
- 爬取文章的id
- 利用文章的id獲取問題選項id
- 把所有問題選項id都post過去
部分代碼如下(爬取代碼):
def get_chapter(i):
url = 'page/'+str(i)+'/10'
da = '{"category":"","columnType":"0"}'
requests.packages.urllib3.disable_warnings()
re = requests.post(url,headers = headers,data = da,timeout = 10,verify=False)
return re.text
對得到的文本進行處理得到文章id
再利用文章的id獲取問題選項id的部分代碼如下
def judge(list3_key):
if list3_key == []:
print("本頁題目已完成")
sys.exit()
else:
ua = UserAgent().random
headers = {'Host': host,
'Connection': 'keep-alive',
'User-Agent': ua,
'content-type': 'application/json',
'key_session': student_id,
'Referer': referer,
'Accept-Encoding': 'gzip, deflate, br'
}
url = "questions/"+list3_key[0]
re = requests.get(url,headers = headers,timeout = 10,verify=False)
a = []
b = json.loads(re.text).get('data').get('questions')[0].get('id')
print(b)
for i in json.loads(re.text).get('data').get('questions')[0].get('optionList'):
a.append(i.get('id'))
return a,b
使用文章id來構成url,post上面獲得的四個問題選項id就可以解決問題了,部分代碼如下
url2 = "answer/"+b
d = 0
answer = ['A','B','C','D']
for i in db:
payload = '["'+i+'"]'
response = requests.request("POST", url2, headers=headers, data = payload,verify=False)
response.encoding = response.apparent_encoding
m = re.search(r"恭喜,獲得積分",response.text)
if m:
print(answer[d]+"正確\n""恭喜,獲得積分!\n")
destination = destination + 1
break
else:
print(answer[d]+"錯誤\n"+"答題失敗!")
d = d + 1
總結 碎碎念
1.本人只是俗人,并不能一眼看出來所抓的包是關于什么的,需要與打開的界面對比才行,
2.才開始也不知道問題id有用,我是先倒著進行的,先post問題選項id成功了,然后又想如何讓程式自動進行,發現網址并不是憑空產生的與前面的id有關系,慢慢的往前推進才明白的,
3.不學習成咸魚!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/264492.html
標籤:python
