在爬取jianshu文章的时候发现,jianshu竟然买了阿里云的盾块验证!!!很是头疼,虽然说没有其他图片匹配的那么麻烦,但是阿里云的人机验证和算法真的是顶尖的,查阅了多个资料最后没办法,才实现用webdriver模拟鼠标去通过验证

首先我们需要安装webdriver驱动和Google Chrome浏览器,驱动连接如下:

http://chromedriver.storage.googleapis.com/index.html

需要注意的是驱动版本要与浏览器版本相对应,不知道怎么找的可以看我的另一篇文章

Python爬虫scrapy+webdriver,selenium使用webdriver启动chrome出现闪退现象_WakeUpCcc的博客-CSDN博客

安装完驱动后,需要安装一个模拟鼠标的配件:pyautogui

在Terminal中输入:

 pip install pyautogui

接下来就需要搭建通道了

需要注意的是,阿里的盾快验证很厉害,不要随意调用返回页面Response中的参数,否则会直接报错!!!!!!

需要配置UA和去掉浏览器的标头等:

​
options = webdriver.ChromeOptions()
options.add_argument('--disable-gpu')
options.add_argument('no-sandbox')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"')​

然后启动本地Chrome:

​
driver = webdriver.Chrome(options=options)--启动浏览器
driver.wait = WebDriverWait(driver, 10, 1)
driver.maximize_window()--放大浏览器​

接下来就要获取滑块的坐标了:

sizex, sizey = pyautogui.size()--创建鼠标x,y坐标pyautogui.dragTo(sizex * 0.54, sizey * 0.26, duration=sj, button='left')--duration为滑动时长,button为鼠标状态,left指按住鼠标左键pyautogui.dragRel(260, 0, duration=sj1, button='left')--第一个参数为x轴长度,第二个参数为y轴参数

阿里的算法也是很牛的,拖动滑块的时长不能写入固定值

这里采用了随机数的方法:

sj = (random.uniform(1, 3))
sj = format(sj, '.9f')
sj = float(sj)sj1 = (random.uniform(1, 4))
sj1 = format(sj1, '.9f')
sj1 = float(sj1)

最后建议验证成功后等待2~3秒,给服务器一个响应时长

验证成功后返回页面response时长即可

总结:整体来说并不是很难,只不过方法笨了点,但是也是解决了问题不是

缺点:过于依赖网络波动,网络波动较大,则会导致页面响应时间过长,或者验证失败

这种验证方法并不是百试百灵,也会有验证失败的情况

python爬虫 scrapy+selenium+webdriver实现鼠标滑动破解阿里云盾快验证相关推荐

  1. Python 阿里云盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次阿里云盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.pyautogui 分析 最近在做中国庭审公开网数据分析的时 ...

  2. python爬虫——scrapy+selenium爬取新浪微博及评论

    本文主要对爬取过程中所用到的知识做简单总结,最后有项目链接. 一.项目简介 本项目利用python的scrapy框架+selenium模拟登陆微博来爬取带有关键字的微博及微博下面的评论(1 .2级评论 ...

  3. python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取

    python爬虫–Scrapy框架–Scrapy+selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段,对使用scrapy + selenium进行政策文本爬虫进行记录.用于个人爬虫学习记 ...

  4. Python爬虫之selenium库使用详解

    Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...

  5. python爬虫之selenium,谷歌无头浏览器

    python爬虫之selenium和PhantomJS 主要的内容 lenium hantomjs 无头浏览器 的懒加载 一 什么是selenium? 介绍 它是python中的一个第三方库,对外提供 ...

  6. Python爬虫之selenium高级功能

    Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...

  7. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. python 模拟浏览器selenium_浅谈python爬虫使用Selenium模拟浏览器行为

    前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...

  9. python爬虫——使用selenium爬取微博数据(一)

    python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...

  10. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

最新文章

  1. WWDC 2018:iOS 12 通知的新特性
  2. 前端学习(2816):原生框架目录结构
  3. 东北考生到南方学计算机,为啥东北考生都想去南方,而南方学生很少考东北,看看他们怎么说...
  4. Java 并发(入门梳理)
  5. 华为云企业级Redis评测第一期:稳定性与扩容表现
  6. HTTP协议的无状态性
  7. Android-图像识别项目OpenCV(4):开发思路以及问题
  8. Java 操作 HBase 教程
  9. ICEM CFD简明教程
  10. 修复漏洞显示连接服务器失败,服务器安全狗漏洞补丁失败怎么办
  11. 计算机mac地址设置路由器,路由器mac地址怎么设置
  12. IAR+STVP烧录程序排错
  13. tp5——实践前台模板引入
  14. 如何把Excel中表格复制粘贴到PPT中,并更改表格边框颜色
  15. 声音存储空间计算公式_音频文件存储容量计算
  16. python header是啥_Python爬虫之Header
  17. win7系统服务器角色向导,Windows Server2012入门-添加服务器角色和功能
  18. IP和MNC地址协议
  19. 微信开发者工具如何打开企业微信小程序
  20. Win系统如何取消f1打开浏览器

热门文章

  1. NPN、PNP型三极管的常见问题
  2. android9自动安装权限9,按键精灵所有者读写权限安卓9.0如何获取?设置
  3. 【Hadoop】Hadoop Snappy 安装 (Ubuntu 16.04)
  4. XRecycleView (Scrapped or attached views may not be recycled)
  5. Tableau实战 网站客户细分仪表盘
  6. 浅谈如何在优麒麟22.04中使用Eigenstrat和Plink工具生成类23andMe格式原始数据
  7. 1575万美元!2023科学突破奖揭晓,AlphaFold、量子计算等突破斩获殊荣
  8. require与import的区别和使用(CommonJS规范和es6规范)
  9. 关于错误“未能加载文件或程序集”的错误的若干处理办法——对GAC的简单应用
  10. aardio学习记录-1.基本概念和自定义类的调用