前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >博客园自动发帖--图像处理极验验证码

博客园自动发帖--图像处理极验验证码

作者头像
星星在线
发布2018-08-21 10:23:43
9940
发布2018-08-21 10:23:43
举报
文章被收录于专栏:python爬虫实战之路

为了写这篇文章,先写了两篇爬虫cookies详解和selenium+requests进行cookies保存读取操作,感兴趣的朋友可以看看前两篇文章。

这篇文章我主要是提供另一种滑动验证码的处理方式,看过我文章的朋友应该知道那篇极验验证码破解之selenium,在那篇文章中我们通过分析元素中的图片信息拼接完整图片和缺口图片,然后通过像素对比计算移动距离,使用selenium模拟拖动完成验证。

为什么要用图像处理的方式

在上一篇极验验证码破解的文章中,我们能找到图片拼接信息还原原来的图片,但是后来我发现在很多网站中极验验证码的显示都是使用canvas进行渲染的,在网页元素中是找不到图片信息的,例如我们要说的博客园登录

那么针对这种方式我们怎么获取图片进行缺口计算呢?很简单,截图

截图处理

这是弹出框显示的图片

这是点击拖动按钮显示的图片

那么我们只要把这两块图片截下来,然后把滑块部分过滤掉,其他部分进行像素对比,即可获取拖动距离。使用selenium进行截图保存很方便,但是要注意不同的浏览器截图方式不同,如果使用Firefox浏览器,可以直接获取图片元素,进行元素截图;如果使用chrome浏览器,此功能有BUG,我们可以进行浏览器截屏,然后把整个图片中图像部分进行裁剪处理,得到全图和缺陷图。

使用get_screenshot_as_file(filename)接口,将登录页面截图保存下来,然后获取canvas元素

得到x、y坐标和大小

代码语言:javascript
复制

使用Image库打开保存的截图文件,然后使用crop函数进行截图,再使用灰度处理(灰度处理主要是为了减少像素点的处理,不是必须的)

代码语言:javascript
复制

图片分析

通过观察图片我们发现每个缺口图片的都是处于最左侧,即最左侧部分为滑块,无需进行像素对比,对滑动块进行截图查看,宽度基本在60像素左右,我们可以直接越过前面这部分,但是保险起见我还是从开始进行像素计算,在得到第一个不同像素后,向后加+60像素,继续进行像素对比。

代码语言:javascript
复制

移动处理

这里的移动处理同极验验证码破解之selenium中一样,具体解释可以查看上篇文章

代码语言:javascript
复制

移动处理这里识别率不是很高,当我们移动失败后,要进行重试,如果验证成功后面提示显示登录成功,我们通过查看tip_btn元素的文本信息即可

进行多次尝试以后,拖动框会消失,点触式按钮显示点击重试,我们同样检测点触式按钮上是否显示点击重试字样,如果存在就执行一次点击事件

在进行极验验证码处理的过程中一定要进行失败重试的处理,因为我们很难做到百分百验证成功。

代码语言:javascript
复制

登录完成处理

登录完成以后,我们保存cookies到本地,以供requests使用,具体使用方式请参看selenium+requests进行cookies保存读取操作

代码语言:javascript
复制

自动发布博客园随笔文章

登录完成保存了cookies我们就可以使用requests来发布博客园随笔文章了。这回又转到我们熟悉的请求分析啦。

  1. 打开chrome,登录博客园,打开我的博客
  1. 打开Charles,点击“新随笔”
  1. 添加随笔并发布

查看POST请求,form值中title、body还有两个__开头的变量,其他的都是固定值,找一下__VIEWSTATE/__VIEWSTATEGENERATOR的值

代码语言:javascript
复制

将要发布的文章粘贴到.md文件中,因为博客园中使用的是Markdown编辑器,然后再传入文章主题执行即可

这几篇文章都是自动发布的哦,怎么样,还可以吧,哈哈。博客园的自动发布搞定了,还有其他的,以后就可以一键发布到其他网站再也不需要手动去搞啦

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python爬虫实战之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要用图像处理的方式
  • 截图处理
  • 图片分析
  • 移动处理
  • 登录完成处理
  • 自动发布博客园随笔文章
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档