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

这篇具有很好参考价值的文章主要介绍了Python使用Selenium库如何绕过Cloudflare验证,网页请确认你是不是机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是淘小白~

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

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

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/    回车

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

注意斜杠转义一下。

5、总结

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

6、资料下载地址

资料下载地址:下载地址 提取码:n6jl 文章来源地址https://www.toymoban.com/news/detail-752929.html

到了这里,关于Python使用Selenium库如何绕过Cloudflare验证,网页请确认你是不是机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java爬虫遇到网页验证码怎么办?(使用selenium模拟浏览器并用python脚本解析验证码图片)

            笔者这几天在爬取数据的时候遇到了一个很闹心的问题,就是在我爬取数据的时候遇到了验证码,而这个验证码又是动态生成的,尝试了很多方法都没能绕开这个验证码问题。         我的解决方案是:使用selenium模拟浏览器行为,获取到动态生成的验证码后用

    2024年02月09日
    浏览(69)
  • 华纳云:Python中如何使用Selenium爬取网页数据

    这篇文章主要介绍“Python中如何使用Selenium爬取网页数据”,在日常操作中,相信很多人在Python中如何使用Selenium爬取网页数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中如何使用Selenium爬取网页数据”的疑惑有所帮助!接下

    2024年02月07日
    浏览(58)
  • 如何使用Python的Selenium库进行网页抓取和JSON解析

    随着互联网的快速发展,网页抓取和数据解析在许多行业中变得越来越重要。无论是电子商务、金融、社交媒体还是市场调研,都需要从网页中获取数据并进行分析。Python的Selenium库作为一种自动化测试工具,已经成为许多开发者的首选,因为它提供了强大的功能和灵活性。

    2024年02月10日
    浏览(222)
  • 如何使用Python自动化测试工具Selenium进行网页自动化?

    Selenium 是一个流行的Web自动化测试框架, 它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为 。 Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAutoGUI和AutoIt相比, Selenium更适合于处

    2023年04月09日
    浏览(106)
  • 使用Cloudflare Warp绕过GPT的IP ban

    ubuntu 22.04下的lnmp环境 v2ray ws + tls + cdn 推荐使用一键安装脚本来安装: bash (curl -fsSL git.io/warp.sh) wg  附项目地址:https://github.com/P3TERX/warp.sh 也可以手动安装,详见wiregurad官方文档 ViRb3/wgcf 是 Cloud­flare WARP 的非官方 CLI 工具,可以通过wgcf来模拟warp客户端注册账号,生成通用配

    2024年02月05日
    浏览(40)
  • 爬虫日常-selenium登录12306,绕过验证

    hello兄弟们,这里是无聊的网友。愉快的周末过去了,欢迎回到学习频道。书接上文,我们说到了再用selenium登录12306时遇到了滑块验证的问题。当前的网站几乎每家都会在登录模块添加一个认证,来规避各种爬虫,而我们则不断的去想办法绕过这些验证模块。目前一些简单的

    2024年02月07日
    浏览(44)
  • Python针对Cloudflare的假5秒盾验证逆向

    最近Friendtech挺火的,所以想写一个全自动的脚本,包含自动买卖+推特账号粉丝数量检测。按理说这种东西属于很简单的爬虫,啪啪啪requests发个get请求就数据到手。 如果这么简单,那就真的谢天谢地了😂😂 先说说遇到的坑。 1.返回数据中包含“Just a moment\\\"内容的验证页面。

    2024年01月21日
    浏览(39)
  • python使用selenium打开网页失败

    以上是我的代码,没有做课题,直接敲出现一下问题: 1、第一句报红 没下载selenium 在win+R---cmd中直接运行命令  2、网页打不开---没有下载浏览器驱动器(以谷歌为例) 首先在谷歌的设置--关于中查看版本号  然后打开网址http://npm.taobao.org/mirrors/chromedriver/ 找到前缀和自己版

    2024年01月19日
    浏览(44)
  • 使用Python和Selenium抓取网页内容

    采集动态网页是困扰许多人的难题,不妨使用 Python 和 Selenium抓取网页数据。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 你是否对从网站提取数据感兴趣,但发现自己被网络抓取的复杂性所困扰?不要害怕,我们在这篇文章中将展示如何利用 Selenium 和

    2024年02月07日
    浏览(56)
  • python使用selenium模拟登录网页页面

    python的selenium用于自动化测试,但是在自动化测试的时候也可以用来模拟登录,本次用selenium模拟登录某DN网页 代码如下(示例): 本次使用的是谷歌的内核若有需要,也可以换其他浏览器的内核 首先打开CSDN页面准备在页面中定位元素 为方便操作,直接在开发者界面中复制

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包