js逆向之--反调试案例(案例实战:网站无线debug和检测开发者工具跳转页面)

8 篇文章 5 订阅
7 篇文章 0 订阅

js逆向之–反调试案例(案例实战:网站无线debug和检测开发者工具跳转页面)

反调试网站 https://www.aqistudy.cn/ 空气质量在线监测分析平台

当在该网站下打开开发者工具网站会自动进入debug 然后跳转到所指定页面,然后无线debug,进行反爬对抗

网站的反调试分析

在这里插入图片描述此时可以说明图中的文字是网站的javascript静态资源的文件
所以全局搜索“检测到非法调试, 请关闭调试终端后刷新本页面重试!”可以检索到该资源文件
在这里插入图片描述
经过分析代码我们的反调试页面是由endbug函数生成的,所也在此处打上断点,然后F11跟进到该函数的内部
可以查看到网站的JavaScript检测开发者工具有没有打开的代码

function endebug(off, code) {
    if (!off) {
        !function(e) {
            function n(e) {
                function n() {
                    return u
                }
                function o() {
                    window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized ? t("on") : (a = "off",
                    console.log(d),
                    console.clear(),
                    t(a))
                }
                function t(e) {
                    u !== e && (u = e,
                    "function" == typeof c.onchange && c.onchange(e))
                }
                function r() {
                    l || (l = !0,
                    window.removeEventListener("resize", o),
                    clearInterval(f))
                }
                "function" == typeof e && (e = {
                    onchange: e
                });
                var i = (e = e || {}).delay || 500
                  , c = {};
                c.onchange = e.onchange;
                var a, d = new Image;
                d.__defineGetter__("id", function() {
                    a = "on"
                });
                var u = "unknown";
                c.getStatus = n;
                var f = setInterval(o, i);
                window.addEventListener("resize", o);
                var l;
                return c.free = r,
                c
            }
            var o = o || {};
            o.create = n,
            "function" == typeof define ? (define.amd || define.cmd) && define(function() {
                return o
            }) : "undefined" != typeof module && module.exports ? module.exports = o : window.jdetects = o
        }(),
        jdetects.create(function(e) {
            var a = 0;
            var n = setInterval(function() {
                if ("on" == e) {
                    setTimeout(function() {
                        if (a == 0) {
                            a = 1;
                            setTimeout(code)
                        }
                    }, 200)
                }
            }, 100)
        })
    }
}

网站的无限debug 分析

  • 当向下调试的时候网站会进入无限debug,Sources面板中会跳出
    在这里插入图片描述
  • 然后向前追踪栈可以找到无限debug的关键函数txsdefwsw()
    在这里插入图片描述

有两种解决方案

  • 1、使用fiddler中间人,将该JavaScript文件代理到本地,删除页面生成代码和无限debug关键函数

  • 2、在endebug和txsdefwsw函数加载后执行前将该函数重写为空

endebug = function(){}
function txsdefwsw(){}

在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
嗨!对于爬虫中的 JavaScript 逆向案例,我可以给你提供一个简单的示例。请注意,这个示例只是为了帮助你理解逆向过程,真实的应用中可能涉及法律和伦理问题,请合法使用爬虫技术。 假设我们要爬取一个网站上的某个页面数据,但是该页面通过 JavaScript 动态生成。我们可以通过分析网页的 JavaScript 代码来逆向工程,获取所需数据。 首先,打开 Chrome 浏览器并进入开发者工具(按 F12 键或右键点击页面并选择“检查”)。然后切换到“网络”选项卡。 接下来,在浏览器地址栏中输入目标网页的 URL 并按下回车,浏览器将开始加载页面。在网络选项卡中,你将看到所有请求和响应的列表。 查找其中一个请求,该请求可能包含我们所需的数据。点击该请求并查看其请求头、响应头和响应体。 在响应体中,你可能看到一些 JavaScript 代码,这些代码负责生成页面上的内容。你可以仔细阅读该代码,并找到生成目标数据的部分。 如果你发现目标数据是通过 Ajax 请求获取的,你可以查看该 Ajax 请求的 URL 和参数,然后使用 Python 的 requests 库或其他适当的方法模拟该请求,并解析响应获取数据。 如果你发现目标数据是在 JavaScript 代码中直接生成的,你可以尝试分析代码逻辑并编写相应的 Python 代码来模拟该过程。这可能涉及到使用 JavaScript 解释器或库来执行 JavaScript 代码。 需要注意的是,JavaScript 逆向工程是一项复杂的任务,需要对 JavaScript 和网络协议有一定的理解。同时,网站所有者可能采取一些爬虫措施来阻止你的行为,所以请务必遵守法律法规和网站的使用规则。 希望这个示例能够帮助你入门 JavaScript 逆向工程。如果你有任何其他问题,欢迎继续提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不走小道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值