前言

每天一大早就被测温员吵醒,睡不好觉,于是国庆的时候,朋友在网上找到了一个大佬的教程looyeagee并修改出了一个适合我们学校的易班APP自动填写的脚本洛柒尘,但是他们脚本都是要在电脑执行比较方便,但是每天懒狗就是不想动,还有就是有些测温员在测温的时候他们在干别的事情就忘记填了,于是我就根据这两位大佬的基础上进行修改,然后就能不能不用电脑,直接用手机设置一波操作,为了让懒狗更加多时间不被吵醒,顺便我也会加一个电脑操作教程。

点击此处,获取海量Python学习资料!

我建议还是接受测温员的测温,学校这样做是为了每一位学生的安全,由于今年的新冠疫情,虽然我国在抗疫获得很不错的效果,但是目前国外还有很多人被感染了,我们还是不能放松。我这个教程只不过想懒得看手机和有时候忘记了填,就想给负责人减少一些工作负担,还是要啰嗦的提醒一点,必须测温,必须测温,必须测温,希望大家身体都健健康康

注意:我这个教程就是从洛柒尘这位大佬博客基础上再加一个电脑和手机上操作详细的教程,这个只适合江门职业技术学院,如果是其他学校的同学,需要重新抓包修改,这个脚本是可以读到创建的所有程序,通过修改可以提交几天后的任务都可以,但前提是发布人有创建这个任务(有些任务是到点才显示出来,只有通过读取数据才能发现)

我是在Linux系统运行python脚本,因为懒狗就不想在window和MacOS安装一个python环境

代码

