Python實現雲之家自動簽到

原由

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

接口分析

最後抓到的結果簽到接口java

image

分析下接口python

  • 域名: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

試着請求了一下 ios

image

編碼

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

python主要用到了三個庫:axios

  • requests
  • json
  • apscheduler

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

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()

複製代碼

結尾

此代碼僅供學習用,我本身寫完這個代碼後也沒有用過,平時也是準點上下班,但願你們不要隨意使用,若有侵權問題請聯繫,隨時刪除。bash

相關文章
相關標籤/搜索