IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python+undetected_chromedriver+chrome绕过五秒盾(cloudflare) -> 正文阅读

[Python知识库]python+undetected_chromedriver+chrome绕过五秒盾(cloudflare)

公司是做外贸的,所以需要爬取一些外国网站的商品竞品数据,但是在爬取某个网站的时候,遇到了五秒盾的阻拦。

说实话,一开始自己并不了解五秒盾,毕竟在之前爬国内网站的时候,并没有遇到过这种防护措施,但是在爬取这个外国邮件网站的时候,返回的文本中,总是有如下的信息:

?

?一直让 “Just a moment...”,一开始自己以为是加载缓慢,但是每次都有,这就不得不引起警觉。

在vscode中显示了一下html代码,并在浏览器上看了一下界面,发现是这样的

?这个.? ?"DDoS protection by Cloudflare" 是个啥子鬼?

但是看到DDoS?protection by这种字样,感觉应该是防止DDoS攻击的,但是这个“Cloudflare”又是个啥?

在网上查询了一下,原来是所谓“五秒盾”的东东,而且网上有针对这小盾盾现成的python模块,也就是cloudscraper模块,使用requests和scrapy都可以.

网上针对requests使用cloudscraper的比较多,但是本人使用scrapy,所以参考AroayCloudScraper(https://githubmemory.com/repo/hwpchn/AroayCloudScraper)模块重新修改了一下,进行爬取的时候,毫不费力的就饶过了对方设置五秒盾的网站,简直不要太过完美!

事情原本到这步已经告一段落,毕竟其他的事情就是用scrapy的xpath获取数据就可以了,但是........

两周后,当领导要求再次爬取得这个网站的时候,我发现,原来的代码竟然不管用了!

原因是代码返回了这个错误:

?what? 要钱了?!

本着能白嫖绝不付费的原则,我找了一下该模块的git,但是上面显示并没有付费内容,而且提示了貌似一年才更新一次.....

但是这个模块还能否继续使用呢?我决定在google先查为妙,查询结果中,有一个是在scrapy中设置:?????????'COOKIES_ENABLED': True,?即可使用,但是我试了一下,并没有神马卵用......

事到如今,看来这种方法应该是行不通了,还有其他办法,当然有!

首先想到的就是用selenium+chrome模拟浏览器去将数据采集下来,这种方法虽然有些繁琐,且一直为高级爬虫工程师所不齿,但是我大中华某位伟人曾经说过:“不管黑猫白猫,只要抓住耗子的就是好cat”。

说干就干!

立马在电脑上开始安装selenium,chromedriver,至于chrome,因为公司配的都是苹果电脑(不要问为啥,就是这么豪横!),但是我的是M1芯片的,所以要使用ARM架构的chrome。

安装步骤,以及对应版本的chromedriver就不展示了,总之万事皆备,只欠代码了!

忙不迭的将原来写过测试某宝的代码贴上测试一波,其中覆盖window.navitor.webdirver的值都已经妥妥的安排明白了,但是,竟然不行!

打开的浏览器界面,依然停留在五秒盾,我与对面的数据依旧还有一盾之隔!

怎么办?!怎么办?!领导限定的日期已经到了,再不出数据,就要被用键盘打死了😭 😭 😭

但是越是到这个时候,越不能慌张,毕竟写bug咱在行,找解决方法尤甚啊!

于是乎,我开启了疯狂搜索模式,功夫不负有心人,众里寻她千百度,方法就在隔壁拐角处!

我找到了一个webdirver的驱动模块,但是并不是selenium,而是undetected_chromedriver(GitHub - ultrafunkamsterdam/undetected-chromedriver: Custom Selenium Chromedriver | Zero-Config | Passes ALL bot mitigation systems (like Distil / Imperva/ Datadadome / CloudFlare IUAM)

这个模块可以完美的模拟chrome浏览器,并且不用设置js默认值,也就是无需自己再添加瞒天过海的设置,只要简单的几行代码就可以。

测试了一下,报错,说是我chrome的版本不匹配,而且undetected_chromedriver只支持chrome96及以上的版本!但是我的mac下载的就是最新的ARM架构的chrome,最多就是95。

为山九仞,可不能功亏一篑,我急忙查看该模块的git说明,幸好,有解释:

?也就是说该模块支持自定义chrome版本!

可以可以,这个结果很让我满意,忙不迭的测试一波,原本的数据页面在等待了五秒验证之后,真的出现了!果然很好很强大!

?但是在之前代码中,我使用递归函数的方式,但是需要每翻一页就要打开安装一次chrome,本着提(能)高(懒)效(即)率(懒)的方式,修改了下代码,换成了循环遍历的方式:

?好了,本次使用python+undetected_chromedriver+chrome绕过五秒盾的方法分享就到这,下次再见!😜 😜 😜

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:21:00  更:2021-11-20 18:22:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:21:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码