使用魔法,飞一样的完成图书馆答题。~( ̄▽ ̄)~*
如果有好的建议或者想反馈bug可以 提交issue 。
此脚本需要安装 Python3.10 版本以上的解释器才能使用。 还没有安装的同学可以看这个 教程 。
-
下载脚本:
-
使用指令安装依赖:
可以使用 pip 安装在本地环境:
pip install -r requirements.txt
也可以使用 pipenv 创建虚拟环境并安装(推荐,但是需要提前配置好 pipenv ):
# 安装依赖 pipenv install # 激活虚拟环境 pipenv shell
目前脚本只支持
Edge
、Chrome
和Firefox
浏览器,用safari
、opera
和国产浏览器的同学抱歉哈,之后可能会支持的。(目前下载没有使用SSL验证,需要注意一下,如果可以的话还是手动下载最保险)。
在开始运行脚本前需要进行一些简单的设置:
- 在
token.json
文件中填入自己的学号(id
)和密码(password
),其中密码是NCUT
+ 身份证后六位。 - 在
./library/settings.py
文件中找到browser
键把后面的值修改成你电脑上安装了的浏览器。 - [可选] 如果你已经开始答题了,就需要在
./library/settings.py
文件中找到theme
键把对应的值修改成你所选取的皮肤即可(这一步对于已经开始答题的同学十分重要,因为这个网站更换皮肤以后所有标签的class
和id
甚至页面布局都会改变。这时需要通过使用不同的 CSS 选择器来定位元素)。
使用指令运行:
python main.py
项目文件夹中的 ./library/settings.py
文件是这个脚本的配置文件。全部的设置都在这里,除了登录信息和 API 信息。
# 开发者模式
# 在控制台输出更详细的日志,不过哪怕没有开也可以在运行后去 logs 文件夹中找到详细的日志文件
dev_mode = False
# 驱动文件地址(如果没有为空即可,会自动下载匹配的驱动)
driver_path = ""
# 本机使用的浏览器(要与所使用的驱动文件对应)
# - edge
# - chrome
# - firefox
browser = "edge"
# Github个人令牌(防止github访问限制导致的下载驱动失败)
GitHub_token = ""
# 每次获取元素时等待的时间(秒)
# 减小这个值可以进一步缩短答题时间,但是如果设置的过小会因为页面来不及显示而出错
wait_time = 0.3
# 运行时显示浏览器窗口(如果你连看都不想看那个题就可以关上)
show_window = True
# 验证码图片地址
veri_code_path = ".\\src\\img\\veri_code.png",
# 验证码图像二值化时的阈值,可以自己调整到一个合适的值来适当提高识别准确率
# 可以在识别过程中在存放验证码的地方查看效果
threshold_value = 130,
# 手动输入验证码
# 建议使用百度 api 或者手动输入,因为网络问题 easyocr 的模型经常下载失败。
use_input_veri = True
# 使用百度api识别验证码
use_baidu_api = False,
# api认证信息存放位置
api_token_path = ".\\api_token.json",
# 调用api时重试的次数
retry_num = 3,
# 使用的皮肤(如果已经登录选择过皮肤则必须与当前的皮肤一致)
# - school: 校园版
# - student: 书生版
# - warrior: 战士版
theme = "student"
脚本使用了百度文字识别api来提高验证码识别的准确度(主要是因为可以白嫖),需要到 百度AI开放平台 申请,申请方法见 这篇文章 。
- 在
./library/settings.py
文件中将use_baidu_api
键对应的值改为true
。 - 在
api_token.json
文件中填入申请到的app id
、api key
、secret key
分别填入对应的键中。
GitHub 对于匿名访问有限制(60次每小时),可能会影响到个别需要从 GitHub 上下载的驱动。增加上限需要申请一个 GitHub 个人令牌,申请方式见 这里 。然后把申请到的令牌填在 settings.py
的 GitHub_token
键中。
- 能够使用魔法以飞一般的答题。
- 自动根据网站更新题库,自动存储新题同时获取正确答案。
- 在本地存储答案,节省时间。
- 自动判断是否完成,如果以后增加了同一关卡中的题目数量也不会出问题。
- 完美适配目前的三种皮肤,并且通过
json
文件存储 CSS 选择器,方便添加新皮肤后进行维护。 - 可以手动调节每次定位前等待时间,在保证定位正常的情况下尽可能的缩短答题时间。
- 使用 webdriver_manager 适配多种浏览器,并且能够自动下载对应的浏览器驱动。
- 自动识别二维码。
- 使用 easyocr 进行本地二维码识别。
- 支持使用 baidu-aip 提高二维码识别的准确率。
- 可以支持使用大多数主流的浏览器(edge、chrome、firefox)。
此脚本的目的在于技术交流和学习 Selenium 使用。请勿用于其他目的。具体内容请查看 开源协议 。
👤 BATU1579
- Github: @batu1579
如果有帮到你的话,帮我点颗小星星叭~ ⭐️
This README was generated with ❤️ by readme-md-generator