国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 實現「食行生鮮」簽到領積分功能

2020-01-04 14:27:39
字體:
來源:轉載
供稿:網友

用過食行生鮮的同學應該知道,每天可以在食行生鮮簽到,簽到可以領到 20 積分,在購物時可以抵 2 毛錢。錢雖少,但是積少成多,買菜時可以抵扣一兩塊錢還是不錯的。

今天我們就用 Python 來實現自動簽到,省得我每天打開 APP 來操作了。

分析

要自動簽到,最簡單的是打開頁面分析請求,然后我們用腳本實現請求的自動化。但是發現食行沒有頁面,只有 APP,這不是一個好消息,這意味著需要抓包處理了。

不過還好,我們有微信。

在微信里面,我們發現也可以登錄食行,這時選擇在瀏覽器中打開頁面,~哎~ ,柳暗花明了,我們找到了一個可用的網頁地址:wechatx.34580.com

Python,食行生鮮,簽到,積分

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

登錄分析

點擊簽到后,會跳轉到用戶登錄頁面: https://wechatx.34580.com/mart/#/sign/in,輸入登錄信息后,點擊登錄,同時關注開發調試欄的網絡交互信息 。

Python,食行生鮮,簽到,積分

可以發現,登錄的請求地址是: https://wechatx.34580.com/sz/Sign/SignInV2,并且會在請求時帶著登錄信息 :

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

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

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

不過還好,加密方式是固定的,也就是 000000 一直對應的是 98a53578bd74e150,我們只要記下這個加密后的密碼,在登錄時,傳入后臺即可。

登錄成功后,請求會響應一些 token 數據:

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

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

簽到分析

登錄成功后,頁面會自動跳轉到首頁,我們可以看到簽到圖標,點擊它,進入簽到頁面:

Python,食行生鮮,簽到,積分

發現進來還是一個簽到按鈕,套娃啊!再點它!

終于簽到成功!

發現簽到的請求: https://wechatx.34580.com/sz/SignUp/CustomerSignUp

Python,食行生鮮,簽到,積分

簽到請求中有兩個重要的參數,accesstoken 和 customerguid,這兩個參數就是登陸后返回的。

簽到請求響應:

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

返回說這次簽到獲得了 5 個積分,其實連續簽到 4 天后,每天就可以獲得 20 積分了!

實現

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

import requests, json, sysdef login(Phone, PassWord):  url = "https://wechatx.34580.com/sz/Sign/SignInV2"  payload = {    'SourceType': 9,    'Phone': Phone,    'PassWord': PassWord  }  # 測試下來發現,連 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 中的傳入數據  response = requests.post(url, params=querystring)  data = json.loads(response.text)  is_error = data['Error']  if is_error:    print(data['Message'])  else:    print("簽到成功,獲取到 {} 個積分".format(data['Data']['GetPoints']))if __name__ == "__main__":  Phone = input('請輸入賬號:')  PassWord = input('請輸入密碼:')  customerguid, accesstoken = login(Phone.strip(), PassWord.strip())  signin(customerguid, accesstoken)

運行:

$ python shsx.py
請輸入賬號:188xxxxxxxx
請輸入密碼:98a53578bd74e150
登錄成功!
簽到成功,獲取到 20 個積分

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

總結

這里還有一個遺留問題,就是登錄密碼的獲取,現在還只能通過 F12 查看請求獲取到,然后記下來。

但是,登錄密碼是怎么加密的,由于本人 js 方面比較薄弱,有能力有興趣的同學要是能看出來可以留言分享下啊~

以上所述是小編給大家介紹的Python 實現「食行生鮮」簽到領積分功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄯善县| 当阳市| 荆州市| 莫力| 从化市| 绥芬河市| 高密市| 垣曲县| 绩溪县| 广东省| 东兰县| 江安县| 深水埗区| 宜宾县| 大厂| 汤原县| 马鞍山市| 那曲县| 临清市| 仁寿县| 丘北县| 元朗区| 汝阳县| 赣州市| 南丰县| 长汀县| 荆州市| 叶城县| 安义县| 象州县| 宣恩县| 始兴县| 博罗县| 汉中市| 调兵山市| 吴忠市| 黑水县| 高要市| 娱乐| 正蓝旗| 张家口市|