JS逆向实战案例1——某房地产url动态生成

这篇具有很好参考价值的文章主要介绍了JS逆向实战案例1——某房地产url动态生成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除

作者:zhu6201976

一、 反爬分析

url:aHR0cHM6Ly9uZXdob3VzZS4wNTU3ZmRjLmNvbQ==

该站点项目url通过点击JS生成,project_id与生成后的结果完全不同,且通过生成后的结果进行访问、有时效性。例如:project_id=3362,生成结果:0984-18052-9217-2406976066313,最终通过 https://{hostname}/item/0984-18052-9217-2406976066313 进行访问。

如果请求过期url,则返回空结果。为何url需要动态生成呢?

有一种可能,就是防止爬虫程序轻易解析提取数据,对网站造成压力,同时保护网站珍贵的数据不被轻易窃取。当然,动态生成的url,因有时效性,也能防止数据库长期存储和分享。

我们知道,无论再复杂的程序和代码,底层都有严谨的实现逻辑。网站采用BS架构,客户端代码运行在浏览器中,这就意味着,代码是可见的,甚至还能被调试!这对网站开发人员而言,隐藏了巨大的风险。无论客户端代码多复杂、混淆多严重,最终都有被逆向分析的可能,只是时间问题。

既然没有绝对的安全,无法彻底防御风险,那么,只能将客户端程序尽可能复杂化,让爬虫程序难以模拟,或者模拟成本非常高,从而望而生畏,主动放弃。加密算法是复杂化的一个重要途径,按时间分有古代密码学、现代密码学;按实现方式分有自定义算法、通用算法等。

那么,它是如何实现的呢?采用了什么样的加密算法?

1. 首先,访问项目首页,返回document文档,项目通过a标签进行项目列表展示。

a标签属性id即project_id,它通过绑定对应的点击事件函数reurl(this),点击后a标签作为参数进行传递,最后JS生成加密结果,再给a标签设置href属性实现url的动态生成。

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言

a标签点击前:

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言

a标签点击后:

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言

2. 其次,在项目的首页,添加了大量待执行JS外链。

如图所示:

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言

点击事件函数reurl大概率在上述外链JS中。依次访问上述JS外链,并在返回的JS中全局搜索关键词reurl,成功定位到文件lanrenzhijia.js。

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言

项目详情url动态生成逻辑就在此处。

3. 加密逻辑都是在虚拟机中执行的。

function reurl(a) {
    a.href = "/item/" + recode(a.id)
}
;

recode函数具体实现:

function recode(a) {
    var n = nscaler(a);
    var c = SetObjNum(a.length);
    var d = SetObjNum(a.length);
    n = parseInt(n) + parseInt(d);
    var b = $("#iptstamp").val();
    b = nscaler(b.toString());
    return c + "-" + n + "-" + d + "-" + b
}

nscaler函数具体实现:

function nscaler(a) {
    var b = "";
    $.each(a, function(i, e) {
        switch (e) {
        case "0":
            b += "0";
            break;
        case "1":
            b += "2";
            break;
        case "2":
            b += "5";
            break;
        case "3":
            b += "8";
            break;
        case "4":
            b += "6";
            break;
        case "5":
            b += "1";
            break;
        case "6":
            b += "3";
            break;
        case "7":
            b += "4";
            break;
        case "8":
            b += "9";
            break;
        case "9":
            b += "7";
            break
        }
    });
    return b
}

这个函数通过古代密码学凯撒加密,对输入的数字依次进行偏移,从何达到简单加密的结果。

setObjNum函数具体实现:

function SetObjNum(n) {
    var a = "";
    for (var i = 0; i < n; i++)
        a += Math.floor(Math.random() * 10);
    return a
}

这个函数通过简单的随机数,对结果进行进一步的混淆。

iptstamp变量来源:

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言

在document文档中定义,是一个时间戳。

通过上述凯撒加密、随机数、时间戳拼接后,得到最终结果:/item/0984-18052-9217-2406976066313

那么,服务端是如何识别加密结果并做到过期处理的呢?

nscaler函数是加密算法的核心也是服务端能够还原的关键,对于每个数字,偏移量是固定的。所以服务端可以根据偏移量,依次减法,即可还原原始project_id。而iptstamp时间戳是判断url失效的关键。

当然,最后我们扣取整理的JS代码,不一定能够正常运行,需要根据代码逻辑,适当修改调整,以下是整理后的最终可执行JS代码:

function SetObjNum(n) {
    var a = "";
    for (var i = 0; i < n; i++)
        a += Math.floor(Math.random() * 10);
    return a
}

