一段python代码绕过Web无交互人机验证

一、代码

from selenium import webdriver

options = webdriver.EdgeOptions()
options.add_argument("disable-blink-features=AutomationControlled")
driver = webdriver.Edge(options=options)
driver.execute_cdp_cmd(
    cmd_args={'source': 'console.log = () => {}'},
    cmd="Page.addScriptToEvaluateOnNewDocument",
)
driver.get("https://demo.waf-ce.xxx.cn:10081/hello.html")

while True: pass

二、原理解释

段代码是用 Selenium 自动化工具结合 Microsoft Edge 浏览器(基于 Chromium 的 Edge 浏览器)编写的脚本,目的是:

  1. 通过 Selenium 启动 Edge 浏览器。
  2. 尝试隐藏 Selenium 的自动化特征,避免被检测为机器人。
  3. 打开一个指定的网页(https://demo.waf-ce.xxx.cn:10081/hello.html)。
  4. 代码执行后,进入死循环,使浏览器保持打开状态。

以下是具体代码的解释:

1、创建 Edge 浏览器的选项

options = webdriver.EdgeOptions()
options.add_argument("disable-blink-features=AutomationControlled")
  • webdriver.EdgeOptions():创建一个专门用于配置 Edge 浏览器的选项对象。
  • options.add_argument(“disable-blink-features=AutomationControlled”):
    • 添加启动时的浏览器参数。
    • “disable-blink-features=AutomationControlled” 是一个常见的参数,用于禁用 Chromium 浏览器的 AutomationControlled 特性。
    • 这个特性会让网站检测到浏览器是由自动化工具(如 Selenium)控制的,而加入该参数可以绕过一些简单的检测机制,伪装成普通用户使用的浏览器。

2、启动浏览器并尝试修改 JS 环境

driver = webdriver.Edge(options=options)
driver.execute_cdp_cmd(
    cmd_args={'source': 'console.log = () => {}'},
    cmd="Page.addScriptToEvaluateOnNewDocument",
)
  • webdriver.Edge(options=options):使用上面配置的选项启动一个 Edge 浏览器实例。
  • driver.execute_cdp_cmd():
    • 这是 Selenium 提供的一种方法,允许通过 CDP(Chrome DevTools Protocol) 执行低级别的浏览器命令。
    • cmd=“Page.addScriptToEvaluateOnNewDocument”:
      • 表示要在每个新页面加载前注入一段 JavaScript 脚本。
      • cmd_args={‘source’: ‘console.log = () => {}’}:
        • 表示注入的脚本是:console.log = () => {}。
        • 该脚本覆盖了浏览器环境中的 console.log 函数,使其变成一个空函数。
        • 这样,任何试图通过控制台打印日志的行为都会被禁用。
        • 是为了防止某些反自动化工具通过 console.log 检测出浏览器是由 Selenium 控制的。

3、 打开目标网页

driver.get("https://demo.waf-ce.xxx.cn:10081/hello.html")
  • 通过 driver.get() 方法,打开指定的网页:https://demo.waf-ce.xxx.cn:10081/hello.html。
  • 这是一个测试网页(从 URL 看出它是一个 Web 应用防火墙(WAF)相关的测试页面)。

4、保持浏览器运行

while True: pass
  • while True: pass:让 Python 程序进入一个死循环,使浏览器保持打开状态,不会立即关闭。
  • 如果没有这个循环,程序执行完毕后会自动退出,浏览器也会关闭。

三、总结

这段代码的核心目的是:

  1. 打开一个指定的测试页面。
  2. 尝试隐藏 Selenium 的自动化特征,绕过一些反自动化检测机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值