V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
huntagain2008
V2EX  ›  问与答

如何针对某视频网站写 js 监测用户一旦按 F12 就循环 setTimeout debug?

  •  
  •   huntagain2008 · 101 天前 · 1552 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。

    非程序员。因为 B 站大会员太贵,前段时间在网上搜资源。看到某网站可以在线看,于是就想着用 m3u8 下载器。 想通过按 F12 开发调试工具查看找到 HLS 视频流的地址,后缀就是.m3u8 。可是,这次我按 F12 浏览器就卡死了。 浏览器用的 Mozilla,看他写的 JS 还专门针对不同浏览器比如 EDGE 、Firefox 监测开启调试后就 setTimeout 。 他的注释写的很清楚,甚至写明了该 function 对 firefox 无用,自己刚学还有很多不懂什么什么的。

    就因为他写的那么几行 JS 代码,让我无法下载想看的动漫,想通过 U 盘播放或者电脑投屏到电视上。 这个事情已经过去了 1 个月,但是我一直想知道怎么可以绕过他的 JS 或者现在可以用 curl 请求他的 Web 服务器。

    结果是,今天早上再次访问这个野生网站,他居然居然把这些 JS 给删掉了,😔。。。。。

    第 1 条附言  ·  101 天前

    该网站对于B站1080P视频写了js反调试,对于带广告的720P视频则没有js反调试。 我把js代码贴出来。fuck-debugger.js

    /**
     * 检测到调试时进行的操作
     */
    let onDebug = function () {
        document.write('检测到非法调试!请停止调试后刷新本页面!');
    };
    
    /**
     * 通过 debugger 时间检测
     *
     * 突破方法:禁用 debugger
     */
    setInterval(function () {
        setTimeout(function () {
            let st, et;
            st = new Date().getTime();
            debugger;
            et = new Date().getTime();
            if ((et - st) > 1000) {
                onDebug();
            }
        }, 0);
    }, 1000);
    
    
    
    /**
     * 监控 F12的按下
     *
     * 没啥用,还有禁止右键菜单,更加没啥用
     */
    document.onkeydown = document.onkeyup = document.onkeypress = function (event) {
        const e = event || window.event || arguments.callee.caller.arguments[0];
    
        if (e && e.keyCode == 123) {
            onDebug();
        }
    };
    
    
    /**
     * 当dom被发送至控制台时(例如console.log)
     * 浏览器会自动通过该dom的getter()获取该 dom 的id
     * 所以我们可以创建一个dom,然后发送到控制台,并且重定义其getter()
     *
     * 缺点:这招对火狐没用
     */
    let div = document.createElement('div');
    Object.defineProperty(div, "id", {
        get: () => {
            clearInterval(loop);
            onDebug();
        }
    });
    let loop = setInterval(() => {
        setTimeout(() => {
            console.log(div);
            console.clear();
        }, 0);
    }, 1000);
    
    /**
     * 上面那个方法支持谷歌而不支持火狐
     * 这次来个支持火狐不支持谷歌的
     */
    let firefox_test = /./;
    firefox_test.toString = function () {
        onDebug();
    }
    
    if (navigator.userAgent.match('/firefox/')) {
        /**
         * 对于火狐:若开发者工具开启,则下面这行代码会触发 firefox_test.toString,否则反之
         * 对于谷歌:无论是否开启开发者工具,都会触发
         */
        console.log(firefox_test);
    }
    
    
    /*调试相关的函数重定义*/
    window['console']['log'] = function () {
    };
    
    /*
    还有其他检测方法:
        调用链检测
        代理对象(自己暂时没学)
    不过上面这两种并不可以简单调用的,所以这里没写
    */
    
    17 条回复    2021-08-25 11:14:30 +08:00
    ch2
        1
    ch2  
       101 天前
    可以直接移除的,雕虫小技
    shiji
        2
    shiji  
       101 天前
    比如 FF 的 Debugger 里面可以直接禁用断点的.
    xingshu1990
        3
    xingshu1990  
       101 天前
    试试换成 chrome 然后再安装 浏览器扩展 Auto Copy Enable Copy 等破解防复制的插件?
    zhanghua0
        4
    zhanghua0  
       101 天前   ❤️ 2
    mxT52CRuqR6o5
        5
    mxT52CRuqR6o5  
       101 天前
    非程序员直接装个猫抓不就好了,根本不用去打开控制台
    wjm2038
        6
    wjm2038  
       101 天前 via Android
    你说的是樱花动漫么
    wdssmq
        7
    wdssmq  
       101 天前
    其实,这个网站下载不了也可以换一个。。

    以及。。你从盗版网站抓在线播放的视频???

    BT 下载也这么夕阳了??
    yigecaiji
        8
    yigecaiji  
       101 天前 via Android
    bt 下载不方便吗?第二天字幕组就出了,资源大多数是 1080 的,还有专门扒 B 站、巴哈资源的。
    huntagain2008
        9
    huntagain2008  
    OP
       101 天前   ❤️ 1
    @wdssmq 这个网站有些动漫是 1080P 的,而且视频中没有任何广告,和 B 站大会员的动漫质量一模一样。
    台标也是一样的。其他网站带的视频广告太多,而且清晰度不行。
    BT 下载我不会用。以前用彗星,然后公网老是阻塞。我是小白一个,不知道用其他的,也没资源。
    huntagain2008
        10
    huntagain2008  
    OP
       100 天前
    @xingshu1990
    @mxT52CRuqR6o5 chrome 浏览器扩展除非我能完全看懂插件的源码,不然我不敢用。而且我不喜欢 chrome,感觉广告太多,也不安全。当然我是小白,可是我就是觉得它不好。
    huntagain2008
        11
    huntagain2008  
    OP
       100 天前
    @yigecaiji 我不会用 bt 下载。
    看教程推荐用 bt 下载 ArchLinux 的官方镜像,先下载 torrent 再用 bt 下载。只有 3kb/s 完全下载不动,结果用的 163 镜像。
    我当时先是尝试安装了μtorrent 首先报毒,卸载不干净。然后用了老牌彗星结果公网 TCP 阻塞,一直黄灯。
    查了一下,网上推荐用 qbittorrent 配合 TrackersList 可以最大化下载量。可是,我还是担心公网 TCP 阻塞问题。
    也不知道在哪里找靠谱的 BT 资源。
    mxT52CRuqR6o5
        12
    mxT52CRuqR6o5  
       100 天前 via Android
    @huntagain2008 不信任的话可以在虚拟机里跑
    yigecaiji
        13
    yigecaiji  
       100 天前 via Android
    @huntagain2008 种子的话你可以去动漫花园找,软件的话比特慧星就可以了,我的也是黄灯,不过好像不影响下载。不过视频的话尽量在出资源后的一周内下载,要不然速度就会很慢,有的可能要在两天内下完,因为有很多人下完之后就把软件给关了。
    MiketsuSmasher
        14
    MiketsuSmasher  
       100 天前
    按出来开发者之后刷新一遍页面试试?
    或者直接禁用 js 看看能不能看?
    huntagain2008
        15
    huntagain2008  
    OP
       99 天前
    @MiketsuSmasher 刚刚试了,刷新后也会进入 Debugger 。
    视频网页的播放器的 HTML 只会是<html><body>检测到非法调试!请停止调试后刷新本页面!</body></html>
    这样你就看不到播放器所使用的视频流的地址。播放器 src 地址是 blob:https://xxxxxx 这样的,我觉得无法下载 BlobURL 。
    在网络请求查找 m3u8 找不到,只有 HLS 的 TS 文件。不知道是不是他放的比较隐蔽,导致我找不到。
    第一条附言把 JS 贴出来了。onDebug()函数就是写入这句话“检测到非法调试!请停止调试后刷新本页面!”。
    他注释很清楚,通过 debugger 时间检测,用了 setInterval 和 setTimeout 。注释还写明了,突破方法:禁用 debugger 。
    他的注释也写了,监控 F12 的按下,没啥用,还有禁止右键菜单,更加没啥用。自己吐槽自己,估计他也不想写。

    突破反调试方法就禁用 Debugger 。但是我还是找不到 m3u8 地址,只有 blob:https://xxxx 这样的。
    至于禁用 JS,小白我一开始就试过,这样的结果是页面有关播放器的部分都不会加载。
    huntagain2008
        16
    huntagain2008  
    OP
       99 天前
    @yigecaiji 好的,有空试试。只是对理科生坠入情网故尝试证明有点兴趣,工作细胞也不错。
    比特彗星前些天我尝试 bt 下载官方 ArchLinux 的 iso,只有 3kb/s 。最后用了网易的镜像,现在感到后怕,怕被篡改
    以前我为了彗星绿灯还专门电话运营商把公网 IP 开了。结果现在怎么搞都是黄灯,小白我实在搞不清楚是为什么
    看 GitHub 上面的 TrackerList 项目是最近才出现的。也不知道靠不靠谱,上面也写了黄灯只影响上传。
    但是我认为 BT 下载应该是上传贡献多了,下载才会快。所以我觉得上传速度也比较重要。
    huntagain2008
        17
    huntagain2008  
    OP
       99 天前
    @MiketsuSmasher 刚刚我才知道 VLC 可以转换视频流。以前用的 GitHub 某人写的所谓开源项目编译后直接报毒,代码也太多来自互联网,感觉实在不太敢用,可是我还是用了……早知 VLC 直接可以用,我就不用他的东西了。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1149 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:28 · PVG 03:28 · LAX 11:28 · JFK 14:28
    ♥ Do have faith in what you're doing.