js逆向艺龙的接口,发现头部有一个user-dun的参数。逆向接口如下
https://www.elong.com/tapi/v2/list?city=0101&inDate=2024-11-05&outDate=2024-11-06&filterList=8888_1&keywords=汉庭&placename=&pageIndex=0&pageSize=20
跟踪代码,发现user-dun是通过r = await o.sign生成的(js文件为entry.0-0-3-6aba9276.js)。而o是window.h5sign函数
window.h5sign 函数是加载了dun.min.1.1.4.0.js后挂载到window的。我直接加载了整个dun.min.1.1.4.0.js文件,在文件前面声明一个var window = global;
并且在最后导出window,export default window;
然后新建一个elong.js文件,引用dun.min.1.1.4.0.js文件的window,代码如下:(因为一些参数是固定的,先写成固定参数测试)
import window from "./dun.min.js";
async function tr(e, t, n) {
const o = null == window ? void 0 : window.h5sign;
const r = await o.sign({
fullUrl: "https://www.elong.com/tapi/v2/list?city=0101&inDate=2024-11-05&outDate=2024-11-06&filterList=8888_1&keywords=汉庭&placename=&pageIndex=0&pageSize=20",
type: 2
}, void 0, {
ampParams: Object.fromEntries(Object.entries(n).filter(( ([e,t]) => {
var n;
return null == (n = null == t ? void 0 : t.includes) ? void 0 : n.call(t, "&")
}
)))
})
return r
}
const n = await tr("get", "tapi/v2/list", {
"city": "0101",
"inDate": "2024-11-05",
"outDate": "2024-11-06",
"filterList": "8888_1",
"keywords": "汉庭",
"placename": "",
"pageIndex": 0,
"pageSize": 20
})
console.log(n)
执行后输出{ status: false }。
我怀疑是环境的问题,在dun.min.1.1.4.0.js头部又补了一些环境,
var window = global;
var navigator = {
"appCodeName": "Mozilla",
"appName": "Netscape",
"appVersion": "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
};
var document = {}
结果还是一样,打印了浏览器的window对象对比下,发现浏览器的window对象有很多参数我没有,如:
但是不断的补还是没用。
目前还没有思路继续逆向下去,有高手愿意解答下吗?