Python实现我人事自动打卡的示例代码

  

我司使用的打卡软件是我人的事,不过我这记性,经常漏了打卡签退,定了闹钟都会忘,今天又被老大屌了。于是准备抓一下签到接口,利用crontab来实现自动签到签退。

  

  

这里使用的是小提琴手进行抓包,提琴手是一个HTTP调试代理工具,以代理服务器的形式实现对网络数据流的监听。之所以没有用Wireshark,一是因为我不是很熟悉Wireshark的筛选器,二是因为本文使用模拟器(手机应用后台流量多,不便于分析)来抓包,代理服务器方式更方便。

  

安装提琴手   

先安装提琴手(官网地址),安装完成之后需要安装fiddlercertmaker证书生成工具(官网地址)

  

  

如图,打开提琴手,工具选择提琴手选项,将图中所标识地方勾选、配置后点击好保存并重启

提琴手   

 Python实现我人事自动打卡的示例代码”>,</p>
  <p>再次打开该选项卡,点击动作生成证书到桌面(文件名FiddlerRoot.cer) </p>
  <p> <img src=

  

<强>模拟器签到

  

将模拟器的模拟定位定位到需要打卡的位置,打开我人事,点击考勤打卡,打卡签到,这时候在提琴手中会出现一条监听到的请求,双击打开,如图所示,

  

 Python实现我人事自动打卡的示例代码”>,</p>
  <p>可以看的到,实际上打卡签到动作就是一条帖子请求。我们了解了这条帖子请求的基本内容后就可以利用Python的请求模块来模拟提交了。</p>
  <p> <强>模拟请求</强> </p>
  <p>模拟帖子请求很简单,这里就不多说,直接贴代码(很烂=?!能,用就行啦…勿喷…):</p>
  
  <pre类=   #?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)

Python实现我人事自动打卡的示例代码