如何调试反 debug 的网页?

2024-08-14 15:34:12 +08:00
 zzm88104

https://ftty.ydmap.cn/booking/schedule/101332?salesItemId=100341

他通过这段代码不停生成 debugger 的代码 有什么办法可以阻止他,然后调试我自己打的断点

    29556: ()=>{
        (()=>{
            if ("undefined" !== typeof window && !window.location.port)
                try {
                    t()
                } catch (n) {}
            function e(e, t) {
                return Math.floor(Math.random() * (t - e)) + e
            }
            function t() {
                setInterval((()=>{
                    const t = e(0, 100);
                    (function() {
                        return !1
                    }
                    )["constructor"](`\n          // 🚫🚫🚫🚫🚫🚫🚫🚫🚫🚫 禁止调试 🚫🚫🚫🚫🚫🚫🚫🚫🚫🚫\n          ${Array.from({
                        length: t
                    }).fill("\n          ").join("")}\n          debugger\n        `)["call"]()
                }
                ), 50)
            }
        }
        )()
    }
    
1702 次点击
所在节点    程序员
15 条回复
Meursau1T
2024-08-14 15:36:21 +08:00
有个想法,没试过,是不是可以先抓包得到这个 js 文件,然后改写接口返回值,把这行代码干掉
icedx
2024-08-14 15:49:04 +08:00
看起来是在 console 洗屏的?
happyeveryday
2024-08-14 15:51:52 +08:00
先拉下来,chrome devtools network 覆盖此文件
LuckyLauncher
2024-08-14 15:55:12 +08:00
1. 访问网站,打开 console ,进入 debugger
2. 通过 debugger 右侧面板找到调用栈的上一层,进入
3. 右键代码面板,选择 override content ,选中 setInterval 那段函数,注释掉并保存
4. 刷新页面,进行调试
jpyl0423
2024-08-14 15:55:30 +08:00

LuckyLauncher
2024-08-14 15:56:25 +08:00
所以我说,搞这种东西就自己玩玩,实际上没啥用
xiangyuecn
2024-08-14 15:57:00 +08:00
Function.prototype.call=()=>{ console.log("call")}
y77FXoxF970725SJ
2024-08-14 16:07:10 +08:00
控制台执行:

var handler = window.setInterval(() => {}, 1000);
for(let i = 1; i <= handler; i++)
{
clearInterval(i);
}
weixiangzhe
2024-08-14 16:08:53 +08:00
开个代理工具替换这个 js
hafuhafu
2024-08-14 16:12:18 +08:00
直接 F12 停用断点就行了..
catamaran
2024-08-15 17:30:59 +08:00
catamaran
2024-08-15 17:34:26 +08:00
@catamaran 抱歉,楼主还要 debug 自己的断点,可我不知道怎么删除自己的回复
lisongeee
2024-08-15 17:50:10 +08:00
这有一个方案,通过重新编译浏览器,将 debug 更换为其他的 关键字 来禁用目标网页的 反调试 同时不影响自己的调试

https://github.com/Sec-ant/a2d2-firefox
CC11001100
2024-08-18 19:15:56 +08:00
mzl980425
2024-08-19 19:07:38 +08:00
装个油猴插件,把 setInterval 函数给重写掉
```javascript
// ==UserScript==
// @name New script ydmap.cn
// @namespace Violentmonkey Scripts
// @match https://ftty.ydmap.cn/booking/schedule/101332*
// @grant none
// @version 1.0
// @author -
// @description 2024/8/19 19:05:07
// ==/UserScript==

window._setInterval = window.setInterval;
window.setInterval = (fn, delay) => {
if (fn.toString().includes('debugger')) {
return;
}
else {
return window._setInterval(fn, delay);
}
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1064944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX