要手动打卡,最简单的是关上页面预测允诺,接着他们用JAVA与此同时实现允诺的手动化。但辨认出食行没页面,多于 APP,这并非两个坏消息,这意味著须要Tourbe处置了。
有须要Python自学数据资料的爸爸妈妈吗?小贴士重新整理【两套Python数据资料、源代码和PDF】,钟爱者能高度关注小张晓鸣朋友圈自学数据资料(是高度关注后朋友圈哦)再说很忙也是很忙呢,比不上学点小东西啦
上面的操作方式就要算了,在笔记本电脑端应用程序关上邮箱,挪动 F12,已经开始降落~
登入预测
点选打卡后,会重定向到使用者登入页面,输出登入重要信息后,点选登入,与此同时高度关注合作开发增容栏的互联网可视化重要信息。
能辨认出,因此会在允诺时带着登入重要信息:
{
“SourceType”: “9”,
“Phone”: “18800000000”,
“PassWord”: “98a53578bd74e150”,
“ZhuGeDeviceMd5”: “164edd53b71674-02922cef4808a-47e1039-e1000-164edd53b7222e”,
“DeviceId”: “”
}
那时,还难以确认什么样表头是关主的,什么样是能TDATE2007的。
有两个难题是,公钥是历经身份验证的,我在页面输出的 000000 ,这里变成了 98a53578bd74e150。这里我找了半天是如何身份验证的,也没找出,若是有大神有办法,还请留言告知!
但说实话,身份验证方式是固定的,也就是 000000 一直对应的是 98a53578bd74e150,他们只要记下这个身份验证后的公钥,在登入时,传入后台即可。
登入成功后,允诺会响应一些 token 数据:
{
“Error”: 0,
“Message”: “返回正确”,
“Data”: {
“CustomerGuid”: “d8cd7c84-xxxx-4369-xxxx-b1e86c027407”,
“Phone”: “18800000000”,
“AccessToken”: “73c7b5fxxxxxxx”
}
}
只要 Error 表头为 0,就代表登入成功!
打卡预测
登入成功后,页面会手动重定向到首页,他们能看到打卡图标,点选它,进入打卡页面:
辨认出进来还是两个打卡按钮,套娃啊!再点它!
终于打卡成功!
辨认出打卡的允诺
打卡允诺中有两个重要的参数,accesstoken 和 customerguid,这两个参数就是登陆后返回的。
打卡允诺响应:
{
“Error”: 0,
“Message”: “返回正确”,
“Data”: {
“GetPoints”: 5,
“SumGetPoints”: 840
}
}
返回说这次打卡获得了 5 个点数,其实连续打卡 4 天后,每天就能获得 20 点数了!
与此同时实现
通过上面的预测,他们的打卡流程也很清晰了,首先就是登陆获取 accesstoken 和 customerguid,接着再去打卡就能了!
import requests, json, sys
def 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 查看允诺获取到,接着记下来。
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!