bk-zhm

这个人很懒什么都懒得写,约拍qq155476347

回到顶部

关于验证码

做爬虫多多少少会遇到,当然有很多办法解决

今天就先搞个最直接的:

 

材料:selenium、PIL、百度

过程:selenium模拟登陆输入帐号密码-》获取验证码-》处理验证码-》输入完成点登陆-》获取cookies-》给requests用

下面主要记录下图片处理的想法:

  1. 通过selenium把验证码图片截出来


2.处理

我一般处理会用到反色、去色、去杂、二值化,这要根据具体验证码来使用

像上面这种验证码,不做任何处理,识别率大概在5%

去杂就是把辅助线清理一下,这种方法有时候有用,但对上面的验证码用处没有那么大,还要加上颜色过滤等操作才会比较好

单纯去杂:


就算是单纯去杂后,识别率都能提高到50%以上

二值化,讲真这个是个双刃剑,如果单独使用指不定还会出什么幺蛾子。建议先滤色,把多余的颜色尽量滤出来,再做二值化处理

二值化+滤色:


这样子 识别率基本上70%是有了 ,可以看到还有点干扰线,这种干扰线可以在前期继续用滤色清理,鉴于每次干扰线都不太一样,取舍一下还是不做了。而且这种程度的干扰线已经不是很影响识别效率。

3.识别

现在机器学习那么火 可以自行百度下比较热门的框架玩玩,文档教程都蛮多的。不过这个需要的样本量有点大,为了拿足够数量,还要写个脚本去爬别人的验证码。。。

所以,接个打码平台完美解决 均价大概1元100次。权衡下成本。如果实在是量大而且网站比较固定可以考虑自己做

后记:

讲真selenium真是爬虫届的按键精灵,足够灵活,为所欲为。不过消耗太大了1G内存最多运行2、3个工程。所以能不用就不用吧。。不然钱包遭不住 。一般只是用来获取cookies,类似登陆ins,淘宝之类。听说淘宝有对抗selenium的方法,不过网上已经有对抗教程了。。

PhantomJS消耗比selenium少30%左右,暂时没有遇到传说中的OOM,自己的ins爬虫现在就是用PhantomJS。关于ins,现在ajax加载每次都有加密,看得我人都晕了,前端又没技术,不会分析。爬虫最有意思感觉是黑吃黑,爬了就跑 别人还不能告,又没啥办法对付,充实了硬盘,还不错。



 
 
评论
©bk-zhm | Powered by LOFTER