前言

  • springboot 2.0.0.RELEASE
  • selenium-java 3.9.1
  • chromedriver win32 2.33
  • chrome 62.0.3202.94
  • 你已经可以编写selenium程序爬一个没有验证码的网页,但现在碰到了一个拖动验证码:https://cf.aliyun.com/nocaptcha

总结

经过搜索、尝试、再搜索、再尝试…,终于发现需要使用两项技术对selenium进行反爬:

  • webdriver属性
  • 特征$cdc_asdjflasutopfhvcZLmcfl_

通过js脚本提取webdriver属性和特征$cdc_asdjflasutopfhvcZLmcfl_,将提取结果进行编码后发送给服务器。服务器发现是selenium爬虫后,拒绝验证。

知道了反爬,则反反爬也就好办了。逐项针对规避即可。
有大神已经将步骤整理:https://blog.csdn.net/sdzhr/article/details/86714328
下面解惑一下:

webdriver属性

Chrome从v63版本开始添加了webdriver属性。只要通过selenium调用了浏览器便会将这个属性设置为true。

当服务器通过js脚本识别到webdriver属性时,会有如下现象:

  • 手工启动chrome,人工拖动验证码可以通过验证
  • 使用selenium启动chrome,人工拖动验证码无法通过验证
  • 使用selenium启动chrome,程序模拟拖动验证码无法通过验证

所以,避开webdriver属性需要使用低于v63版本的Chrome(v62.0.3202.94版本测试通过)。

注:

  • 参考文章中提到的chrome 62.0.3202.62版本,未找到下载链接。
  • chrome和chromedriver之间是有对应关系的,版本不匹配则无法使用。chrome和chromedriver之间的对应关系。
  • 换用Firefox,也会有webdriver属性。
  • 在浏览器的console控制台中输入navigator回车后,在输出中会发现webdriver属性,且值为true。

特征$cdc_asdjflasutopfhvcZLmcfl_

$cdc_asdjflasutopfhvcZLmcfl_是chromeDriver的特征之一。

chromeDriver会创建cdc_asdjflasutopfhvcZLmcfl_元素,并将该元素用于各种操作。比如,在使用findElement方法时,会使用该元素。

当服务器通过js脚本识别到特征“$cdc_asdjflasutopfhvcZLmcfl_”时,会有如下现象:

  • 手工启动chrome,人工拖动验证码可以通过验证
  • 使用selenium启动chrome,人工拖动验证码可以通过验证
  • 使用selenium启动chrome,程序模拟拖动验证码无法通过验证。(原因即为上面所述)

避开webdriver属性需要修改chromeDriver中的特征$cdc_asdjflasutopfhvcZLmcfl_。修改方法:

  1. 通过文本编辑器打开chromedriver。linux下,通过vim chromedriver打开。windows下,通过notepad++打开chromedriver.exe。
  2. 查找特征"cdc_",改为"chr_"。(删掉几个字符,则加几个字符。不能改变var key = '$cdc_asdjflasutopfhvcZLmcfl_';key字符串的长度。否则,会导致chromedriver程序无法执行)
  3. 修改完成后保存。

Using Vim

vim /path/to/chromedriver

After running the line above, you’ll probably see a bunch of gibberish. Do the following:

  1. Search for cdc_by typing /cdc_and pressing return.
  2. Enable editing by pressing a.
  3. Delete any amount of $cdc_lasutopfhvcZLmcfland replace what was deleted with an equal amount characters. If you don’t, chromedriverwill fail.
  4. After you’re done editing, press esc.
    5.To save the changes and quit, type :wq!and press return.
  5. If you don’t want to save the changes, but you want to quit, type :q!and press return.
  6. You’re done.

Go to the altered chromedriver and double click on it. A terminal window should open up. If you don’t see killed in the output, you successfully altered the driver.

springboot开发selenium程序

springboot开发selenium非常简单。可以参考:https://blog.csdn.net/l707268743/article/details/80942246

参考

https
?/blog.csdn.net/sdzhr/article/details/86714328
https://gitee.com/bobozhangyx/java-crawler/blob/master/file/编译后的chromedriver/
https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver
https://blog.csdn.net/l707268743/article/details/80942246

