我司使用的打卡软件是我人的事,不过我这记性,经常漏了打卡签退,定了闹钟都会忘,今天又被老大屌了。于是准备抓一下签到接口,利用crontab来实现自动签到签退。
这里使用的是小提琴手进行抓包,提琴手是一个HTTP调试代理工具,以代理服务器的形式实现对网络数据流的监听。之所以没有用Wireshark,一是因为我不是很熟悉Wireshark的筛选器,二是因为本文使用模拟器(手机应用后台流量多,不便于分析)来抓包,代理服务器方式更方便。
安装提琴手
先安装提琴手(官网地址),安装完成之后需要安装fiddlercertmaker证书生成工具(官网地址)
如图,打开提琴手,工具选择提琴手选项,将图中所标识地方勾选、配置后点击好保存并重启
提琴手强>
<强>模拟器签到强>
将模拟器的模拟定位定位到需要打卡的位置,打开我人事,点击考勤打卡,打卡签到,这时候在提琴手中会出现一条监听到的请求,双击打开,如图所示,
#?usr/bin/env python3 # www.iots.vip # Alliot # 2020-1-8 进口的要求 进口json 进口smtplib 从email.mime。文本导入MIMEText 从电子邮件。进口formataddr跑龙套 从时间进口strftime,本地时间 #忽略请求请求认证警告 requests.packages.urllib3.disable_warnings () #邮件设置 服务器=' smtp.163.com ' 端口=' 25 ' 发送方='发件人邮箱” passwd='密码(授权码)” 接收机='收件人” #我人事签到接口地址 url=" https://www.ihr360.com/gateway/attendance/aggregate/attendance/api/sign/doSign " #抓包签到请求头 headersValue=https://www.yisu.com/zixun/{“饼干”:“会话=XXXXXXXXXXXXXX;路径=/;HttpOnly’, “接受”:“application/json; charset=utf - 8”, “appKey”:“com.irenshi.personneltreasure”, “appVersion”:“XXXX”, “osVersion”:“XXXX”, “范围”:“XXXXXX”, “用户代理”:“IRENSHI_APP_AGENT”, “操作系统”:“安卓”, “irenshilocale”:“zh_CN”, “内容类型”:“application/json;charset=utf - 8 ', “内容长度”:“272”, “主机”:“www.ihr360.com”, “连接”:“保活”, “接受编码”:gzip, } #抓包请求json jsonValue=https://www.yisu.com/zixun/{“deviceToken”:“”, “deviceType”:“正常”, “人肉搜索”:XXX, “locationName”:“XXX”, “经度”:XXX, “phoneName”:“军情六处”, “signSource”:“应用程序”, “wifiMac”:“XXX”, :“wifiName Alliot”, } #签到方法 def建造(url、jsonValue headersValue): r=请求。帖子(url, json=jsonValue,头=headersValue验证=False) 全球的结果 结果=json.loads (r.text) print (strftime (“% Y - % m - H % d %: % m: % S”,作用是())) 返回结果 #邮件提醒方法 (def sendMail服务器,端口,发送方,passwd, msg): smtp=smtplib.SMTP () smtp。连接(服务器、端口) smtp。密码登录(发送方) smtp。sendmail(味精['从'],味精(','],msg.as_string ()) smtp.quit () 打印(“邮件发送成功电子邮件已经发送!”) def newMail(状态): 味精=MIMEText (str(结果),“普通”,“utf - 8”) 味精('从']=formataddr ([“AlliotSigner”,发送者]) 味精(',']=formataddr ([“Alliot接收机]) 如果状态==没有: 味精(“主题”)='打卡失败_ - !” 打印(“打卡失败”) 其他: 味精(“主题”)='自动打卡成功的 打印(“打卡成功”) sendMail(服务器、端口发送方,passwd,味精) #签到并邮件通知结果,不用通知则改为建造(url、jsonValue headersValue)即可 newMail(建造(url、jsonValue headersValue)(“数据”)) #建造(url、jsonValue headersValue)