- 查询页面
携程链接
- 第一步找到数据怎么来的
发现航班信息在返回 json 的 routeList 里
看传递的参数
然后只要找到token是怎么来的就好了
可以确定token 是由 app.js 生成的,可以看到这个请求只调用过app.js
到 app.js 里去搜索,在可疑的地方打断点
然后回到页面重新搜索航班
调用了p.getProductToken 函数,传递了三个参数 can bjs Oneway ,分别是出发城市 、到达城市、单程。执行下一步
继续执行
后面就不分析了,后面就把js 扣出来在工具里测试
成功拿到token,然后在python中用execjs 执行js 就可以拿到token,就可以发送请求查询航班。
gettoken.js
function a(e, t) {
var n = (65535 & e) + (65535 & t);
return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
}
function i(e, t, n, r, i, o) {
return a((l = a(a(t, e), a(r, o))) << (s = i) | l >>> 32 - s, n);
var l, s
}
function o(e, t, n, r, a, o, l) {
return i(t & n | ~t & r, e, t, a, o, l)
}
function l(e, t, n, r, a, o, l) {
return i(t & r | n & ~r, e, t, a, o, l)
}
function s(e, t, n, r, a, o, l) {
return i(t ^ n ^ r, e, t, a, o, l)
}
function u(e, t, n, r, a, o, l) {
return i(n ^ (t | ~r), e, t, a, o, l)
}
function c(e, t) {
var n, r, i, c, f;
e[t >> 5] |= 128 << t % 32,
e[14 + (t + 64 >>> 9 << 4)] = t;
var d = 1732584193,
p = -271733879,
h = -1732584194,
m = 271733878;
for (n = 0; n < e.length; n += 16) d = o(r = d, i = p, c = h, f = m, e[n], 7, -680876936),
m = o(m, d, p, h, e[n + 1], 12, -389564586),
h = o(h, m, d, p, e[n + 2], 17, 606105819),
p = o(p, h, m, d, e[n + 3], 22, -1044525330),
d = o(d, p, h, m, e[n + 4], 7, -176418897),
m = o(m, d, p, h, e[n + 5], 12, 1200080426),
h = o(h, m, d, p, e[n + 6], 17, -1473231341),
p = o(p, h, m, d, e[n + 7], 22, -45705983),
d = o(d, p, h, m, e[n + 8], 7, 1770035416),
m = o(m, d, p, h, e[n + 9], 12, -1958414417),
h = o(h, m, d, p, e[n + 10], 17, -42063),
p = o(p, h, m, d, e[n + 11], 22, -1990404162),
d = o(d, p, h, m, e[n + 12], 7, 1804603682),
m = o(m, d, p, h, e[n + 13], 12, -40341101),
h = o(h, m, d, p, e[n + 14], 17, -1502002290),
d = l(d, p = o(p, h, m, d, e[n + 15], 22, 1236535329), h, m, e[n + 1], 5, -165796510),
m = l(m, d, p, h, e[n + 6], 9, -1069501632),
h = l(h, m, d, p, e[n + 11], 14, 643717713),
p = l(p, h, m, d, e[n], 20, -373897302),
d = l(d, p, h, m, e[n + 5], 5, -701558691),
m = l(m, d, p, h, e[n + 10], 9, 38016083),
h = l(h, m, d, p, e[n + 15], 14, -660478335),
p = l(p, h, m, d, e[n + 4], 20, -405537848),
d = l(d, p, h, m, e[n + 9], 5, 568446438),
m = l(m, d, p, h, e[n + 14], 9, -1019803690),
h = l(h, m, d, p, e[n + 3], 14, -187363961),
p = l(p, h, m, d, e[n + 8]