本帖最后由 吾爱Po解啊 于 2022-1-11 10:52 编辑
目的:利用Win10的任务计划和Python脚本实现蘑菇丁的自动签到
由于蘑菇丁只有app能签到,所以下面使用模拟器来进行分析
因为有个签到的数据ID无法确定是唯一的,大家还是学下怎么抓包吧​需要的工具和环境:
夜神模拟器(你有其它模拟器也行,下面一样的操作)
moguding app
Burp Site(抓包工具)
Java环境(这个和Burp Site配套的,如果你会用其他的抓包软件就不需要)
python环境
win10 的任务计划程序分析:1、设置好burpsite
不要设置环回地址,使用本机IP(我这里是192.168.136.1)端口就习惯8080吧
​2、打开模拟器
先设置虚拟定位,为了能在进蘑菇丁后准确定位到你实习的岗位(其它模拟器虚拟定位一样在窗口右边)
​
设置代{过}{滤}理
​
进入WLAN修改代{过}{滤}理IP(长按几秒就出来了)
​
勾上高级选项后选择手动,填写刚刚设置的代{过}{滤}理ip和端口号
​
保存后上百度测试
​
成功
3、抓包查看登陆信息
打开intercept准备抓包
​
打开moguding输入账号密码
登陆信息get!,还是明文传输​
​
记录好url、head头部和post数据,后面要用python实现脚本登陆
前面设置好虚拟定位后,在签到里再打一次你实习岗位的地址就能定位成功了(下面这张是旧的版本返回值)
​
同样记录下所有信息
2022/1/10更新:
这次主要对签到接口的更新,因为这软件最新版在请求头多了个sign参数校验,不过经测试后只要确定签到地址(后面不要变地址了),然后记录下上班和下班状态的sign就好,这样就是固定的
​
ok!下面就来实现自动登陆吧
​
python代码在文章最下面更新处:(写中文的地方都需要填上正确信息)
win10任务计划设置:
​
选择创建基本任务
​
随便取个名字后下一步
​
下一步
日期你今天签过了就选明天的吧,时间自己设置好,我这时早晨10点(确定这个时间电脑时开着的)
​
​
在浏览里找到你pythonw.exe(这是无窗口的Python可执行程序,跟python.exe在同一目录下的)的绝对路径
#找不到的就打开cmd 输入:where python就可以看到啦
接着把前缀剪切到起始于那(别问问就是好看)
当然你也可以不理
最后添加参数就是我们刚写好的python脚本的绝对路径啦(别问为什么我的不是,问就是演示懒得写)
!!!这些都需要填写绝对路径的,填错脚本就执行不了了
​
最后完成就ok啦
​
可以在任务计划程序库里查看状态
​
跟着配置完最好在第二天(任务计划设置的时间后)检查下是否正常签到成功噢!!!
-----------------------------------------------------------------------------------------------------------------------我是分割线---------------------------------------------------------------------------------------------------------------------------------------
2022/1/10更新
[Python] 纯文本查看 复制代码 import requests
import json
import time
signID={"START":你的START状态的Sign,"END":你的END状态的Sign}
def signIn(token,type,cookies):
url = 'https://api.moguding.net:9000/attendence/clock/v2/save'
headers = {
'sign': signID[type],
'Authorization': token,
'Content-Type': 'application/json; charset=UTF-8',
'Rolekey': 'student'
}
data_dict={
"device":"Android",
"address":实习的详细地址,
"description":"",
"longitude":上面地址的经度,
"latitude":上面地址的纬度,
"planId":抓签到包上显示的planID,
"type":tpye
}
response = requests.post(url,headers=headers,data=json.dumps(data_dict),cookies=cookies)
try:
if response.status_code==200:
pass
else:
with open('C:/Users/Administrator/Desktop/signlog.txt', 'a+') as f:
f.write(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())+'签到失败\n')
except Exception as e:
pass
def login(signIn_type):
login_data = {
"phone":登陆的电话,
"password":登陆的密码,
"uuid":"",
"loginType":"android"
}
url = 'https://api.moguding.net:9000/session/user/v1/login'
headers = {
'Content-Type':'application/json; charset=UTF-8',
'Authorization':"",
'Rolekey':""
}
response = requests.post(url,headers=headers,data=json.dumps(login_data))
cookies = requests.cookies.RequestsCookieJar()
cookies.update(response.cookies)
token = json.loads(response.text)['data']['token']
if token:
signIn(token,signIn_type,cookies)
try:
pass
except Exception as e:
if "connection" in str(e):
print('网络连接超时')
else:
print('账号或密码输入错误')
if __name__ == '__main__':
login("START")
time.sleep(15)
login("END")
代码出现中文报错就是你要更改的参数,内容记得用英文引号""括起来
例:"phone":登陆的电话-->"phone":"1000xxxxxxx"
OK后面应该不会在更新了,各位自行调试
看到有人问云函数的,后续可能会出个相关教程(..大概)反正没人看
​
对!转载记得标明出处啊wei(#`O′)!!
-----------------------------------------------------------------------------------------------------------------------我是分割线---------------------------------------------------------------------------------------------------------------------------------------
有不懂或者有问题的地方欢迎在下面评论,收到信息会及时更新回复的(...大概)​ |