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

为何svc.mt.gov域名站点执行console.log()命令无控制台输出?

问题成因

  • 该MT政府站点主动重写了浏览器原生的console对象方法,这类生产环境站点常将console.log等调试方法赋值为空函数,用于屏蔽开发阶段的日志输出,同时也能提高普通爬虫的调试门槛。
  • 你用Selenium的execute_script执行无效也是同理,你注入的JS调用的是已经被污染的console方法,自然不会产生输出。
  • 少数情况是站点设置了严格的内容安全策略,限制了脚本的执行权限,但你可以正常执行命令只是无输出,基本可以排除该情况。

可用解决方案

方法1:DevTools控制台直接恢复

在控制台先执行以下代码重置console为原生版本,之后再执行console.log即可正常输出:

// 创建隐藏iframe获取未被污染的原生console对象
const tempIframe = document.createElement('iframe');
tempIframe.style.display = 'none';
document.body.appendChild(tempIframe);
window.console = tempIframe.contentWindow.console;

// 测试输出
console.log("Hello world!");

方法2:Selenium执行适配

执行你需要的脚本之前,先注入上面的重置console的代码即可,示例代码如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://svc.mt.gov/dor/property/prc")

# 先重置console对象
reset_console = """
const tempIframe = document.createElement('iframe');
tempIframe.style.display = 'none';
document.body.appendChild(tempIframe);
window.console = tempIframe.contentWindow.console;
"""
driver.execute_script(reset_console)

# 执行你需要的脚本
driver.execute_script('console.log("Hello world!")')

备选方案(适配禁止创建iframe的站点)

如果站点的CSP规则禁止动态创建iframe,可以直接调用console原型上的原始方法:

const originalLog = Object.getOwnPropertyDescriptor(window.console.__proto__, 'log').value;
originalLog("Hello world!");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:03