import re
import time
import requests
import json
import os
import urllibdef get_user():account = []passwd = []state = 0name_file = '/root/data/username.txt';pass_file = '/root/data/password.txt';try:f = open(name_file, mode='r');lines = f.readlines();for line in lines:conn = line.strip('n');account.append(conn);f.close();except:state = 1;try:f = open(pass_file, mode='r');lines = f.readlines();for line in lines:conn = line.strip('n');passwd.append(conn);f.close();except:state = 1;return account, passwd, state;def get_time_stamp():now_time = time.localtime(time.time());if now_time[3] == 7 or now_time[3] == 8 or now_time[3] == 9:start_time = '7:00:00';elif now_time[3] == 11 or now_time[3] == 12 or now_time[3] == 13:start_time = '11:00:00';elif now_time[3] >= 17 and now_time[3] <= 22:start_time = '17:30:00';else:return 1;now_year = str(now_time[0]);now_mouth = str(now_time[1]);now_day = str(now_time[2]);fixed_time = (str(now_year + '-' + now_mouth + '-' + now_day + ' ' + start_time));fixed_time = time.strptime(fixed_time, "%Y-%m-%d  %H:%M:%S");timestamp = int(time.mktime(fixed_time));return timestamp;#登录页面
def login(account, passwd, csrf, csrf_cookies, header):params = {"account": account,"ct": 1,"identify": 1,"v": "4.7.12","passwd": passwd}login_url = 'https://mobile.yiban.cn/api/v2/passport/login';login_r = requests.get(login_url, params=params);login_json = login_r.json();user_name = login_json['data']['user']['name'];access_token = login_json['data']['access_token'];return user_name, access_token;#二次认证
def auth(access_token, csrf, csrf_cookies, header):auth_first_url = 'http://f.yiban.cn/iapp/index?act=iapp7463&v=' + access_token + '';auth_first_r = requests.get(auth_first_url, timeout=10, headers=header, allow_redirects=False).headers['Location'];verify_request = re.findall(r"verify_request=(.*?)&", auth_first_r)[0];auth_second_url = 'https://api.uyiban.com/base/c/auth/yiban?verifyRequest=' + verify_request + '&CSRF=' + csrf;auth_result = requests.get(auth_second_url, timeout=10, headers=header, cookies=csrf_cookies);auth_cookie = auth_result.cookies;auth_json = auth_result.json();return auth_cookie;'''
def get_complete_list(csrf,csrf_cookies,auth_cookie,header):complete_url = 'https://api.uyiban.com/officeTask/client/index/completedList?CSRF={}'.format(csrf);result_cookie = {'csrf_token': csrf,'PHPSESSID': auth_cookie['PHPSESSID'],'cpi': auth_cookie['cpi']}complete_r = requests.get(complete_url, timeout = 10, headers = header, cookies = result_cookie);task_num = len(complete_r.json()['data']);time = get_time_stamp();for i in range(0, task_num):task_time = complete_r.json()['data'][i]['StartTime'];if time == task_time:task_id = complete_r.json()['data'][i]['TaskId'];get_task_detail(task_id, csrf, result_cookie, header);break;
'''#未完成的任务
def get_uncomplete_list(csrf, csrf_cookies, auth_cookie, header):uncomplete_url = 'https://api.uyiban.com/officeTask/client/index/uncompletedList?CSRF={}'.format(csrf);result_cookie = {'csrf_token': csrf,'PHPSESSID': auth_cookie['PHPSESSID'],'cpi': auth_cookie['cpi']}uncomplete_r = requests.get(uncomplete_url, timeout=10, headers=header, cookies=result_cookie);task_num = len(uncomplete_r.json()['data']);for i in range(0, task_num):task_time = uncomplete_r.json()['data'][i]['StartTime'];time = get_time_stamp();if time == task_time:task_id = uncomplete_r.json()['data'][i]['TaskId'];user_state = 0;return task_id, result_cookie, user_state;break;#获取表单信息
def get_task_detail(task_id, csrf, result_cookie, header):task_detail_url = 'https://api.uyiban.com/officeTask/client/index/detail?TaskId={0}&CSRF={1}'.format(task_id, csrf);task_detail_r = requests.get(task_detail_url, timeout=10, headers=header, cookies=result_cookie);task_result = task_detail_r.json();task_wfid = task_result['data']['WFId'];return task_result, task_wfid;#提交表单
def task_submit(task_wfid, csrf, result_cookie, header, task_result):extend = {"TaskId": task_result['data']['Id'],"title": "任务信息","content": [{"label": "任务名称", "value": task_result['data']['Title']},{"label": "发布机构", "value": task_result['data']['PubOrgName']},{"label": "发布人", "value": task_result['data']['PubPersonName']}]}data = {"0caddc48d709afde9cc4986b3a85155e": "36.5","a4f42d8428d2d4ca3f4562ff86305eb0": {"name": "江门职业技术学院6栋宿舍楼","location": "113.104625,22.628090","address": "潮连街道潮连大道6号江门职业技术学院"}}params = {'data': json.dumps(data),'extend': json.dumps(extend)}task_submit_url = 'https://api.uyiban.com/workFlow/c/my/apply/{0}?CSRF={1}'.format(task_wfid, csrf);task_submit_r = requests.post(task_submit_url, timeout=10, headers=header, cookies=result_cookie, data=params);return task_submit_r.json()['data'];#运行程序
def start():csrf = "365a9bc7c77897e40b0c7ecdb87806d9"csrf_cookies = {"csrf_token": csrf}header = {"Origin": "https://c.uyiban.com", "User-Agent": "yiban"}get_time_stamp();account, passwd, state = get_user();if state == 1:print('账号或者密码文件打开有误');exit();if len(account) != len(passwd):print('账号和密码数量不一致');exit();for i in range(0, len(account)):print(account[i]);try:user_name, access_token = login(account[i], passwd[i], csrf, csrf_cookies, header);try:auth_cookie = auth(access_token, csrf, csrf_cookies, header);try:task_id, result_cookie, user_state = get_uncomplete_list(csrf, csrf_cookies, auth_cookie, header);try:task_result, task_wfid = get_task_detail(task_id, csrf, result_cookie, header);try:conncet = task_submit(task_wfid, csrf, result_cookie, header, task_result);if connect != '':print(user_name + '完成');except:print(user_name + '提交成功');except:print('');except:print(user_name + '没有获取到未完成的任务');continue;except:print(user_name + '没有获取到cookie');continue;except:print(user_name + '账号或者密码错误');continue;#脚本自动跑
if __name__ == '__main__':def time_sleep(n):while True:a = get_time_stamp();now_time = time.localtime(time.time());print(str(now_time[1]) + '-' + str(now_time[2]) + ' ' + str(now_time[3]) + ':' + str(now_time[4]) + ':' + str(now_time[5]));start();if (now_time[3] >= 7 and now_time[3] <= 21):time.sleep(1800);else:time.sleep(3600);time_sleep(5);

