一个使用 Angular4 写的自动识别并填写 V2EX 验证码的 chrome 扩展

2017-11-28 00:34:13 +08:00
 nannanziyu

V2EX Captcha Recognizer Extension

自动识别并填写 V2EX 注册 / 登录 / 重设密码 等页面的验证码

实现原理

  1. V2EX 的验证码的设计在 阻挠肉眼识别便于模式识别 两方面都达到了很高的水准。前者无需赘言,后者用之前项目做过的本地模式识别库简单测试,识别率非常高。

  2. 前者使这个功能成为一个迫切的需求,后者使自动识别成为技术上的可能,但还仅仅是可能。

  3. 但最重要的一点是,当验证码地址 https://www.v2ex.com/_captcha?once={number}Cookie 不变的情况下,可以反复获取文字相同,但是重绘过的图片。

  1. 所以可以进行多次识别进行比较来增加准确度。图片数在 10 张左右时,准确率已经可以接受;当图片数超过 20 张时,几乎达到了 100%的准确度,完全可以用作自动登录。

实现步骤

  1. 获取 N 张验证码图片
  2. 使用 Canvas 将多张图片组合成一张
  3. 使用 百度 OCR 或者 GOOGLE CLOUD VISION API 进行在线识别
  4. 比较返回的结果列表,获取每个位置出现频次最高的字符

关于百度 OCR 和 GOOGLE CLOUD VISION

  1. 前者容错高,后者精度高。通俗点来说,前者给多么混乱的图片,都会尝试识别并返回出点什么结果来,后者则更容易返回空结果;但是同样条件下,后者返回的结果更精确。
  2. 前者每天有 500 条免费额度,所以扩展里自带了一个百度 OCR 的 AppId,可以开包即用。而后者每个月只有 1000 条免费额度,没有包含,可以在 Popup 里自己设置。

Thanks to

  1. Angular 4
  2. Gulp
  3. Clarity
  4. baidu-aip-sdk
  5. GOOGLE CLOUD VISION

Build

To build the project you need to run the following node commands:

因为有 node-sass 的依赖,而 node-sass 又需要 node-gyp
node-gyp 在 Windows 上 Build 需要 Python 2.7Visual C++ Build Tools

Release

不想安装环境或者不想 Build 的,可以直接到 Release 下载扩展包,在 扩展页面 chrome://extensions/ 加载已解压的扩展程序即可。

Github

https://github.com/gragrance/v2exCaptchaRecognizer

3960 次点击
所在节点    分享创造
12 条回复
koodai
2017-11-28 00:41:49 +08:00
服!贵在思路
freed
2017-11-28 01:06:34 +08:00
赞~
EchoChan
2017-11-28 01:08:10 +08:00
有意思,这验证码,虽然不算差,但体验真不好。
zhigang1992
2017-11-28 01:55:23 +08:00
阻挠肉眼识别 和 便于模式识别 lol
vipper
2017-11-28 07:33:25 +08:00
用这种是不是要比打码便宜很多
wellsc
2017-11-28 09:00:23 +08:00
👍
ty89
2017-11-28 11:03:33 +08:00
v2 这种验证码就只能摆个样子,用投影法切分成单个字符再稍微调整尺寸和位置,再丢给 ocr 就搞定了。
防机器识别最重要的几点统统不具备:
1 )字体重叠粘连
2 )背景干扰
3 )字体扭曲
dotpig
2017-11-28 12:49:38 +08:00
“阻挠肉眼识别” 和 “便于模式识别” 的意思是不是给真人麻烦,给机器人方便的意思?
SoloCompany
2017-11-28 12:52:55 +08:00
然而我只用 gg 登录
myself659
2017-11-28 14:37:44 +08:00
验证码影响用户体验,又解决不爬虫 是不是可以被淘汰了
soulmine
2017-11-28 20:40:26 +08:00
@myself659 不是 至少有了验证码会让很大一部分写爬虫的感觉很日狗 说不定就跳过了 至少我是这样 当然假如什么非爬不可的 就另说了 www
AnyISalIn
2017-11-29 10:49:10 +08:00
思路不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/410068

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX