最近出来实习一直在忙公司的事情。学校那边说,为了我们的安全让每天签到。那个app叫蘑菇丁。不知道大🔥用过没,貌似很小众。以前的脚本写的惨不忍睹,近期看到国光哥的 Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)发现脚本可以用钉钉通知涨姿势了。还发现Github 自带的 Actions 可以定时执行脚本,正好vps要到期了。。。。所以就改造了下自己的脚本。
点击头像进入详情,自定义机器人。这时候需要创建一个群组
创建后会得到一个webhook地址
https://oapi.dingtalk.com/robot/send?access_token=xxx
最后测试下 机器人这里有一份官方文档 通俗易懂 官方文档
测试脚本如下
import requests
import json
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
#xxx替换成自己机器人的token
headers = {
"Content-Type" : "application/json",
"Charset" : "UTF-8"
}
message = {
"msgtype": "text",
"text": {
"content": "通知: 我就是我, 是不一样的烟火" #机器人发送内容 创建机器人时自定义关键词是什么前面就必须以什么开头
},
"at": {
"atMobiles": [
"187xxxxxxxx" #发送内容时艾特187xxx的手机号
],
"isAtAll": False #是否艾特全体这里选择否
}
}
r = requests.post(url=webhook,headers=headers,data=json.dumps(message))
print(r.text)
import requests
import json
from requests.exceptions import RequestException
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
def main():
url = "https://api.moguding.net:9000/attendence/clock/v1/save"
headers = {
"Accept-Language": "zh-CN,zh;q=0.8",
"User-Agent": "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; vivo Y29L Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
"Authorization": "", #蘑菇丁以Authorization判断身份替换成自己的即可
"roleKey": "student",
"Content-Type": "application/json; charset=UTF-8",
"Content-Length": "278",
"Host": "api.moguding.net:9000",
"Connection": "close",
"Accept-Encoding": "gzip, deflate",
"Cache-Control": "no-cache"
}
data = {
"address":"中国xx省xxx市xx县",
"description":"",
"device":"Android",
"province":"xx省",
"longitude":"119.177366",
"planId":"9b8a39ffc732b7097efe1c039b1ccb73",
"latitude":"39.703911",
"type":"START",
"city":"xx市",
"country":"中国"
}
try:
req = requests.session()
msg = req.post(url=url,headers=headers,data=json.dumps(data))
txt = json.loads(msg.text)
#print(type(txt))
#print(txt)
if txt.get('msg') == 'success': #txt.keys()拿到字典所有键值 判断键值里是否存在msg
dingd('蘑菇丁自动签到成功')
else:
dingd('蘑菇丁自动签到失败')
except RequestException:
dingd('蘑菇丁签到脚本出错请立即查看')
def dingd(error):
"钉钉通知函数"
webhook_url = webhook
dingd_headers = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
dingd_message = {
"msgtype": "text",
"text": {
"content": f"通知: {error}"
},
"at": {
"atMobiles": [
"187xxxxxxxx"
],
"isAtAll": False
}
}
r = requests.post(url=webhook_url,headers=dingd_headers,data=json.dumps(dingd_message))
if __name__ == "__main__":
main()
运行后发现蘑菇丁脚本接入钉钉成功。
这里国光哥的文章里没有太详细一笔带过了。
这里我简单说下。
需要在GitHub里先建立一个仓库把我们的签到脚本推上去。
后我们点击Actions
选择Python后会新建一个python-package.yml
文件修改内容如下
schedule:
- cron: '0 1 * * *'
是时间设置 这里设置的是1点(国际标准时间)因为我们是东八区所以相差八个小时1点就是北京时间的9点 地理知识。
- name: Install dependencies
run:
pip install requests
是需要安装的依赖 因为我用到的第三方库只有requests所以只写着一个
- name: Test with pytest
run: |
python moguding2.0.py
执行的脚本名。(推到GitHub上的那个脚本名)
最后查看发现状态是成功的 经测试到达指定时间也会自动签到成功。
这就不用担心vps到期了。
因为一些原因仓库是私有的,脚本在文章上面已经贴出来了,需要的小伙伴稍稍修改就好。等帮忙这一阵子,再优化一下脚本在发出来。。。。