Google Drive OCR并不适合用于验证码识别

之前看到有人说Google API可以用来做图片验证码识别,想到今后或许能长期偷懒,就简单测试了下,最后发现,其实是难以用于实际攻击的。不过做了工作,还是总结一下。

1. Google Drive API快速入门

首先安装Google Client Library:

pip install --upgrade google-api-python-client

API Reference没详看,直接在Google Developers搜OCR,找到了Files: insert 方法。

它的作用是上传并创建新文档。可选参数OCR可以设定是否要应用OCR,识别图片和PDF中的文字。

阅读 Quickstart: Run a Drive App in Python 上手,有兴趣还可以看看底部的视频。 示例代码地址:goo.gl/dxuuB

https://console.developers.google.com/创建一个新的Project

在新建的Project下创建Client ID,如下图所示:

credentials

为了省事,直接选择Web APP,在redirect_url中填写一个call back url,用户授权之后会跳转到这个URL。

client-id

把得到的Secret复制到上述示例代码中,就可以实现上传一个新文件到Google Drive中:

CLIENT_ID = '10107005646xxx-xxxx.apps.googleusercontent.com'
CLIENT_SECRET = 'E6oJs9R97Bxxxxxxxxx'
OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'
REDIRECT_URI = 'http://www.example.com/oauth2callback'

2. 为什么Google Drive API难以用于破解验证码

说起来,局限是相当多的:

1) Google在内地服务不太稳定,比如利用API下载文件的时候我遇到过HTTP Error

2) web APP , oAuth 2.0取token,嫌麻烦。

3) 实际上,根本无法直接从API返回的链接中Export Text,或者提取到字符串。那些认为上传个png,接口马上返回识别结果的人,是想错了。返回的下载链接,还是原始图片。

4) 上传后图片可以转换成为google Doc。

5) 实际上,Google Drive API还是只能识别一些常用的字体,比如Arial。用来做验证码识别,还不够智能的。

下图是我上传的测试文件,两行文本,Google Drive只正确提取到了第二行的内容:

google-ocr

不过这个也可以理解,毕竟Google Drive不是用于攻击,能提供这种附加功能已经很好了,百度网盘应该还没有吧?

发表评论

您的电子邮箱地址不会被公开。