Skip to content

cjsworld/jlpt-bookseat

Repository files navigation

日本语能力测试(JLPT)抢座脚本

这个脚本会调用网站原本的一些方法来实现ajax请求,但去除了ui的各种操作,以便更快的轮询和发起请求。

如果这个脚本有帮到你的话,麻烦给个star吧。

一緒に散歩しましょう


脚本界面

截图

  • 界面上的参数修改之后,会自动保存到localStorage。

  • 报考的等级

    • 字面意思
  • 证件号和密码

    • 为防止中途发生出现会话已过期之类的错误,在这里填入证件号和密码,则可以自动重新登录。
    • 如果不放心,也可以不填。则需要先手动登录,再开启脚本。且中途遇到会话过期,则会终止脚本。
  • 改座模式

    • 用于订座成功之后进行改座。
    • 订座成功后有且仅有一次改座机会。
    • 改座失败不影响当前订座。
    • 目标考场不要包含已报考场。
  • 快速抢座考场

    • 填写考点代号,用英文逗号分隔,例如:1020101,1020103,1020105
    • 因为在人多的时候,查询接口会卡。而第一天往往所有考场都是有座位的,所以可以跳过查询直接订座。
    • 可以在这里填写考场,会自动卡时间,2点开始,按照顺序尝试直接订座。
    • 注意每次订座都需要消耗验证码。
  • 目标考场

    • 填写考点代号,用英文逗号分隔,例如:1020101,1020103,1020105
    • 会通过接口去查询哪个有空座,然后按照列表的优先顺序选择有空座的考场。
  • 超时设置

    • 查询请求超时:用于查询请求以及验证码之类的请求超时。
    • 订座请求超时:用于登录请求和订座请求的超时。
    • 轮询请求间隔:控制多长时间查询一次空余考位(服务器有限流,小于500ms可能会导致请求报400)。
  • 开始/停止按钮

    • 字面意思
  • 验证码显示和输入

    • 每次订座请求都会消耗掉验证码,一旦订座失败,会立刻请求新的验证码。请注意迅速输入,以免因此耽误时间。
    • 不用关心大小写。
    • 在输入框按回车提交。
    • 如果看不清,不输入或输入小于4个字符,回车提交,都会请求新的验证码。
    • 这里刷出验证码之后,不要在原来的界面上刷新验证码。
  • 验证码自动识别

    • 需要参考后面的说明,搭建自动识别验证码的服务。
    • 自动识别准确率有限,网络高峰期可能导致刷新验证码较慢。
  • 日志显示

    • 显示过程中的日志。
    • 如果觉得窗口小,console控制台也会有一样的输出。

验证码自动识别

  • 验证码识别采用ddddocr库来实现,准确率大概60%左右。

  • 准备python3环境

  • 安装依赖

    pip3 install -r requirements.txt
    
    • 如果下载速度太慢,可以换国内源
    pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 运行,确认输出正常无报错

    python3 captcha_server_ocr.py
    
  • 如果是Mac M1/M2芯片,需要以x86_64架构运行python,在命令前面加上arch --arch=x86_64即可

    arch --arch=x86_64 python3 captcha_server_ocr.py
    
  • 如果遇到报错DdddOcr.init() got an unexpected keyword argument 'beta',可能是ddddocr版本问题,检查是否1.4.7版本。实在不行,可以把beta参数去掉。

使用方法

  • 浏览器打开 https://jlpt.neea.cn/index.do

  • F12打开控制台,会因为无限循环的debugger而进入断点调试。取消断点(Deactivate breakpoints),然后恢复运行(Resume script execution)。

    截图

  • 来到Console界面,将jlpt.js所有代码粘贴进去,回车,界面上出现窗口。

  • 如果不使用自动登录功能,请手动先登录进去。如果使用自动登录,则不需要手动登录,只需要在脚本处填写账号密码,脚本会自动处理。

  • 调整参数,点击开始。

  • 刚运行或者验证码错误/过期之类的,会自动获取一个新的验证码,显示在窗口里。输入验证码答案后,程序继续运行。

    截图

  • 如果用了自动识别,则无需输入,遇到验证码失败或无法识别,会重新尝试。

    截图

  • 程序循环查询考场信息,找到符合目标条件的有座位考场,会立刻发起订座的请求。

    截图

注意事项

  • 最好在7:00之前几分钟,运行脚本,以防7:00左右卡顿导致登录困难。

  • 脚本运行时,页面最好不要操作,以免导致验证码失效。(实际上只需要登录即可,甚至不需要进入到选座界面)

  • 报名第一天,因为人多,且座位肯定是有的,可以先尝试快速抢座。

  • 第一波没抢到,后续报名日,每天会释放前一天没付款的座位。相对人少,且不确定哪个考场会有座位释放,所以不建议再使用快速抢座,并且最好在目标考场里多给几个周边的备选考场。(不要纠结一定要某个考场,有的时候真的就全定完了,不会释放了)

  • 建议提前演练一下,一方面脚本可能有问题,或者网站更新导致功能不可用。

  • 如果遇到订座请求(book.do)报400,可能需要注销一下重新登录才能好。

About

日本语能力测试(JLPT)抢座脚本

Resources

Stars

Watchers

Forks