需要修改的地方
登录和二次认证那块可以不修改
get_uncomplete_list获取信息后每个学校是不一样的,像我们学校有测评信息可以查看的,但有些学校是没有的,所以需要修改一下获取的信息
get_task_detail获取的是任务表单的信息,也需要修改,比如发布人、任务名字之类的。
task_submit是提交数据,这里需要提交data和extend,这两个数据是不同的,需要自己抓包来看进行修改。
最后那个自动跑的time_sleep()是我懒得好好写,让他自动提交就好了,懒得去理他几点提交了

电脑操作教程

注意这里代码插入的username.txt和password.txt路径,因此这个名为data文件夹里面有3个文件,分别是username.txt、password.txt、qq.py(py的脚本名称可以自定义),因为这个大佬写的代码很不错,直接用py遍历文本里面的所有用户进行批量填写,给个赞

username.txt里面是填写易班帐号
password.txt里面是填写易班密码

然后还要进去修改一下py脚本代码

这里的name可以填学校的任何一个建筑物,location这里要填写经纬度,经纬度必须保留小数点后6位数,例如113.10555,22.628888,必须要用真实的经纬度,我前面的例子是随便写的,不能采用,可以来这里查询https://jingweidu.51240.com/然后address这里要填写学校的地址,如果是江门职业技术学院的同学使用可以不用修改。

然后用python3环境来跑脚本,电脑操作教程完成,效果如下:

手机操作教程(只合适安卓手机)

首先在手机安装一个酷安应用https://www.coolapk.com/

搜索Termux下载并安装

成功安装了

pkg install python 安装python

然后创建username.txt、password.txt、qq.py
路径为/data/data/com.termux/files/home/111

pkg install vim安装vim

比较好的方法就是用电脑连接安卓手机,在电脑弄好再拖进去
在电脑进行修改一下文件路径
/data/data/com.termux/files/home/111

赋予一些权限给111文件夹

然后在username.txt里面输入帐号,在password.txt里面输入密码

提示我没有安装python的requests库,然后我用pip3 install requests进行安装

然后发现了有这个报错,然后我根据提示输入pip install --upgrade pip

执行脚本,成功

然后因为懒狗,所以我们设置定时运行脚本用crontab工具实现

因为国内的安卓手机大部分都没有进行root解锁,所以没有root权限,但可以利用proot工具模拟root环境

pkg install proot

安装完成后输入

termux-chroot

即可模拟root环境
在管理员身份下输入exit可回到普通用户身份

pwd命令输入后即可看到是/home路径即已经代表是模拟root成功,可以进行root权限的操作

1.使用如下命令创建脚本:

vi start.sh

2.然后在 start.sh 脚本中结合本身情况输入内容,示例:

#!/usr/bin/bash
cd /home/111
/usr/bin/python3 qq.py

效果如下:

3.然后使用如下命令,编辑定时任务:

crontab -e

然后在里面指定什么时候运行什么脚本

02 7-18/1 * * * /home/111/start.sh

crontab -e 是进去编辑定时任务
crontab -l 是展示编辑好的定时任务的指令

我这里写的是每月每天早上7点到下午6点,每小时02分执行一次脚本

如果别的同学还想喜欢设置别的时间段可以自己再修改,下面是关于设置时间的注解

最后一步就是启动crond服务

命令如下:

crond start 启动服务
crond stop 关闭服务
crond restart 重启服务
crond reload 重新载入配置
crond status 服务是否运行

一般设置完定时任务,就输入crond reload和crond start 就可以了,如果是手机出现了闪退,就要输入crond reload 、crond restart 、crond reload、crond start 这四条命令,至于为什么一定要输入这四条命令我也不清楚,可能手机有问题吧,如果你们手机没问题可以试试只输入前面两条命令看看有没有效果吧

以上就是手机操作的所以教程部分,希望大家能认真阅读,并多多支持我的博客,毕竟我是新开的CSDN博客,谢谢大家!!!

