溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能

發(fā)布時(shí)間:2021-04-09 12:40:32 來源:億速云 閱讀:471 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

要自動(dòng)簽到,最簡(jiǎn)單的是打開頁(yè)面分析請(qǐng)求,然后我們用腳本實(shí)現(xiàn)請(qǐng)求的自動(dòng)化。但是發(fā)現(xiàn)食行沒有頁(yè)面,只有 APP,這不是一個(gè)好消息,這意味著需要抓包處理了。

怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能

下面的操作就好辦了,在電腦端的瀏覽器打開網(wǎng)址,按下 F12,開始起飛~

登錄分析

點(diǎn)擊簽到后,會(huì)跳轉(zhuǎn)到用戶登錄頁(yè)面: https://wechatx.34580.com/mart/#/sign/in,輸入登錄信息后,點(diǎn)擊登錄,同時(shí)關(guān)注開發(fā)調(diào)試欄的網(wǎng)絡(luò)交互信息 。

怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能

可以發(fā)現(xiàn),登錄的請(qǐng)求地址是: https://wechatx.34580.com/sz/Sign/SignInV2,并且會(huì)在請(qǐng)求時(shí)帶著登錄信息 :

{
 "SourceType": "9",
 "Phone": "18800000000",
 "PassWord": "98a53578bd74e150",
 "ZhuGeDeviceMd5": "164edd53b71674-02922cef4808a-47e1039-e1000-164edd53b7222e",
 "DeviceId": ""
}

現(xiàn)在,還無法確定哪些字段是必填的,哪些是可以不傳的。

有一個(gè)問題是,密碼是經(jīng)過加密的,我在頁(yè)面輸入的 000000 ,這里變成了 98a53578bd74e150。這里我找了半天是如何加密的,也沒有找到,若是有大神有辦法,還請(qǐng)留言告知!

不過還好,加密方式是固定的,也就是 000000 一直對(duì)應(yīng)的是 98a53578bd74e150,我們只要記下這個(gè)加密后的密碼,在登錄時(shí),傳入后臺(tái)即可。

登錄成功后,請(qǐng)求會(huì)響應(yīng)一些 token 數(shù)據(jù):

{
 "Error": 0,
 "Message": "返回正確",
 "Data": {
 "CustomerGuid": "d8cd7c84-xxxx-4369-xxxx-b1e86c027407",
 "Phone": "18800000000",
 "AccessToken": "73c7b5fxxxxxxx"
 }
}

只要 Error 字段為 0,就代表登錄成功!

簽到分析

登錄成功后,頁(yè)面會(huì)自動(dòng)跳轉(zhuǎn)到首頁(yè),我們可以看到簽到圖標(biāo),點(diǎn)擊它,進(jìn)入簽到頁(yè)面:

怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能

發(fā)現(xiàn)進(jìn)來還是一個(gè)簽到按鈕,套娃??!再點(diǎn)它!

終于簽到成功!

發(fā)現(xiàn)簽到的請(qǐng)求: https://wechatx.34580.com/sz/SignUp/CustomerSignUp

怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能

簽到請(qǐng)求中有兩個(gè)重要的參數(shù),accesstoken 和 customerguid,這兩個(gè)參數(shù)就是登陸后返回的。

簽到請(qǐng)求響應(yīng):

{
 "Error": 0,
 "Message": "返回正確",
 "Data": {
 "GetPoints": 5,
 "SumGetPoints": 840
 }
}

返回說這次簽到獲得了 5 個(gè)積分,其實(shí)連續(xù)簽到 4 天后,每天就可以獲得 20 積分了!

實(shí)現(xiàn)

通過上面的分析,我們的簽到流程也很清晰了,首先就是登陸獲取 accesstoken 和 customerguid,然后再去簽到就可以了!

import requests, json, sys
def login(Phone, PassWord):
 url = "https://wechatx.34580.com/sz/Sign/SignInV2"
 payload = {
 'SourceType': 9,
 'Phone': Phone,
 'PassWord': PassWord
 }
 # 測(cè)試下來發(fā)現(xiàn),連 header 都不需要
 response = requests.post(url, data=json.dumps(payload))
 data = json.loads(response.text)
 is_error = data['Error']
 # 登錄失敗直接退出
 if is_error:
 print('登錄失?。簕}'.format(data['Message']))
 sys.exit(1)
 else:
 print('登錄成功!')
 return data['Data']['CustomerGuid'], data['Data']['AccessToken']
def signin(customerguid, accesstoken):
 url = "https://wechatx.34580.com/sz/SignUp/CustomerSignUp"
 querystring = {"accesstoken": accesstoken,
 "customerguid": customerguid, "sourcetype": "9"}
 # 這次不需要 body 中的傳入數(shù)據(jù)
 response = requests.post(url, params=querystring)
 data = json.loads(response.text)
 is_error = data['Error']
 if is_error:
 print(data['Message'])
 else:
 print("簽到成功,獲取到 {} 個(gè)積分".format(data['Data']['GetPoints']))
if __name__ == "__main__":
 Phone = input('請(qǐng)輸入賬號(hào):')
 PassWord = input('請(qǐng)輸入密碼:')
 customerguid, accesstoken = login(Phone.strip(), PassWord.strip())
 signin(customerguid, accesstoken)

運(yùn)行:

$ python shsx.py

請(qǐng)輸入賬號(hào):188xxxxxxxx
請(qǐng)輸入密碼:98a53578bd74e150
登錄成功!
簽到成功,獲取到 20 個(gè)積分

最后,怎么自動(dòng)執(zhí)行?把登錄信息寫死到代碼里,然后放到 Linux 下的 crontab 里,每天早上執(zhí)行一次就行啦~

感謝各位的閱讀!關(guān)于“怎么使用Python實(shí)現(xiàn)App自動(dòng)簽到領(lǐng)取積分功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI