JS逆向 -- 浏览器补环境实战(sign加密分析)

本文介绍了如何进行JS逆向工程,特别是针对某新闻网站数据包中的sign值加密进行分析。首先,通过设置模拟浏览器环境来运行和解析代码,然后发现并解决了调用sign函数时的报错问题。最终,利用Python的subprocess模块,实现了通过Node.js脚本动态获取不同URL的sign值,提高了代码的通用性。
摘要由CSDN通过智能技术生成

接上节课内容

JS逆向 -- 某新闻数据包中sign值加密分析

一、将补环境代码复制到上节课那个js文件里面

const jsdom = require("jsdom");
const { JSDOM } = jsdom;//导入jsdom模块
const html = "<!DOCTYPE html><p>逆向有你</p>";
const resourceLoader = new jsdom.ResourceLoader({
    userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
});
const dom = new JSDOM(html,{
    url: "https://www.toutiao.com",
    referrer: "https://www.toutiao.com",
    contentType: "text/html",
    resources: resourceLoader,
})


window = global
document = dom.window.document
const params = {
    location: {
        hash: "",
        host: "www.toutiao.com",
        hostname: "www.toutiao.com",
        href: "https://www.toutiao.com",
        origin: "https://www.toutiao.com",
        pathname: "/",
        port: "",
        protocol: "https:",
        search: "",
    },
    navigator: {
        appCodeName: "Mozilla",
        appName: "Netscape",
        appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
        cookieEnabled: true,
        deviceMemory: 8,
        doNotTrack: null,
        hardwareConcurrency: 12,
        language: "zh-CN",
        languages: ["zh-CN", "zh"],
        maxTouchPoints: 0,
        onLine: true,
        platform: "Win112",
        product: "Gecko",
        productSub: "20030107",
        userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
        vendor: "Google Inc.",
        vendorSub: "",
        webdriver: false
    }
};
Object.assign(global,params)

二、打印我们要的结果

console.log(window.byted_acrawler.sign({'url':'https://www.toutiao.com/toutiaohttps://lf3-config.bytetcc.com/obj/tcc-config-web/tcc-v2-data-toutiao.fe.toutiao_web_pc-common'}))

三、提示报错,找不到sign函数,上面函数中,e参数里面有一个exports导致

四、将该三目运算复制到网站的控制台,结果是undefined,所以直接将该运算替换成void 0

五、重新运行JS代码,成功获取sign值

六、Python代码实现加载数据

1、由于sign函数参数不是固定,为了增加通用性,所以我们继续修改成如下代码

console.log(window.byted_acrawler.sign({'url':process.argv[2]}))

2、调用方式如下,将url地址直接写到后面

3、python代码实现获取sign

import subprocess
url='https://www.toutiao.com/api/pc/list/feed?channel_id=3189398996&max_behot_time=1684844002&offset=0&category=pc_profile_channel&client_extra_params=%7B%22short_video_item%22:%22filter%22%7D&aid=24&app_name=toutiao_web'
sign=subprocess.getoutput('node jiami.js %s' % url)
print(sign)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

web安全工具库

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

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

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

打赏作者

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

抵扣说明:

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

余额充值