易班自动答题脚本_Python实现手机APP之自动打卡签到详细教程(小白合适)相关推荐

  1. python写自动答题脚本_编写Python脚本拉取优学院答案

    上个月审计了云班课和优学院的前端代码,实现了强制修改视频进度和获取选择题答案的功能.但是单个发包效率太低了,昨晚开始着手写了一个脚本,早上修改了一下,基本功能写出来了.考虑到风险,这个脚本是获取答案, ...

  2. python实现阴阳师自动刷御魂脚本_Python实现阴阳师电脑端自动组队刷御魂

    Python实现阴阳师电脑端自动组队刷御魂 1 开发环境搭建 Python3.7安装下载地址: https://www.python.org/ftp/python/3.7.0/python-3.7.0 ...

  3. python自动输入账号密码_Python如何基于selenium实现自动登录博客园

    这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...

  4. 苹果手机如何关闭自动续费_手机APP总自动续费?教你一招关闭它!

    大家晚上好,我是机哥~ 在我们日常使用App的时候,经常就会订阅一些服务,比如想看视频,要在某网站开通一个月的会员服务,可是这些服务,有时候会连续包月的进行付费. 也就是说你订阅了,就会每月的自动扣钱 ...

  5. 简单又强大的联发科手机PhilZ Touch Recovery安装器,详细教程 - 本文出自高州吧

    原文地址:http://bbs.gaozhouba.com/thread-19355-1-1.html * * * * * * * * * * * * * * * * * * * * * * * * ...

  6. python写自动抢购脚本_Python实现自动上京东抢手机

    本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...

  7. 触动精灵和按键精灵哪个好,如何用按键精灵ios触动精灵及脚本写自动答题脚本...

    答:都差不多,无非是键鼠图色功能,这些软件都具备!其它差异就看你对他们熟悉程序而选择了~~ 比如我经常用按键精灵 首选肯定是安卓按键! 答:不能! 答:只有越狱才有,越狱之后在Cydia搜索autot ...

  8. python 用题库自动答题器_python实现自动刷题

    使用Python实现云豆网自动刷题 这些是一大佬写的我就解读一下 所有代码全是Py3 要有一些Python基础emmm不用太多 不懂就问我的QQ:2025450852 大体思路: 控制浏览器模拟点击 ...

  9. python自动操作脚本_Python实现自动挂机脚本 | 沐雨浥尘

    使用Python + win32api实现简单自动鼠标点击 使用tkinter设计GUI界面并用pyinstaller打包 不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然 ...

  10. python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)

    现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...

最新文章

  1. 你知道现在的.net是什么样的吗,一张图告诉你
  2. 百度地图android自定义文字,androidsdk | 百度地图API SDK
  3. 一篇不错的讲DHCP的文章
  4. OpenCV基本绘图
  5. Android Bitmap面面观
  6. MyBatis增删改对二级缓存的影响
  7. Angular单元测试框架里API toHaveBeenCalledTimes的工作原理
  8. 国家自然科学基金项目经费怎么用有了新规定
  9. ❤️六W字《计算机基础知识》(五)(建议收藏)❤️
  10. App后台开发运维和架构实践学习总结(12)——基于token的多平台身份认证架构设计
  11. linux下 vim修改文件后如何保存
  12. Android之在不同的Activity之间传递数据
  13. 永远感谢雷神-雷霄骅!
  14. python用opencv实现图片的美白磨皮_OpenCV 磨皮-Python
  15. 当国际贸易撞上AI,会产生怎样的化学反应?
  16. java.lang.IllegalArgumentException: Receiver not registered:
  17. java close 方法,close()方法的用法(Java初学者)
  18. LSA和 PLSA学习笔记
  19. 使用openlayers加载地图行政区域(结合百度云地图)
  20. 【图】深度优先遍历 广度优先遍历

热门文章

  1. M3U8下载,直播源下载,FLASH下载(二)-ffmpeg安装手册(linux)
  2. sqlyog中导出sql语句
  3. 环境监测设备中,使用GPS模拟器测试TTFF和灵敏度的注意点
  4. 50个app帮你手机大换血!
  5. 排名:开源免费的小程序商城源码-LaiKe
  6. 地图坐标拾取【获取指定地点经纬度】
  7. C语言实例——荷兰国旗问题
  8. UITableView实现加载更多数据
  9. tar和其他一些压缩解压工具
  10. 485转61850规约转换C语言,61850规约转换器