Skip to content

方正教务系统验证码识别 附在线测试地址

License

Notifications You must be signed in to change notification settings

startPHPs/CAPTCHA_Reader_by_zhengfang

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CAPTCHA_Reader_by_zhengfang

针对正方教务系统验证码 识别

EN

安装和使用步骤整理中
代码重构中
原理添加中

目前字典大致为2200条左右,识别率基本站稳85%,可以确保请求三次之中一定有一次是识别正确的,内网环境下单次完成时间在1.5s-2s,外网环境下完成时间可能会在2.5-3s之间,
  • PIN Identify by fangzheng.php 为主文件
  • PIN Identify lib.php 为其函数库
  • downloadImg.php 用于download验证码
  • AddDictionary.php 用于添加字典
  • zidian.sql 为字典,建一个叫'yzm'的数据库导入即可

Examples

正确率测试 地址

正确率批量测试 地址

批量测试设置了一次加载五个方正验证码,大概等待时间在13s左右


更新计划

  • 重构代码,改为面向对象风格,松耦合,方便更换各块的策略(已经基本完成,查看OOP分支)

  • 将字典储存转为JSON储存,一次性读入内存,去掉数据库读取的时间(已经在OOP分支完成)

  • 使用swoole多线程识别

  • 以PHP拓展的方式重写核心函数,降低核心函数的时间复杂度

  • 增加多个字典和策略

  • 增加对青果验证码的支持

即将更新OOP分支

  • 无论是验证速度还是精度都将得到提升

news: 使用php自带的levenshtein()函数(时间复杂度 m * w)测试后的结果,外网访问的处理时间下降到1s左右,而且是SQL+面向过程的版本,更快的JSON字典+OOP的版本感觉可以期待一下速度wwww

point:如果因为获取验证码的教务系统响应缓慢或者无法响应,正确率测试的地址会因为无法获取到验证码图片而产生504错误/响应过长,可以考虑把脚本下载到本地将目标url换成本校的教务系统验证码url再做测试

point:  PS:目前认为运算效率的瓶颈在 similar_text()  这个核心函数上,函数的作用在于对比两个字符串的相似程度,但是其算法时间复杂度T(n) = O(n^3) ,所以准备用T(n) = O(m*n)动态规划实现一个相类似的函数去代替该函数,以提高性能,时间未定。。。

point:  PSS:然后试着用php写了个动态规划,发现完全跑不出来时间太长了,然后现在考虑用C++写个拓展看看,直接封装一个函数,跑的O(m*n)的C++应该会快很多

About

方正教务系统验证码识别 附在线测试地址

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%