前言:

爬虫开源死得快,新浪微博又改策略了。在去年的这个时候,微博还是没什么限制的。2016年12月我将新浪微博爬虫的代码作了一次更新,并将文章转到了知乎,爬微博的人似乎从那个时候开始多了许多。也许是这个缘故,微博开始对IP设了限制,接着禁了原来免验证码的登录方式,现在将weibo.cn的登录途径也关了,weibo.cn采用m.weibo.cn的登录,登录过程中可能出现图形解锁验证码。这种验证码比较少见,因为多用在手机平台。

我怀疑QQ交流群(537549079)里应该是有新浪微博反爬虫的人,不过这也没什么关系,我们做爬虫的,本来就是带头“制造麻烦”的人,没有被请去喝茶,就已经要感恩了。另外需要声明一点,其实我个人并不需要微博数据,平时自己也没有爬,只是出于责任,既然把项目开源了,就有义务持续维护更新下去。另外是出于兴趣爱好,作为一名爬虫工作者,出现了新的反爬机制,我自己也是很兴奋 很想去研究突破的。

废话少说,上代码:WeiboSliderCode。
运行效果:

正文:

看到这种验证码时的第一感觉就是,效果还挺酷!第二感觉是,要破应该不难。
背景很干净,基本上不需要除噪;如果要写程序破解,只需要判断哪些点之间有连线,以及箭头的指向即可。背景和线条的像素很规范,使得我们只需要判断像素变化就可以很清晰地识别线条和箭头方向。

图片是由一个个像素组成的,Image打开图片后一个像素包含三个数值,分别代表RGB数值。将图片转为灰度图像后,每个像素只有一个数值,从0到255(从黑到白)。将图形解锁验证码的图片灰度化,可以发现图片背景值为253,线条的灰度值都为小于253的数。

缩小一下,来看看整张图:

是不是感觉这识别难度似乎也并不大?

后来我仔细想了一想,好像哪里不对劲,这验证码,,才四宫格!!这意味着什么?
四个点的连线,最多有多少种可能?手指掐一下也能算出:4*3*2*1=24。总共才24种可能,我只要手动收集这24张图,人工标识轨迹。以后每次遇到验证码,只要比对一下这24张图的像素值就能知道轨迹方向了呀!
哭笑不得,这验证码还真是简单得不行!

我们给四宫格的四个点定编号:1、2、3、4。如下图。则轨迹可以标记为:”2314”。

接下来收集24张图:

然后将各个图片转为像素矩阵,见Github代码中的 ims.py 文件。
当遇到一张新图片后,对比ims.py存的24张图的像素,得出轨迹方向。然后程序模拟操作鼠标滑动解锁。运行的效果图上面已经有了。感兴趣的可以拿代码运行一下。

程序运行步骤:

  1. 安装Python2.7,安装谷歌浏览器(Chrome)。
  2. 根据Chrome的版本下载chromedriver.exe(参考http://blog.csdn.net/huilan_same/article/details/51896672),解压放在Chrome的安装目录,并将该路径加入到环境变量。
  3. 需要安装的Python模块:PIL、StringIO、selenium。
  4. 运行 login.py

结语:

群里爬微博的,多是需要数据写论文的学生,其中很多都是非计算机专业的同学,可能抓取微博的过程中会遇到各种问题。还是那句话,需要数据的,爬之前尽量先找群里有数据的同学要,有偿也可以,因为数据抓取本来就是需要投入大量时间和人力的。尽量不要给微博官方造成不必要的麻烦。

我喜欢追求技术,但不希望自己会给他人造成很大困扰,谢谢!如果有什么问题请留言。

转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/71056741)

图形解锁验证码破解(附Python代码)相关推荐

  1. python重点知识归纳_一文了解机器学习知识点及其算法(附python代码)

    一文了解机器学习知识点及其算法(附python代码) 来源:数据城堡 时间:2016-09-09 14:05:50 作者: 机器学习发展到现在,已经形成较为完善的知识体系,同时大量的数据科学家的研究成 ...

  2. 教程 | 理解和实现自然语言处理终极指南(附Python代码)

     教程 | 理解和实现自然语言处理终极指南(附Python代码) 时间 2017-02-16 14:41:39 机器之心 原文  http://www.jiqizhixin.com/article ...

  3. 基于TextRank算法的文本摘要(附Python代码)

    基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18

  4. python 合并工作簿_Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)...

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

  5. XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只 ...

  6. python随机森林变量重要性_推荐 :一文读懂随机森林的解释和实现(附python代码)...

    原标题:推荐 :一文读懂随机森林的解释和实现(附python代码) 作者:WilliamKoehrsen:翻译:和中华:校对:李润嘉 本文约6000字,建议阅读15分钟. 本文从单棵决策树讲起,然后逐 ...

  7. Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

  8. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

  9. 基于ANFIS的股票价格预测附Python代码

    基于ANFIS的股票价格预测附Python代码 在金融领域,股票价格预测一直是一个重要的问题.随着机器学习技术的发展,人们开始尝试使用神经网络等方法进行股票价格的预测. ANFIS(自适应网络基石推理 ...

最新文章

  1. OpenCV(十)ROI感兴趣区域
  2. Task中的异常处理
  3. python分类算法报告_Python机器学习(1)——决策树分类算法
  4. 图文解释Glados自动签到免费获取天数(github action版)
  5. groovy怎样从sql语句中截取表名_Mysql和SQL
  6. java 设计模式原则_Java设计模式的七大原则
  7. CALL 和 ret 指令
  8. 时间戳转换为时间格式,时间格式转换为时间戳
  9. Minix、UNIX、Linux的区别与联系
  10. 基于ADS54J40的JESD204B ADC 1GHz采样逻辑开发笔记
  11. 安卓手机Mqtt调试工具 ESP8266 mqtt服务器
  12. Wincc报表教程(SQL数据库的建立,wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置和打印功能)
  13. c语言 函数调用顺序,C++函数定义和调用过程(超详细)
  14. Uipath 安装Chrome插件
  15. python按字母顺序排列_如何在Python中按字母顺序排列文件?
  16. 自动化测试框架rf(Robot Framework)的安装
  17. Docker从0到1
  18. 【毕设记录】第一篇:开题,整体App计划
  19. GD32F4xx控制DGUS触控按键
  20. Navicate无法连接,提示is not allowed to connect to this mysql server

热门文章

  1. 【企业】财务思维之如何通过财报分析企业
  2. 网站数据统计分析之二:前端日志采集是与非
  3. 早期做的Fireworks闪光字教程,顺便怀念一下
  4. java计算机毕业设计舞蹈网站源码+lw文档+系统+数据库
  5. 新东方mti百科知识pdf_新东方 2019考研英语 阅读理解精读100篇 基础版.pdf
  6. fffffffffffffffffff
  7. 爬虫:python如何获得天气数据
  8. Qt的初学路程(一)电子时钟
  9. Jenkins + Gitlab 实现代码流水线部署
  10. 利用EFAST方法分析DHSVM参数的敏感性