python实现易校园自动打卡教程
准备
软件版本(请自行百度)
HttpCanary:v9.9.9.9安卓版
可以用burpsuite,findler等其他的Windows抓包软件代替,自行搜索如何用电脑抓手机的包。
易校园:v2.5.9
易校园一定要使用低版本的!!!可以去豌豆荚下载历史版本,找到2开头的最后一个版本就行。
最新版用了ssl pining,抓https的包很麻烦!
http Canary配置
打开http canary,界面如图
按照提示安装证书
部分手机可能无法自动弹出安装,比如我的手机。。。。参考以下步骤:
1、点击左上方菜单
2、点击【设置】
3、点击【SSL证书设置】
4、点击【导出HttpCanary根证书】
5、选择第二个
6、安装刚刚导出的证书
开始
-
完场上述准备工作
-
进入易校园打卡界面,等待定位完成,划到底部【先不要提交】
这样做是为了快速找到提交的包
-
此时打开HttpCanary,点击右下角的小飞机,开始抓包
-
回到易校园,点击提交
-
回到HttpCanary,再次点击右下角小飞机,停止抓包
-
从下往上找出【POST https://h5.xiaofubao.com/marketing/health/doDetail】
注意别找错了,一定是doDetail
-
找到之后点进去,点击请求包
-
点击预览,里面的数据就是你刚才打卡提交的数据,如下图(我的易校园又被强制更新了,抓不了包了,没有源数据包的截图,将就着看吧)
-
代码如下,修改填入你自己的参数
import requests from requests.api import head import yagmail def eMail(email_to, email_title, email_content): # 邮件用户 mail_user = '你的邮箱' # 授权码 mail_key = '授权码' # smtp服务器 mail_host = 'smtp.qq.com' try: mail_server = yagmail.SMTP( user=mail_user, password=mail_key, host=mail_host) mail_server.send(email_to, email_title, email_content, attachments=None) mail_server.close() return True except Exception as e: print(e) return False def DoDetail(json): # 输入打卡信息 data = json # 添加打卡信息 data['address'] = '根据左边的变量名,去数据包找相同的参数' # 填写Tokan信息 data['uuToken'] = '同上' # 填写Userid data['loginUserId'] = '同上' # 填写学校id data['loginSchoolCode'] = '同上' # 填写学校名称 data['loginSchoolName'] = '同上' # 填写体温信息 data['temperature'] = '36.3' # 填写打卡地址 data['longitudeAndLatitude'] = '同上' # 填写打卡地址 data['locationInfo'] = '同上' requests.packages.urllib3.disable_warnings() # 请求易校园接口 response = requests.post( "https://h5.xiaofubao.com/marketing/health/doDetail", headers=headers, data=data, verify=False) return response.json() # 获取userid def GetDetail(userid): data1 = {'userId': userid} requests.packages.urllib3.disable_warnings() response = requests.post( "https://h5.xiaofubao.com/marketing/health/getDetail", headers=headers, data=data1, verify=False) return response.json() # 伪造请求头 if __name__ == '__main__': headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/98.0.4758.101 Mobile Safari/537.36 Html5Plus/1.0 (Immersed/34.909092) ZJYXYwebviewbroswer ZJYXYAndroid tourCustomer /yunmaapp.NET/2.5.9/c9dcace70d408476', 'Cookie': 'shiroJID=be09980c-ace6-4350-ba63-38f441029802'} # 填写Userid json = GetDetail('填写你的Userid') if(json['success'] == True): json = DoDetail(json['data']) print(json) if(json['success'] == True): eMail(email_to='填写你的邮箱', email_title='健康打卡成功!', email_content=str(json)) print('成功') else: eMail(email_to='jenchoi413@qq.com', email_title='健康打卡失败!', email_content=str(json)) print('失败')
- 调试代码没问题之后,把代码挂到云服务器上,设置定时任务即可
来源:slipperJ