Python實現雲之家自動簽到

起因

偶然看到一個同事設置鬧鐘,提醒自己下班打開。就突發奇想,既然身爲後臺開發是不是可以用程序來實現自動打卡的功能呢?
於是開起來fiddler進行抓包,發現設置代理,雲之家無法進行簽到功能。既然電腦無法進行代理,那我直接在手機上開啓個代理應用進行抓包不就行了麼?

接口分析

最後抓到的結果簽到接口

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qSQK83Y1-1573177393634)(https://github.com/w77996/BlogsImage/blob/master/python_yunzhijia/1565155502.jpg?raw=true)]

分析下接口

  • 域名:www.yunzhijia.com
  • 接口:/attendance-signapi/signservice/sign/signIn h2
  • 請求方式:POST
  • 請求參數
    lng=緯度&lat=精度&bssid=&configId=配置ID&networkId=網絡ID&userId=用戶ID&ssid=
  • 請求頭部
    1.user-agent
    2.opentoken
    3.authorization
    4.content-type
    5.accept-language

試着請求了一下
image

編碼

試了一下將獲取的接口直接請求,雲之家並沒有對token的時間進行限制,所以拿到請求參數後可以直接擼代碼了。
考慮了一下java代碼的繁重,最後決定用python來完成自動簽到的功能。
本來還用vue+axios寫了一個網頁版,但是後面發現axios總是會發送一個option請求導致返回錯誤,最後就沒有去實現了。

python主要用到了三個庫:

  • requests
  • json
  • apscheduler

apscheduler作爲定時器實現自動簽到的功能

import requests
import json
from apscheduler.schedulers.blocking import BlockingScheduler


# 簽到
def sign_in():
    url = " http://www.yunzhijia.com/attendance-signapi/signservice/sign/signIn?lng=&bssid=&configId=&networkId=&userId=&ssid=&lat="
    headers = {
        "user-agent": "",
        "opentoken": "",
        "authorization": "",
        "accept-language":"",
    }

    response = requests.post(url, headers=headers)
    print(response.text)
    response_json = json.loads(response.text)
    print(response_json['success'])



def job():
    sched = BlockingScheduler()
    sched.add_job(sign_in, 'cron', hour=18, minute=0)
    sched.add_job(sign_in, 'cron', hour=9, minute=0)
    sched.start()


if __name__ == '__main__':
    job()

結尾

此代碼僅供學習用,我自己寫完這個代碼後也沒有用過,平時也是準點上下班,希望大家不要隨意使用,如有侵權問題請聯繫,隨時刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章