Python使用Selenium库如何绕过Cloudflare验证,网页请确认你是不是机器人

news2024/12/22 21:05:39

大家好,我是淘小白~

前段时间使用selenium库写chatGPT的脚本,遇到过一个问题,那就是cloudflare的机器验证,让你点击确认不是机器人,这个问题最后找人解决掉了,我也是百度了很久没找到答案,B站找到的一个UP主,只要报名人家的课程才会给方法,所以,下面就把这个问题怎么解决来说明一下!

1、被检测到的原因

网站检测到了网页是selenium驱动起来的,并且包含一些特定的特征导致的机器验证。

2、网上查找方法

我查了两天的资料,最后发现所有的资料都指向一个库Undetected-chromedriver

下面是一位博主给的解决办法: 

# Cloudflare和很多其他网站一样会检测访问是否为Selenium bot,其中一项为检测Selenium运行时出现的特有js变量。

# 这里主要包括了是否含有"selenium"/ "webdriver"的变量或者含有"$cdc_"/"$wdc_"的文件变量。

# 每个driver的检测机制会不一样,此处给出的方案基于chromedriver。

# 1. Undetected-chromedriver
# 非常简单好用的包,直接pip安装,如下初始化driver即可,之后就像正常Selenium使用即可。

import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get('https://nowsecure.nl')
# 2. 直接修改chromedriver executable
# 将key变量修改成任意不含"cdc"的字符。

/**
 * Returns the global object cache for the page.
 * @param {Document=} opt_doc The document whose cache to retrieve. Defaults to
 *     the current document.
 * @return {!Cache} The page's object cache.
 */
function getPageCache(opt_doc, opt_w3c) {
  var doc = opt_doc || document;
  var w3c = opt_w3c || false;
  // |key| is a long random string, unlikely to conflict with anything else.
  var key = '$cdc_asdjflasutopfhvcZLmcfl_';
  if (w3c) {
    if (!(key in doc))
      doc[key] = new CacheWithUUID();
    return doc[key];
  } else {
    if (!(key in doc))
      doc[key] = new Cache();
    return doc[key];
  }
}

# 这两种本质上没有太大的区别,undetected-chromedriver本质上是给chromedriver启动时打上了一个补丁,完成了修改key的那一步

def patch_exe(self):
    """
    Patches the ChromeDriver binary
    :return: False on failure, binary name on success
    """
    logger.info("patching driver executable %s" % self.executable_path)
 
    linect = 0
    replacement = self.gen_random_cdc() #此处修改了cdc的名称
    with io.open(self.executable_path, "r+b") as fh:
        for line in iter(lambda: fh.readline(), b""):
            if b"cdc_" in line:
                fh.seek(-len(line), 1)
                newline = re.sub(b"cdc_.{22}", replacement, line)
                fh.write(newline)
                linect += 1
        return linect

这个库我自己测试了很久,都是有报错的问题存在,看github上面的讨论区,也没有多少有质量的讨论,大部分还是没有解决这个问题。

3、需要具备条件

3.1谷歌浏览器117或者116版本的,最新版的118的不行

3.2 下载谷歌浏览器对应版本的驱动

3.3下载我提供的 undetected_chromedriver.exe,放在Python代码的目录下面

下载链接会附在文章末尾!

注意:把自己的谷歌浏览器卸载掉,然后,驱动下载下来,放到python安装目录的根目录下面,还有就是百度一下,把谷歌浏览器的自动更新给禁止掉。安装好我提供的谷歌浏览器之后,就可以开始测试了,禁止更新,后面可以自己搞一下。

4、增加下面代码

    chrome_options.add_argument('--disable-infobars')
    chrome_options.add_argument('--disable-blink-features=AutomationControlled')
    chrome_options.add_argument("user-data-dir={}".format(user_data_dir))
    driver = Chrome(service=Service('./undetected_chromedriver.exe'), options=chrome_options)

user_data_dir 我直接调用的谷歌浏览器的本地数据,使用这个方法,就可以用登录自己账号了,淡然,也可以删除掉这个,提取方法:谷歌浏览器搜索框,chrome://version/    回车

注意斜杠转义一下。

5、总结

修改完自己的代码之后,在测试一下,就可以绕过cloudflare的验证了,而且很稳定 ,对于里面的代码什么意思,大家可以自己查找一下,不做解释了。

6、资料下载地址

资料下载地址:下载地址 提取码:n6jl 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

053:mapboxGL中sources的6种类型及各类型的示例代码

第053个 点击查看专栏目录 本篇文章是mapbox的source的归纳总结。 mapbox中 sources 是什么 sources:数据源集合(必填,用于包含一系列数据源 source,这些数据源提供了在地图上显示的数据) sources 是对象 {} 的形式,其属性名就是 数据源的名称(或者说 数据源的 id),…

网络基础初谈

0.一些无关紧要的心里话 ​ 一转眼学习计算机知识已经一年多了,中间起起伏伏,断断续续,但还算好也是坚持到了今天,之所以把这些基础知识写成一个系列,一方面方便知识巩固,另一方面至少还有三三两两的几个朋…

Linux命令之chpasswd命令

一、chpasswd命令简介 chpasswd命令用于同时更改多个用户的密码。它可以从标准输入或指定的文件中读取用户名和密码的组合,并将其应用于系统中的用户。chpasswd命令通常用于批量更改用户密码,特别是在自动化脚本或批处理任务中,该命令需要roo…

