反爬虫之验证码(5)
验证码可以说是最让人伤脑筋的事了,最常见的便是图片验证码,花样百出,再加上有意模糊数字,就连人都不一定能识别出来,所以本专题也不会专门讲识别算法等等,而是介绍一种人工打码的方式。
人工打码
可能很多人对人工打码不太了解,毕竟这本身并不是一件值得宣扬的事。
简单来说,人工打码就是把你的验证码传送给第三方平台,该平台会将验证码分配给一个“临时工”进行识别,最后将识别的结果返回给你。
本质上,验证码并不是靠计算出来的,所以返回结果偶尔也会不稳定,比如超时(可能打码工走神了,或者上个厕所啥的都有可能),也可能返回错误的验证码(把9识别为8)。
类似的“灰色平台”有很多,尤其是在广告营销方面,就连app store都不能幸免,把下载任务分配给“临时工”,平台和临时工平分下载费。不得不感叹一句,现在刷流量的都开始做平台了。
人工打码属于收费服务,毕竟平台和临时工就靠这个吃饭。
对于图片验证码来说,图片越复杂,价格就越贵,比如6个数字的验证码就比4个数字的贵,需要计算的验证码也比不需要计算的贵。
通常来说,一个四位数字+字母混合的验证码,行业价格在0.01元。
下面是我测试的人工打码,账号和平台信息都屏蔽掉了。
识别图片验证码
先在打码平台注册一个账号,设置信息以及阅读接口文档。
因为平台未提供python本地打码库,所以我就自己写了一个,使用平台提供的http接口进行请求。
核心请求代码如下:
将验证码图片保存到本地1.jpg:
1.jpg
再将验证码图片放在http请求中发送给平台,返回结果是json格式:
返回的ret为0表示请求成功,result为验证码结果:H5Y6,与图片验证码吻合,打码成功。
短信验证码
现在注册账号大都要求手机短信验证,这也不是没办法,方法类似图片验证码:通过第三方平台提供的接口进行号码获取,短信获取等。只是这些号码都是“僵尸号码”,只能程序化的接受短信而已。有兴趣的可以自行了解~