首页 > 其他分享 >Playwright爬虫绕过Cloudflare人机验证

Playwright爬虫绕过Cloudflare人机验证

时间:2023-11-23 21:13:48浏览次数:44  
标签:webdriver Playwright -- 爬虫 disable navigator Cloudflare

1. 问题描述

有些网关接入了Cloudflare的人机验证组件,当使用Playwright等自动化工具爬取的时候,会被人机验证阻拦。阻断的效果如下:

2. 问题原因

Selenium、Puppeteer、Playwright等自动化控制工具的实现都会遵循一个规范,就是使用这些工具的时候,获取 navigator 的 webdriver 属性时,会返回 true,而普通浏览器会返回 undefined

3. 解决方案

方案1:通过CDP修改属性

cdp为Chrome Devtools-Protocol(Chrome 开发工具协议)。
代码如下:

const js = `Object.defineProperty(navigator, 'webdriver', {
  get: () => undefined
})`;
await page.addInitScript(js);

执行后, navigator.webdriver, 其值变成了 undefined 了。

【无效】方案2:增加启动参数

在浏览器启动参数中增加 --disable-blink-features=AutomationControlled 参数。
代码如下:

// 初始化浏览器实例
  const context = await chromium.launchPersistentContext(userDataDir, {
    headless: false,
    args: [
      "--disable-gpu",
      "--disable-software-rasterize",
      "--disable-blink-features=AutomationControlled",
    ],
  });

这个方案可以修改值,但只是修改为 false ,而不是移除该参数,依然无法解决。

4. 参考资料

  1. 使用Playwright绕过Webdriver检测
  2. 一种取巧的方式绕过 Cloudflare v2 验证
  3. (新)关于修改window.navigator.webdriver代码失效问题
  4. CDPSession-Playwright

标签:webdriver,Playwright,--,爬虫,disable,navigator,Cloudflare
From: https://www.cnblogs.com/bettergoo/p/17852501.html

相关文章

  • Python爬虫:如何抓取拉勾网职位信息
    随着互联网的发展,越来越多的求职者开始使用网络平台寻找工作机会。而对于企业来说,发布招聘信息也成为了一种重要的招聘方式。因此,抓取各大招聘网站上的职位信息成为了一项非常有用的工作。本文将介绍如何使用Python爬虫抓取拉勾网上的职位信息。1.确定需求首先,我们需要确定要抓取哪......
  • Python爬虫与人工智能:如何让机器学会自动抓取网络数据
    随着互联网的发展,网络数据变得越来越丰富。许多公司和组织需要从网络上获取大量的数据进行分析和研究,这时候就需要一种有效的方式来自动化抓取网络数据。Python爬虫和人工智能是两个强大的技术,结合起来可以让机器学会自动抓取网络数据。Python爬虫是指使用Python语言编写程序,模拟浏......
  • 深入理解Python爬虫中的HTTP请求与响应过程
    在Python爬虫开发中,了解HTTP请求与响应的过程是非常重要的。HTTP(HypertextTransferProtocol)是一种用于传输超文本的应用层协议,通过HTTP协议,我们可以在网络上获取各种资源。本文将深入探讨Python爬虫中的HTTP请求与响应过程,帮助您更好地理解和应用Python爬虫技术。1.了解HTTP协议H......
  • VS2022新建python项目爬虫网页
    一、安装python插件。 二、新建python项目。 三、安装配置DEBUG环境。   四、根据操作系统选择DEBUG环境。 五、安装requests库 在当前DEBUG环境安装requests库 六、使用requests库,爬取网页内容 完结! ......
  • python爬虫多个页面数据代码详解
    下面是一个简单的Python网页爬虫程序,可以用于爬取多个页面的数据:importrequestsfrombs4importBeautifulSoup#获取网页内容的函数defget_html(url):try:r=requests.get(url)r.raise_for_status()r.encoding=r.apparent_encoding......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-32-JavaScript的调用执行-下篇
    1.简介 在实际工作中,我们需要对处理的元素进行高亮显示,或者有时候为了看清楚操作过程和步骤我们需要跟踪鼠标点击了哪些元素需要标记出来。虽然很少遇到,但是为了以后大家可以参考或者提供一种思路,今天宏哥就在这里把这种测试场景playwright是如何处理的讲解和分享一下。2.用法......
  • Python爬虫技巧:百万级数据怎么爬取?
    前言在实际的爬取过程中,我们经常会遇到一些需要大量爬取数据的情况,比如爬取某个网站的所有用户信息或者某个行业的所有产品信息等等。在这些情况下,我们需要优化我们的爬虫策略,提高我们的数据爬取效率,同时需要注意避免被目标网站封禁。本文将分享一些Python爬虫处理百万级数据的技巧......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-31-JavaScript的调用执行-上篇
    1.简介在做web自动化时,有些情况playwright的api无法完成以及无法应对,需要通过或者借助第三方手段比如js来完成实现,比如:去改变某些元素对象的属性或者进行一些特殊的操作,本文讲解playwright怎样来调用JavaScript完成特殊操作。2.用法上一篇中就提到过,这里提取一下,语法如下:......
  • 2023年第 17期《Python接口自动化+Playwright 》课程,12月3号开学(课程全面升级!)!
    2023年第17期《Python接口自动化+Playwright》课程课程,12月3号开学(课程全面升级!)主讲老师:上海-悠悠上课方式:微信群视频在线教学,方便交流本期上课时间:2023年12月3号-2024年3月2号,晚上20:30-22:30报名费:报名费3000一人(周期3个月)联系微信/QQ:283340479课表如下直播课程主要......
  • 【爬虫】多线程下载文件
    importrequests   importjsonfromlxmlimportetreefromconcurrent.futuresimportThreadPoolExecutor     导入多线程所需要的库defmians(num):  url=f"http://www.1o1o.xyz/ctfarticle.asp?offset={num}"  domain="http://www.1o1o.xyz/"......