偶然看到一个同事设置闹钟,提醒本身下班打开。就突发奇想,既然身为后台开发是否是能够用程序来实现自动打卡的功能呢? 因而开起来fiddler进行抓包,发现设置代理,云之家没法进行签到功能。既然电脑没法进行代理,那我直接在手机上开启个代理应用进行抓包不就好了么?vue
最后抓到的结果签到接口java
分析下接口python
www.yunzhijia.com
/attendance-signapi/signservice/sign/signIn h2
POST
lng=纬度&lat=精度&bssid=&configId=配置ID&networkId=网络ID&userId=用户ID&ssid=
试着请求了一下 ios
试了一下将获取的接口直接请求,云之家并无对token的时间进行限制,因此拿到请求参数后能够直接撸代码了。 考虑了一下java代码的繁重,最后决定用python来完成自动签到的功能。 原本还用vue+axios写了一个网页版,可是后面发现axios老是会发送一个option请求致使返回错误,最后就没有去实现了。json
python主要用到了三个库:axios
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