ERP系统供应商协同:优化企业供应链管理

一、ERP系统供应商协同的概念和功能 供应商协同是指在供应链中,企业与供应商之间通过ERP系统进行紧密合作和信息共享,实现供应链各个环节的协调和优化。ERP系统供应商协同功能涉及以下方面: 1. 供应商管理:ERP系统提供完善的供应…

华为云云耀云服务器L实例评测|windows系统3389防爆破之安全加固教程

为什么要选择华为云云耀云服务器L实例: 华为云在全国范围内建立了多个数据中心,这些数据中心之间相互冗余,以确保高可靠性和可用性,用户可以选择最适合的区域来部署应用程序,以实现更好的性能和延迟。 相对于传统的物…

选择什么电容笔比较好?平板手写笔推荐

由于苹果Pencil的热销,让华国内市场上,也出现了不少的平替式电容笔,这些产品,有好有坏,价格也很公道。不过,也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友,在前几年就开始用上…

docker安装和docker安装RabbitMQ

docker安装 执行命令,先查看是否有Docker docker --version 如果想要删除:yum -y remove docker-ce 如果没有需要安装: 1.执行命令,实现Docker安装 yum install -y yum-utils yum-config-manager --add-repo http://mirrors.…

数组模拟堆实现堆排序

文章目录 QuestionIdeasCode Question 输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。 输入格式 第一行包含整数 n 和 m 。 第二行包含 n 个整数,表示整数数列。 输出格式 共一行,包含 m 个整数,表示整数数列中前 m …

如何选择安全可靠的跨网文件安全交换一体机?

各行各业为了保护核心数据,绝大多数企业采取的第一个步骤是将企业内网与互联网进行隔离,将内部数据“困在”内网,同时也能够有效屏蔽外部网络攻击的风险。较大规模的企业,比如金融、政府、集成电路等行业机构,还可能对…

UE5----使用C++的项目重新打开后东西丢失

最近开始学习c编写代码,发现在场景里放置了Actor后,第二天打开项目,场景里边的放的球啊啥的东西没有了,蓝图类也丢失了父类。 解决方案: 不在Epic里打开虚幻引擎,在VS中打开。点击这个小绿三角&#xff0…

河北吉力宝:多维发力走创新智能鞋业道路

在快速发展的时代潮流中,智能科技正在改变我们的生活方式,消费者的选择更加多元化,以及制鞋行业同质化竞争严重等多重不利因素的影响,我国制鞋行业竞争加剧,各制鞋企业也在不断探索新市场,进一步拓展市场空…

京东数据分析:2023年下半年母婴市场各大细分赛道消费趋势盘点!

于今天的新生代父母而言,在诸多消费观念被改变的当下,新生父母们在育儿上更强调精细化,在这种情况下,母婴市场的消费升级已是大势所趋。不过,在如今收入增速整体放缓的背景下,各细分赛道的消费升级都出现了…

文心大模型4.0正式发布!来看看这届百度世界有啥亮点

今天,2023百度世界大会开幕了,大家都关注了吗?本次大会有很多亮点,我先摘一些和大家分享。 李彦宏现场做「手把手教你做AI原生应用」的分享,百度很多产品通过大模型进行了重构。文心大模型4.0重磅发布,综合…

mac读写硬盘的软件Tuxera NTFS2023免费版下载

Mac用户在使用NTFS格式移动硬盘时,会遇到无法写入硬盘的情况。要想解决无法写入的问题,很多人选择使用Mac读写软件。面对市面上“众多”的读写硬盘软件,用户应该怎么选择呢?初次接触移动硬盘的伙伴可能不知道移动硬盘怎么和电脑连…

短视频矩阵剪辑系统源码

短视频剪辑矩阵系统开发源码----源头搭建 一、源码技术构建源码部署搭建交付之---- 1.需要协助系统完成部署、接口全部正常接入、系统正常运行多久?7个工作日 2.需要准备好服务器以及备案域名 3.短视频SEO模块一年项目带宽,带宽最低要求10M,…

基于Java的交通事故档案管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

vue重修【005】自定义路由、插槽

文章目录 版权声明自定义指令指令初识指令中配置项指令语法指令值v-loading指令的封装分析实现 插槽默认插槽插槽默认值具名插槽作用域插槽使用步骤完整案例 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程…

[python 刷题] 143 Reorder List

[python 刷题] 143 Reorder List 题目: You are given the head of a singly linked-list. The list can be represented as: L 0 → L 1 → … → L n − 1 → L n L_0 → L_1 → … → L_{n - 1} → L_n L0​→L1​→…→Ln−1​→Ln​ Reorder the list to be o…

安装SSL证书提示不信任,怎么办?

随着越来越多的SSL证书错误的状况出现,经常有“SSL证书不受信任怎么办”这类的难题,而且对这种难题很头痛,以下是JoySSL公司常见的SSL证书不受信任的缘故及解决方案。 1.证书过期 网络证书跟我们的纸质证书一样,他都会有一个有效期…

K 近邻算法解析: 从原理到实践的机器学习指南

机器学习 第三课 k 近邻 概述机器学习简介K 近邻算法K 近邻中的距离欧氏距离曼哈顿距离余弦相似度 选择合适的 K 值奇数 vs 偶数通过交叉验证选择 k 值 实战分类问题回归问题 K 近邻算法的优缺点优点缺点 手把手实现 k 近邻手搓算法实战分类 概述 机器学习 (Machine Learning)…