针对正方教务系统验证码 识别
安装和使用步骤整理中
代码重构中
原理添加中
- PIN Identify by fangzheng.php 为主文件
- PIN Identify lib.php 为其函数库
- downloadImg.php 用于download验证码
- AddDictionary.php 用于添加字典
- zidian.sql 为字典,建一个叫'yzm'的数据库导入即可
批量测试设置了一次加载五个方正验证码,大概等待时间在13s左右
-
重构代码,改为面向对象风格,松耦合,方便更换各块的策略(已经基本完成,查看OOP分支)
-
将字典储存转为JSON储存,一次性读入内存,去掉数据库读取的时间(已经在OOP分支完成)
-
使用swoole多线程识别
-
以PHP拓展的方式重写核心函数,降低核心函数的时间复杂度
-
增加多个字典和策略
-
增加对青果验证码的支持
- 无论是验证速度还是精度都将得到提升
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++应该会快很多