运行日志(一些隐私信息用星号替代了):
START RequestId:72a1aa91-9182-452f-af03-f7184b1d3705 开始登录...Starting new HTTPS connection (1): api.moguding.net:9000 https://api.moguding.net:9000 "POST /session/user/v1/login HTTP/1.1" 200 None {"code":200,"msg":"success","data":{"userId":"103175987","phone":"************":0}} 获取打卡planID.... Starting new HTTPS connection (1): api.moguding.net:9000 ERROR RequestId:72a1aa91-9182-452f-af03-f7184b1d3705 Result:{"errorCode":-1,"errorMessage":"Invoking task timed out after 65 seconds","statusCode":433} END RequestId:72a1aa91-9182-452f-af03-f7184b1d3705 Report RequestId:72a1aa91-9182-452f-af03-f7184b1d3705 Duration:65000ms Memory:128MB MemUsage:16.113281MB
源代码:
import json
import requests
import hashlib
import urllib3
urllib3.disable_warnings()
phone="1*****6" #账号
password="AB***4f" #密码
country="中国" #国家
province="福建" #省
city="福州" #城市
address="福建省福州市闽侯县上街镇**********技术有限公司" #地址
latitude="26.041984" #纬度
longitude="119.218647" #经度
types="START" #类型,START和END,START上班,END下班
Login_Url='https://api.moguding.net:9000/session/user/v1/login'
planUrl = "https://api.moguding.net:9000/practice/plan/v3/getPlanByStu"
saveUrl = "https://api.moguding.net:9000/attendence/clock/v2/save"
salt="3478cbbc33f84bd00d75d7dfa69e0daa"
headers={
'Accept-Language':"zh-CN,zh;q=0.8",
'roleKey': '',
'Host':'api.moguding.net:9000',
"Content-Type": "application/json; charset=UTF-8",
"Cache-Control": "no-cache",
'User-Agent': 'Mozilla/5.0 (Linux; U; Android 11; zh-cn; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002) AppleWebKit/533.1 (KHTML, like Gecko) Version/5.0 Mobile Safari/533.1'
}
body = {
"country":country,
"address":address,
"province":province,
"city":city,
"latitude":latitude,
"description":"",
"type":types,
"device":"Android",
"longitude":longitude}
def GenerateSign(x):
a = x.encode('utf-8')
a = hashlib.md5(a).hexdigest()
# print(a)
return a
def login():
print("开始登录...")
global token,userId
data = {
"password": password,
"loginType": "android",
"uuid": "",
"phone": phone
}
req = requests.post(Login_Url,data=json.dumps(data),headers=headers,verify=False)
print(req.text)
token=json.loads(req.text)['data']['token']
userId=json.loads(req.text)['data']['userId']
def getPlanId():
login()
print("获取打卡planID....")
global planId
data = {"state": ""}
headers["Authorization"]=token
headers["sign"]=GenerateSign(userId+"student"+salt)
req = requests.post(planUrl,data=json.dumps(data),headers=headers)
req.headers.keys
planId=json.loads(req.text)['data'][0]['planId']
print("planId",planId)
def sendmsg(title, desp):
getdata = {
"corpid":"w*******52",
"corpsecret":"KZO*********dwipq8A"
}
geturl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?'
response = requests.get(geturl,params=getdata)
token1 = response.text[43:257]
postdata = {
"touser" : "@all",
"msgtype" : "mpnews",
"agentid" : 1000002,
"mpnews" : {
"articles":[
{
"title": title,
"thumb_media_id": "274PEX12hmtPibvSDBjGOvUzefZyIv90NzemHYosGZ9XF1gM1k9MIlHUgh57anM9B",
"author": "TONGTONG",
"content_source_url": "https://www.koikey.top",
"content": "使用**********实际打卡情况,顺便完成每周的实习周记。",
"digest": desp
}
]
},
"enable_duplicate_check": 0,
}
posturl='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='
response = requests.post(posturl+token1,data=json.dumps(postdata))
def main():
getPlanId()
print("开始打卡....")
body["planId"]=planId
headers["sign"]=GenerateSign(body["device"]+body["type"]+planId+userId+body["address"]+salt)
req = requests.post(saveUrl,data=json.dumps(body),headers=headers)
req_json=json.loads(req.text)
if(req_json["code"]==200):
print("打卡成功")
sendmsg("上班打卡成功:"+req_json["msg"],"\n打卡时间:"+req_json["data"]["createTime"])
else:
print("打卡失败")
sendmsg("上班打卡失败:"+req_json["msg"],"\n当前时间:"+req_json["data"]["createTime"])
main()
相似问题