跳到主要内容

如何破解网站验证码,实测证交所买卖日报表

· 7 分钟阅读
Eric Cheng

写网路爬虫最讨厌的事莫过于遇到网站需要验证码,去 google 「网站验证码 破解」也会看到一堆文章,无奈一大半都是从对岸翻译的,很多都不能用,花了点时间实际用证交所买卖日报表的验证码来测试,简单整理了一下笔记

工人智慧

你没看错我没写错,真的是「工人智慧」,不是「人工智慧」

代表的网站有这两间

它们的原理很简单,就是用低价去人力成本低廉的地方找人来分辨验证码回传赚取价差。

由网站提供介面和 API,客户注册后使用网站提供的 API 上传需要破解的验证码,网站收到需求后分配给线上的工作人员,工作人员辨识完成后回传。根据网站的说法,普通工作人员每月约能赚 100 美金左右,在印度、巴基斯坦..等国家已经算不错的薪资了,而且只需要一台电脑或手机就能工作,还有工作人员的故事,其实我还蛮配服想到这个方法的人,也不算是剥削工作人员,只能说是各取所需吧

我有列入考虑,但最后没真的去测试,不过相信辨识率应该不差,毕竟是真人辨识的,而且价格对我们而言不高,1000个验证码约为 0.5~1 美元,真的要用也在可以负担的范围能力内

列入考虑

Tesseract

tesseract 是 google 的 OCR 文字辨识,大概也是找到最多文章说能够拿来破解验证码的方法

Python 有几个 library,底层都是用 tesseract,像是

使用上需要先下载 tesseract,不过官方并没有提供 windows 的安装档,如果需要在本机测试的话,要先到 3rd party找安装档,下载连结如下:下载连结

程式写起来很简单,我是测试 pytesseract,基本上就是用官网的 sample code 就可以了,但如果你的目的是证交所的买卖日报表的话,可以不用试了,我实测结果是无法辨识,不管是基本用法或是网路上其他的文章说的什么 灰度处理、降噪,都没有用,只能说买卖日报表的验证码做的还不差吧。毕竟 OCR 本来的目的就只是要做一般文字辨识,不是拿来辨识验证码的

测试失败

Amazon Textract

Amazon Textract 是 AWS 提供的文字辨识工具,要使用的前提是要有 AWS 帐号,这个服务看官网说明是要收费的,但是我测试了 20笔资料,没看到帐单有费用,但如果你的目的是证交所的买卖日报表的话,也可以不用试了,我实测结果 20笔资料,只辨识成功 1笔,辨识成功率 5%,不过好像也不能怪 AWS,毕竟这个工具和 OCR 一样,本来就不是设计来辨识验证码的

测试失败

Deep Learning | CNN

在测试前,我就认为这个应该是正解,毕竟如果连 CNN 都搞不定,大概就只能去用工人智慧了

不过网路上说什么「十五分钟实战」,一堆对岸的文章看看就好,基本上用 Deep Learning 有一定的进入门槛在,如果没学过怎么用 AI 建模型,不要说十五分钟,十五天都不一定学的会。为了破解个验证码,还要去学 CNN 好像 CP 值太低了点。

不过在这个套件当道的时候,应该有些好心人会封装出好用的套件吧,然后我找到 ddddocr

ddddocr 带带弟弟OCR通用验证码识别SDK免费开源版

有点中二的名字,大陆人写的,从说明来看,底层就是 deep learning,只是已经先帮我们建好模型了,同样实测 20笔资料,成功了 14笔,辨识成功率 70%,虽然看起来不太高,但实务上我觉得够用了,反正辨识失败就再换个验证码再来一次就好

暂定使用

实测记录

也只有 Amazon Textract 和 ddddocr

图片Amazon Textractddddocr (1.3)
c-01N/AX8NFG
c-027U9kM7U9Kt
c-03m TOGRNLL
c-04LX24Plx24D
c-05N/A99UV
c-06N/AZ4N86
c-07RCRERCREC
c-08N/AK22PA
c-096KGCK6Kgc
c-10EHJ83EH
c-11N2R9N8
c-12Z:3KRFZ3KRF
c-138YRD98yrd
c-14N/A4YA7
c-156P.G6A2G
c-16PTGRPZGRZ
c-17APNHOAPNHG
c-18N/AY7JPJ
c-19DOQJDQQJ
c-20TKQHA7KQHA
版权声明

,转载请注明出处
本文键接: https://havocfuture.tw/zh-hans/blog/captcha-bsr