【python爬虫逆向】某团h5的Mtgsig1.1分析

网站链接

aHR0cHM6Ly9tb2JpbGVuZXh0LXdlYi5tZWl0dWFuLmNvbS9yYW5raW5nTGlzdD9ib2FyZFR5cGU9OCZjaT0wMDczJmFyZWFJZD02NzIzJmNhdGVJZD0yJmRpc3RyaWN0SWQ9MCZwb2lJZD01OTUxNzUwMzEmZj1hbmRyb2lkJmxhdD0zNi41MjYwNDYxOTExNTk0NDUmbG5nPTEyMi4wNjIyMTc4MTE=

(base64解密后可见)

正文

就是这个参数

扫了一眼网站源代码,然后看了看加载的js,发现了可疑的代码。那就打上断点从这里开始分析

一步步往下再走,会发现走到了这个js里。

先看下这个H5guard都有什么吧

有兴趣的可疑所有函数都打上断点看一看都干了什么。这里就不在跟了,直接说结果。首先是初始化的initWithKey,然后最后会调用sign出加密的结果。

有时间的话可以跟一跟,扣一个纯算。这里怎么简单怎么来吧,补环境。直接上补环境的代码,这里也直接用jsdom吧

innerWidth = 391
innerHeight = 855


const jsdom = require("jsdom")

const {JSDOM} = jsdom;
const dom = new JSDOM("", {url: "https://mobilenext-web.meituan.com/"})

window = dom.window

document = window.document
XMLHttpRequest = window.XMLHttpRequest
location = {
    "ancestorOrigins": {},
    "href": "https://mobilenext-web.meituan.com/",
    "origin": "https://mobilenext-web.meituan.com/",
    "protocol": "https:",
    "host": "mobilenext-web.meituan.com/",
    "hostname": "mobilenext-web.meituan.com/",
    "port": "",
    "pathname": "/meishi/c11/",
    "search": "",
    "hash": ""
}
navigator = {
    appName: "Netscape",
    appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
    userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
    vendor: 'Google Inc.'
}

screen = {
    availHeight: 1040,
    availLeft: 0,
    availTopL: 0,
    availWidth: 1920,
    colorDepth: 24,
    height: 1080,
    isExtended: true,
    orientation: {
        type: "landscape-primary"
    },
    pixelDepth: 24,
    width: 1920
}

document.cookie = ""

把H5guard.js里所有的代码都复制出来放到本地,然后加上上面的补环境代码,自己写个调用initWithKey和sign的代码后,在node下一运行。来坑了。会卡着不动。最后返回源码去分析,看到了一个这个函数。因为本身sign函数就是异步的。这里在node下还会一直卡住。

修改下,就把这个函数制空,让他return this就好了。

因为sign是异步的,最简单的调用方法还是写成node接口来调用,不然一不小心就会绕进死胡同。直接给出代码

// 引入依赖包
var express = require('express');
var bodyParser = require('body-parser');

// 引入自定义的JS文件
var JS = require('./h5_mtgsig');


// 创建应用实例
var app = express();

app.use(bodyParser.urlencoded({ extended:true }));

app.use(bodyParser.json());
app.post('/h5_mtgsig', function (request, response) {
    let result = request.body;
    let h5_url = result.h5_url;
    JS.get_mtgsig(h5_url).then(resu => {
        response.send(resu);
    });

});

// 启动服务,监听指定主机和端口上的连接
app.listen(3000, () =>{
    console.log('开启服务,端口3000')
});

// 启动命令cmd  :  node 文件名
// npm install -g express     # -g表示是全局安装
// http://localhost:端口/路由地址

这样就结束了,调用接口,传入sign需要的参数就能得到Mtgsig的值了

小结

补环境的话还算简单,跟纯算的话,需要点耐心,但整体也不是特别难,最好能ast解混淆后分析,会更轻松一点。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AJackpot

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

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

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

打赏作者

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

抵扣说明:

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

余额充值