selenium:反反爬拖动验证码相关推荐

  1. Python使用selenium过天眼查滑块验证码反爬实现模拟登录

    Python使用selenium过天眼查滑块验证码反爬实现模拟登录 天眼查的滑块验证码样式 一顿操作到滑块验证码阶段 破解滑块验证码 结束 天眼查的滑块验证码样式 在输入账号和密码后会发现这个令人讨厌 ...

  2. 针对淘宝反selenium的反反爬措施详讲1-----pyautogui

    现在某猫和某宝在反反selenium的道路上越越来恶毒了,大部分是检测webdriver的关键符(网上有很多介绍这里就不一一介绍了)当我们遇到反selenium那该怎么办??????????????? ...

  3. 已解决selenium框架接管已经打开的谷歌浏览器(Python反反爬教程,亲测有效)

    已解决selenium框架接管已经打开的谷歌浏览器(Python反反爬教程,亲测有效) 文章目录 问题描述 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 问题描述 使用selenium自动化测试 ...

  4. python爬图片_网络爬虫经验:反爬和反反爬

    我想很多人入门python是图片爬虫,就是HTTP请求,保存一下图片,用python实现非常快.网上很多爬虫的教程就讲到这里,实际上很单一,看了跟没看没什么区别,都是找一下网页的规律,然后Beauti ...

  5. python爬虫反爬 css 知乎 专栏_反反爬虫系列(四)

    过完年,好了,咱们接着更新反反爬虫系列 至于之前有朋友表示出一下1688呀,x宝的反反爬虫 说实在的,阿里系的反爬虫很厉害,我自愧不能搞定. 比如x宝的登录,用了selenium + chrome的朋 ...

  6. day 15爬虫与反爬虫与反反爬

    爬虫与反爬虫与反反爬 爬虫的流程: ​ 1.请求网页,获取响应结果 ​ 2.解析网页,提取数据 ​ 3.数据持久化(写入存放位置) 反爬与反反爬 1.User-Agent:将爬虫伪装成浏览器.例如:豆 ...

  7. Python爬虫学习第九天---反爬与反反爬

    反爬与反反爬 一.常见反爬手段和解决思路 1.服务器反爬原因 1.爬虫占总PV比例较高,这样浪费钱. 2.三月份爬虫:每年的三月份我们会迎接一次爬虫高峰期,有大量的硕士在写论文的时候会选择爬取一些往网 ...

  8. Python爬虫自学之第(①)篇——爬虫伪装和反“反爬”

    有些网站是防爬虫的.其实事实是,凡是有一定规模的网站,大公司的网站,或是盈利性质比较强的网站,都是有高级的防爬措施的.总的来说有两种反爬策略,要么验证身份,把虫子踩死在门口:要么在网站植入各种反爬机制 ...

  9. python爬虫反爬对抗_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...

    你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 "知己知彼,才能那啥" 那么对于像猫眼电影.大众点评等等 那样的 c ...

最新文章

  1. 新手学stm32学f1还是f4,stm32初学者最好买哪种开发板?
  2. 用Xwt构建跨平台应用程序[转载]
  3. [YTU]_2631( B1 能存各种类型数据的Store类)
  4. python画方波_今天学会傅里叶画画,明天就是初音未来 - 如何用Python和Blender画任意图形...
  5. Scala成员属性:使用_给属性赋默认值/私有/val
  6. php 重载等号,重载运算符
  7. ip网络基础知识及原理_关于网络测试的5个命令
  8. DataGridView绑定对象数组 c# 1614236580
  9. React:网络工具库
  10. 进程、线程、I/O密集、计算密集
  11. MySQL 数据归档清理方法
  12. 读书笔记——魔鬼经济学3
  13. syn重发_TCP/IP中SYN,FIN的缩写意思
  14. Transformer 中 Decoder 结构解读_by 弘毅
  15. 基于SpringBoot的健身房管理系统
  16. android 查看视频大小,android mediaplayer 视频修改视频大小 (屏幕尺寸mediaPlayer =......
  17. 用JSP/Servlet应用开发一个简单的考试报名系统
  18. 路由器CFE-固件-NVRAM
  19. 【MySQL】索引的使用和优化
  20. PyTorch 深度学习实践 第4讲

热门文章

  1. Java第十次作业--多线程
  2. spark内核回顾思考 RDD
  3. 操作 Wave 文件(14): waveOutSetPlaybackRate、waveOutSetPitch
  4. VS环境下的makefile编译
  5. php 去除二维数组中的包含某一个值的数组
  6. Hibernate常见问题集锦
  7. python算法与数据结构-二分查找算法
  8. linux下Vim和Terminal配色
  9. Linux的which查找环境变量的文件
  10. Yii的各种render