2024年最新Python破解-图形验证码_绕过网页本地图片验证,2024年最新字节跳动Python面试凉凉经

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

字库下载地址:https://github.com/tesseract-ocr/tessdata
打开后,直接搜索chi_sim.traineddata,这个代表的就是中文,下载下来;
然后找到刚刚tesseract安装目录,里面会有一个叫tessdata的目录,直接把刚下载的语言包放到这个目录下即可;

如何验证tesseract是否安装成功?直接cmd下输入tesseract即可;
成功会直接显示信息;

如果提示’tesseract’ 不是内部或外部命令,则是因为没有配置环境变量,手动把tesseract根目录配置到path参数下即可,这块不详细说明;

到此为止,tesseract安装成功啦~

接下来就安装tesserocr,直接pip命令即可:

pip3 install tesserocr install

但jb在安装的时候,直接报错:

试过很多种方式,就算使用conda install tesserocr,也一样报错。

经历千辛万苦,终于找到一条可行的命令:

conda install -c simonflueckiger tesserocr

最终就安装上tesserocr啦~

如何验证是否真的安装了?很简单,直接import tesserocr,不报错就说明安装好了;

对了,如果有同学不知道conda这条命令的话,请访问下面的链接,直接搜索scrapy安装,会有介绍conda:
https://juejin.im/post/5afcb91251882565bd257097|

OK,windows下的tesserocr跟tesseract的环境已经安装好了;

别着急,顺便介绍下Linux跟Mac,但以下方式均未经过jb验证,信息来源于网上,仅供参考:

Linux下的安装

对于Liunx来说,不同系统已经有了不同的发行包了,它可能叫做tesseract-ocr或者tesseract,直接用对应的命令安装即可;

  • Ubuntu、Debian和Deepin
    在Ubuntu、Debian和Deepin系统下,安装命令如下:
  sudo apt-get install-y tesseract-ocr libtesseract-dev libleptioica-dev

  • CentOS、Red Hat 在CentOS和Red Hat系统下,安装命令如下:
  yum install -y tesseract

在不同发行版本运行如上命令,即可完成tesseract的安装;
安装完成后,便可以调用tesseract命令;
默认也是指安装英文语言,如果需要安装其他语言,请看下上面Windows的介绍,一样的处理方案,这里不重复说明;

接下来就是安装tesserocr,直接使用pip安装:

pip3 install tesserocr pillow

Mac下的安装

在Mac下,首先使用Homebrew 安装ImageMagick 和tesseract库:

brew install imagemagick
brew install tesseract --all-languages

接下来再安装tesserocr即可:

brew install tesserocr pillow

4 识别测试

为了方便测试,需要把验证码的图片保存到本地;
打开weibo.com,随便输入账号密码,会提示输入验证码,打开开发者工具,找到验证码元素,它的src属性就是一个链接,copy出来直接打开,会看到一个验证码,而且刷新的验证码会变化,由此推断这是个验证码的接口,右键保存验证码即可,就得到一张验证码;
验证码链接:
https://login.sina.com.cn/cgi/pin.php?r=9967937&s=0&p=gz-d0dc363f6a4523cbd602a5a10f00c59b4784

ok,完事具备,那就开始吧,新建项目,把验证码放到项目根目录下;
用tesserocr库来识别验证码:


`import tesserocr
from PIL import Image

*#新建Image对象*
image = Image.open("3.jpg")
*#调用tesserocr的image\_to\_text()方法,传入image对象完成识别*
result = tesserocr.image_to_text(image)
print(result)`

结果,运行后,啥都没有???
接下来jb陷入了困扰,包括调试,找各种文档,最终,把上面调试的验证码换了一个:

替换下图片,再执行一次代码:

OK,看到是有数据了,不过输出的是MEEE,跟验证码的ME8E还是有点不一样;

目前两个问题:
1)微博的验证码识别失败,输出空
2)第二章验证码部分词识别有误

心想,这库是网上都推荐用的,是Google开源的,理论上没问题,而且人家也都这么用,为什么这里就有问题?难道还需要额外的处理?

怀着疑问跟梦想,继续学习;

题外话: tesserocr还有一个更加简单的方法,这个方法可直接将图片文件转换成字符串,代码如下:


`import tesserocr
print(tesserocr.file_to_text("1.jpg"))`

结果也跟上面的一样,但网上不建议这么用,原因是据说这种识别效果不如上一种的好;

关于微博验证码为空,使用tesseract输出下原因:

tesseract 图片路径 output 

leptonica 在解析时没有检测到任何dpi;

5 验证码处理

网上找了下信息,比如这张验证码:

可能是验证码内的多余线条干扰了图片的识别;

又比如微博这张:

可能是字体位置,跟图案等因素干扰了图标的识别;

解决方案还是有的,需要对图片进行额外的处理,如转灰度,二值化等操作;

转灰度处理: 利用Image对象的convert()方法参数传入L,即可将图片转成为灰度图像:


`from PIL import Image

image = Image.open("1.jpg")
image = image.convert('L')
image.show()`

图片成功转灰了;此时我们再校验一下,发现校验还是MEEE,失败;

传入1的后,即可将图片进行二值化处理:
(二值化是指将图像上的像素点的灰度值设置为0或255,也就是将整个图片呈现出明显的只有黑和百的视觉效果)


`import tesserocr
from PIL import Image

image = Image.open("1.jpg")
image = image.convert('1')
image.show()`

这个一看,比上面更模糊了,理所当然的,校验结果会错的更加离谱:

二值化的阈值是可以指定的,上面的方法采用的是默认阈值127;但一般很少直接转换原图,原因如上可看到,错误的更加离谱了;

一般是先将原图转为灰度图像,然后再指定二值化的阈值,代码如下:


`import tesserocr
from PIL import Image

*#新建Image对象*
image = Image.open("1.jpg")
*#进行置灰处理*
image = image.convert('L')
*#这个是二值化阈值*
threshold = 150 
table = []

for i in range(256):
 if i < threshold:
 table.append(0)
 else:
 table.append(1)
*#通过表格转换成二进制图片,1的作用是白色,不然就全部黑色了*
image = image.point(table,"1")
image.show()
result = tesserocr.image_to_text(image)
print(result)`

这里说明下,可能有同学对256不明白,这是什么?
首先,我们是把图片置灰处理,灰度图像是一种具有从黑到白256级灰度色阶或等级的单色图像;
对于灰度图像利用阈值得到二值化的图像, 也就是说,我们设定了一个阈值,从0到256,如果灰度图像少于阈值则设置0,大于阈值则设置1,0是黑色,1是白色,这样做,就可以把一个灰度图完全转换二值化图;
可能还是懵逼,直接贴图:
原图

灰度图:

二值图:

在灰度图上,部分色彩是介于白色跟黑色之间,所以通过设置阈值的方法,把这些中间色彩全部转换成黑色跟白色;

ok,扯远了,上面把验证码二值图后是长这样的:

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值