function nscaler(a) {
    var b = "";
    // $.each(a, function(i, e) {
    for (let i = 0; i < a.length; i++) {
        switch (a[i]) {
            case "0":
                b += "0";
                break;
            case "1":
                b += "2";
                break;
            case "2":
                b += "5";
                break;
            case "3":
                b += "8";
                break;
            case "4":
                b += "6";
                break;
            case "5":
                b += "1";
                break;
            case "6":
                b += "3";
                break;
            case "7":
                b += "4";
                break;
            case "8":
                b += "9";
                break;
            case "9":
                b += "7";
                break
        }
    }
    return b
}


function recode(a, b) {
    var n = nscaler(a);
    var c = SetObjNum(a.length);
    var d = SetObjNum(a.length);
    n = parseInt(n) + parseInt(d);
    // var b = $("#iptstamp").val();
    b = nscaler(b.toString());
    return c + "-" + n + "-" + d + "-" + b
}

function reurl(a, b) {
    let a_href = "/item/" + recode(a.id, b);
    return a_href;
}

var ret = reurl({"id": '3362'}, 1704894044656);
console.log(ret);

二、 完整代码

项目已开源,请访问github获取,期待你的一键三连、star、交流。

github项目地址:GitHub - zhu6201976/newhouse20240111: JS逆向实战案例1——某房地产url动态生成

项目运行完整截图:

JS逆向实战案例1——某房地产url动态生成,javascript,前端,开发语言文章来源地址https://www.toymoban.com/news/detail-790075.html

到了这里,关于JS逆向实战案例1——某房地产url动态生成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatGPT应用于房地产行业

        作为 2023 年的房地产专业人士,您无疑认识到技术对行业的重大影响。近年来,一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面,从简化管理任务到增强客户互动。 在本文中,我们将探讨几种巧妙的人工智能技巧,作为房地产经纪人,

    2024年02月13日
    浏览(42)
  • 数字化房地产的安全与隐私挑战

    随着我国房地产市场的不断发展,数字化房地产已经成为我国房地产行业的重要发展方向之一。数字化房地产通过信息化、智能化、网络化等技术手段,将传统的房地产业务进行数字化处理,为房地产市场创造了更多的价值。然而,随着数字化房地产的不断发展,安全与隐私

    2024年02月19日
    浏览(51)
  • VB+SQL房地产评估系统设计(源代码+系统)

    房地产评估系统对房地产评估信息进行全面现代化管理。但一直以来人们使用传统人工的方式进行评估,这种管理方式存在着许多缺点,如:效率低、计算量大,容易出错。另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不

    2024年02月09日
    浏览(47)
  • 无需设计经验,也能制作出精美的房地产电子传单

    在数字化时代,传统的纸质传单已经不能满足人们对于互动和个性化的需求。为此,许多房地产公司开始将目光转向H5微传单,这是一种通过互联网和手机浏览器来传达信息的创新方式。今天,我们将教你如何使用乔拓云网制作房地产微传单H5,让你的产品更加吸引人。 首先

    2024年02月09日
    浏览(42)
  • 区块链溯源:实现区块链技术在房地产交易中的应用

    作者:禅与计算机程序设计艺术 随着时间的推移,金融系统已越来越复杂。从最早的结算系统到现代支付系统、征信管理系统、风控系统,现代金融系统已经发生了巨变,而在房地产市场中,由于金融服务的需求增加,更多的客户选择居住地或商业中心进行投资,由此带来的

    2024年02月14日
    浏览(45)
  • VB.NET基于WEB房地产评估系统(源代码+论文)

    房地产评估系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本系统特有的房屋基本情况、专业评

    2024年02月13日
    浏览(51)
  • 三防加固平板在房地产行业的应用|亿道三防onerugged

    近期, 有 一款引人注目的解决方案——亿道三防onerugged平板电脑,它以其出色的性能和多功能的设计,为房地产行业带来了全新的应用体验。 首先,亿道三防onerugged平板电脑的NFC功能在小区业主身份验证中发挥着重要作用。传统的身份验证方式往往繁琐且容易出现纰漏,而

    2024年02月21日
    浏览(54)
  • 易服客工作室:Houzez主题 - 超级房地产WordPress主题/网站

    Houzez主题 是全球流行的 房地产 经纪人和公司的 WordPress主题 。 Houzez Theme是专业设计师创造一流设计的超级灵活起点。它具有您的客户(房地产经纪人或公司)甚至可能做梦也想不到的功能。 网址:Houzez主题 - 超级房地产WordPress主题/网站 - 易服客工作室 Houzez主题一键导入

    2024年02月12日
    浏览(65)
  • 毕业设计-基于大数据的房地产数据分析与预测-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学

    2024年02月08日
    浏览(58)
  • VB.net+SQL房地产评估系统设计与实现(源代码+论文)

    房地产评估系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本系统特有的房屋基本情况、专业评

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包