网页开发者模式 陷入无限断点(Debugger)的问题

网页开发者模式 陷入无限断点(Debugger)的问题
在查看源代码时,发现按F12(打开开发者模式),会无限陷入debugger断点调试。

无限debugger的主要作用?
反调试/反爬虫:阻止我们调试和分析目标代码的运行逻辑

无限debugger的基本实现
debugger关键字的应用:

Function/eval “debugger”
  function debugger

  function anonymous({
      debugger
  })

解决办法:
第一种:手动关闭断点调试
关闭掉debug调试

第二种:使用中间人方法。
主要是借助其他工具将debugger替换成’debuger’,将关键字变成字符串,使关键字失去它的作用第三方的工具主要有:fiddler、mitmproxy等,如果有需要请自行百度学习。

第三种:更换js文件
reres替换本地修改过的文件

思路:首先获取js文件,下载到本地,将文件修改(将debugger删除或者改写),重新请求时使用本地修改过的js文件,具体操作请自行百度

第四种:直接在console输入以下代码,步骤如下:
打开F12点击Console

输入(function(){}).constructor === Function,回车;

如果返回的是true,继续输入Function.prototype.constructor = function(){},并回车;

切换回sources选项卡,点击继续执行,无限debugger的问题就解决了

注意:如果第二步返回的是false,则此方法不可用。

### 解决网站开启开发者模式后出现 `debugger` 的问题 当面对网站通过 JavaScript 动态插入 `debugger` 关键字来阻止自动化脚本运行的情况时,可以采取多种策略来规避这个问题。一种常见的做法是在浏览器环境中禁用这些调试指令的影响。 对于 Selenium 自动化测试框架而言,可以通过修改页面加载行为或拦截并篡改特定的 JavaScript 执行路径实现这一点。具体来说: - **使用无头浏览器模式**:启用 headless mode 可以防止实际打开图形界面窗口,并且通常也会减少被检测到的风险。 - **覆盖全局 `debugger` 方法**:可以在启动 WebDriver 前定义一个自定义命令,用于替换默认的行为,使得每次遇到 `debugger` 语句时不触发暂停而是继续执行程序逻辑[^1]。 下面是一个 Python 中利用 selenium 和 selenium-wire 来处理此情况的例子: ```python from seleniumwire import webdriver import time options = { 'disable-dev-shm-usage': True, 'headless': False, # 设置为True则不显示GUI界面 } driver = webdriver.Chrome(options=options) # 覆盖 debugger 行为 script_to_execute = """ Object.defineProperty(Debugger.prototype, "statement", {value: function(){}}); """ driver.execute_script(script_to_execute) url = "目标网址" driver.get(url) time.sleep(5) # 等待页面完全加载 # 继续后续操作... ``` 这段代码首先设置了 Chrome 浏览器的一些选项参数,其中包含了是否隐藏 GUI 界面的选择;接着创建了一个新的 Web 驱动实例并将上述设置应用上去;最后一步则是注入一段 JavaScript 用来重新定义内置对象 Debugger 上的方法 statement ,使其为空函数从而忽略所有的断点请求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值