You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程检测网站是否禁用右键功能?

如何用Python脚本检测网站是否禁用右键

可以通过Python脚本检测网站是否禁用右键,但必须依赖能执行JavaScript的浏览器自动化工具——因为禁用右键几乎都是前端JavaScript实现的,静态爬取HTML源码无法捕获这类动态逻辑。

核心检测逻辑

网站禁用右键的常见手段包括:

  • 给document或特定元素绑定contextmenu事件并调用preventDefault()阻止默认行为
  • 设置元素的oncontextmenu="return false"属性
  • 动态监听鼠标按键事件,拦截右键点击

脚本的核心思路是模拟浏览器环境,执行页面JS,检测这些拦截逻辑是否存在。

实现示例(基于Selenium)

1. 安装依赖

先安装Selenium和对应浏览器的驱动(比如ChromeDriver,需和本地Chrome版本匹配):

pip install selenium

2. 检测脚本

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def check_right_click_restricted(url):
    # 配置无头浏览器模式(不显示可视化窗口)
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")
    driver = webdriver.Chrome(options=chrome_options)

    try:
        driver.get(url)
        # 执行自定义JS脚本检测右键拦截
        detection_script = """
        let isRestricted = false;
        // 检查全局oncontextmenu属性
        if (document.oncontextmenu && document.oncontextmenu.toString().includes('return false')) {
            isRestricted = true;
        } else {
            // 检查contextmenu事件监听是否包含阻止默认行为的逻辑
            const eventListeners = getEventListeners(document).contextmenu || [];
            isRestricted = eventListeners.some(listener => {
                const callbackStr = listener.callback.toString();
                return callbackStr.includes('preventDefault') || callbackStr.includes('return false');
            });
        }
        return isRestricted;
        """
        return driver.execute_script(detection_script)
    finally:
        # 确保浏览器进程关闭
        driver.quit()

# 批量测试示例
if __name__ == "__main__":
    target_urls = [
        "https://example.com",
        # 替换为你要检测的网站列表
        "https://test-site-1.com",
        "https://test-site-2.com"
    ]
    for url in target_urls:
        restricted = check_right_click_restricted(url)
        print(f"网站 {url} 禁用右键: {'是' if restricted else '否'}")

注意事项

  • 部分网站可能会用更隐蔽的手段拦截右键(比如检测鼠标点击位置、动态移除事件监听),此时需要调整JS检测逻辑,比如针对特定元素做检测,或者模拟真实右键点击后检查菜单状态(无头模式下需结合JS判断菜单是否可触发)。
  • 可以用Playwright替代Selenium,两者逻辑类似,Playwright对浏览器的兼容性更好,无需手动下载驱动。

内容的提问来源于stack exchange,提问作者SamTest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:52:11