码上爬第四题:js逆向入门

发布时间:2026/9/29 11:47:28
码上爬第四题:js逆向入门 需求获取20页数据求总和。开始我们先抓包查看请求涉及到哪些加密参数。可以看到请求涉及到sign值与时间戳我们主要处理sign时间戳到后面可以通过python第三方库获取即可。我们尝试一下搜索是否能搜到sign值。OK我们成功搜索到sign值点进去看看是否是我们想要的sign加密参数。在window.md5位置打上断点点击下一页触发断点调式。OK明显可以看到是通过window.md5加密一个字符串后复制给window.token。sign值又来自于window.token。我们可以通过加密字符串”1”来验证是否是标准的md5加密。测试之后可以判断是标准的md5加密。如果不知道的话可以上网上进行MD5加密测试。明文tuling timestamp pageNumber tuling 时间戳 页数思路已经理清了直接调用python第三方库hashlib.md5进行加密即可运行结果如下python版本:import time import hashlib import requests lis [] for pageNumber in range(1,21): print(f正在请求{pageNumber}页) #获取时间戳 timestamp int(time.time()*1000) #pageNumber 1 #进行明文拼接 params tuling str(timestamp) str(pageNumber) #通过MD5算法库进行加密 Sign hashlib.md5(params.encode()).hexdigest() print(密文值Sign:,Sign) print(时间戳ts:,timestamp) url fhttps://www.mashangpa.com/api/problem-detail/4/data/?page{pageNumber}sign{Sign}_ts{timestamp} headers { accept: */*, accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, cache-control: no-cache, pragma: no-cache, priority: u1, i, referer: https://www.mashangpa.com/problem-detail/4/, sec-ch-ua: \Microsoft Edge\;v\153\, \Not_A Brand\;v\8\, \Chromium\;v\153\, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: \Windows\, sec-fetch-dest: empty, sec-fetch-mode: cors, sec-fetch-site: same-origin, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 Edg/153.0.0.0, } cookies { 这里粘贴你的cookie } #sessionid: tbbwz6ee0xy2awmfgy4oq412kvzdibps, response requests.get( url, headersheaders, cookiescookies ) print(response.status_code) print(response.text) resp response.json()[current_array] lis.append(sum(resp)) print(总和:,sum(lis))js版本import requests import execjs with open(r粘贴你的js文件路径,r,encodingutf-8) as f: ctx execjs.compile(f.read()) lis [] for pageNumber in range(1,21): print(f正在请求{pageNumber}页) res ctx.call(loadPage,pageNumber) print(密文值:,res) url fhttps://www.mashangpa.com/api/problem-detail/4/data/?page{pageNumber}sign{res[sign]}_ts{res[_ts]} headers { accept: */*, accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, cache-control: no-cache, pragma: no-cache, priority: u1, i, referer: https://www.mashangpa.com/problem-detail/4/, sec-ch-ua: \Microsoft Edge\;v\153\, \Not_A Brand\;v\8\, \Chromium\;v\153\, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: \Windows\, sec-fetch-dest: empty, sec-fetch-mode: cors, sec-fetch-site: same-origin, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 Edg/153.0.0.0, cookie:粘贴你的cookie值 } response requests.get( url, headersheaders, ) print(response.status_code) print(response.text) resp response.json()[current_array] lis.append(sum(resp)) print(总和:,sum(lis))js源码window this, function (n) { function r(n, r) { var t (65535 n) (65535 r); return (n 16) (r 16) (t 16) 16 | 65535 t } function t(n, t, o, u, e, c) { return r(function (n, r) { return n e | n 32 - e }(r(r(t, n), r(u, c))), o) } function o(n, r, o, u, e, c, f) { return t(r o | ~r u, n, r, e, c, f) } function u(n, r, o, u, e, c, f) { return t(r u | o ~u, n, r, e, c, f) } function e(n, r, o, u, e, c, f) { return t(r ^ o ^ u, n, r, e, c, f) } function c(n, r, o, u, e, c, f) { return t(o ^ (r | ~u), n, r, e, c, f) } function f(n, t) { var f, i, a, h, g; n[t 5] | 128 t % 32, n[14 (t 64 9 4)] t; var l 1732584193, d -271733879, v -1732584194, C 271733878; for (f 0; f n.length; f 16) d c(d c(d c(d c(d e(d e(d e(d e(d u(d u(d u(d u(d o(d o(d o(d o(a d, v o(h v, C o(g C, l o(i l, d, v, C, n[f], 7, -680876936), d, v, n[f 1], 12, -389564586), l, d, n[f 2], 17, 606105819), C, l, n[f 3], 22, -1044525330), v o(v, C o(C, l o(l, d, v, C, n[f 4], 7, -176418897), d, v, n[f 5], 12, 1200080426), l, d, n[f 6], 17, -1473231341), C, l, n[f 7], 22, -45705983), v o(v, C o(C, l o(l, d, v, C, n[f 8], 7, 1770035416), d, v, n[f 9], 12, -1958414417), l, d, n[f 10], 17, -42063), C, l, n[f 11], 22, -1990404162), v o(v, C o(C, l o(l, d, v, C, n[f 12], 7, 1804603682), d, v, n[f 13], 12, -40341101), l, d, n[f 14], 17, -1502002290), C, l, n[f 15], 22, 1236535329), v u(v, C u(C, l u(l, d, v, C, n[f 1], 5, -165796510), d, v, n[f 6], 9, -1069501632), l, d, n[f 11], 14, 643717713), C, l, n[f], 20, -373897302), v u(v, C u(C, l u(l, d, v, C, n[f 5], 5, -701558691), d, v, n[f 10], 9, 38016083), l, d, n[f 15], 14, -660478335), C, l, n[f 4], 20, -405537848), v u(v, C u(C, l u(l, d, v, C, n[f 9], 5, 568446438), d, v, n[f 14], 9, -1019803690), l, d, n[f 3], 14, -187363961), C, l, n[f 8], 20, 1163531501), v u(v, C u(C, l u(l, d, v, C, n[f 13], 5, -1444681467), d, v, n[f 2], 9, -51403784), l, d, n[f 7], 14, 1735328473), C, l, n[f 12], 20, -1926607734), v e(v, C e(C, l e(l, d, v, C, n[f 5], 4, -378558), d, v, n[f 8], 11, -2022574463), l, d, n[f 11], 16, 1839030562), C, l, n[f 14], 23, -35309556), v e(v, C e(C, l e(l, d, v, C, n[f 1], 4, -1530992060), d, v, n[f 4], 11, 1272893353), l, d, n[f 7], 16, -155497632), C, l, n[f 10], 23, -1094730640), v e(v, C e(C, l e(l, d, v, C, n[f 13], 4, 681279174), d, v, n[f], 11, -358537222), l, d, n[f 3], 16, -722521979), C, l, n[f 6], 23, 76029189), v e(v, C e(C, l e(l, d, v, C, n[f 9], 4, -640364487), d, v, n[f 12], 11, -421815835), l, d, n[f 15], 16, 530742520), C, l, n[f 2], 23, -995338651), v c(v, C c(C, l c(l, d, v, C, n[f], 6, -198630844), d, v, n[f 7], 10, 1126891415), l, d, n[f 14], 15, -1416354905), C, l, n[f 5], 21, -57434055), v c(v, C c(C, l c(l, d, v, C, n[f 12], 6, 1700485571), d, v, n[f 3], 10, -1894986606), l, d, n[f 10], 15, -1051523), C, l, n[f 1], 21, -2054922799), v c(v, C c(C, l c(l, d, v, C, n[f 8], 6, 1873313359), d, v, n[f 15], 10, -30611744), l, d, n[f 6], 15, -1560198380), C, l, n[f 13], 21, 1309151649), v c(v, C c(C, l c(l, d, v, C, n[f 4], 6, -145523070), d, v, n[f 11], 10, -1120210379), l, d, n[f 2], 15, 718787259), C, l, n[f 9], 21, -343485551), l r(l, i), d r(d, a), v r(v, h), C r(C, g); return [l, d, v, C] } function i(n) { var r, t , o 32 * n.length; for (r 0; r o; r 8) t String.fromCharCode(n[r 5] r % 32 255); return t } function a(n) { var r, t []; for (t[(n.length 2) - 1] void 0, r 0; r t.length; r 1) t[r] 0; var o 8 * n.length; for (r 0; r o; r 8) t[r 5] | (255 n.charCodeAt(r / 8)) r % 32; return t } function h(n) { var r, t, o 0123456789abcdef, u ; for (t 0; t n.length; t 1) r n.charCodeAt(t), u o.charAt(r 4 15) o.charAt(15 r); return u } function g(n) { return unescape(encodeURIComponent(n)) } function l(n) { return function (n) { return i(f(a(n), 8 * n.length)) }(g(n)) } function d(n, r) { return function (n, r) { var t, o, u a(n), e [], c []; for (e[15] c[15] void 0, 16 u.length (u f(u, 8 * n.length)), t 0; t 16; t 1) e[t] 909522486 ^ u[t], c[t] 1549556828 ^ u[t]; return o f(e.concat(a(r)), 512 8 * r.length), i(f(c.concat(o), 640)) }(g(n), g(r)) } window.md5 function (n, r, t) { return r ? t ? d(r, n) : function (n, r) { return h(d(n, r)) }(r, n) : t ? l(n) : function (n) { return h(l(n)) }(n) } }(); function loadPage(pageNumber) { const timestamp new Date().getTime() window.token window.md5(tuling timestamp pageNumber) const params { page: pageNumber, sign: window.token, _ts: timestamp, }; return params //console.log(params) } //传入页码 //loadPage(1)

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询