爬虫学习-Scrape Center spa2 超简单 JS 逆向

关卡

spa2

电影数据网站,无反爬,数据通过 Ajax 加载,数据接口参数加密且有时间限制,适合动态页面渲染爬取或 JavaScript 逆向分析。

首先抓包发现get请求的参数token有加密。 offset表示翻页,limit表示每一页有多少条数据。

抓到加密 Token 之后,就要找出 Token 值是怎么生成的,

搜索token:看js代码在哪里

点进去,打上断点调试看看

e = Object(i"a")(this.$store.state.url.index, a)

分析这段代码:

这行代码中,Object(i"a") 是一个函数调用,它接受两个参数 this.$store.state.url.index 和 a,然后将它们传递给函数 i"a",并将结果赋值给变量 e。

根据代码的语境,可以推测这行代码的作用是使用 this.$store.state.url.indexa 作为参数调用了对象 i 的方法 a,并将结果赋值给了变量 e

加密位置就这里扣下来

完整代码

js

javascript 复制代码
 const n = require('crypto-js');

 function i() {
            for (var t = Math.round((new Date).getTime() / 1e3).toString(), e = arguments.length, r = new Array(e), i = 0; i < e; i++)
                r[i] = arguments[i];
            r.push(t);
            var o = n.SHA1(r.join(",")).toString(n.enc.Hex)
              , c = n.enc.Base64.stringify(n.enc.Utf8.parse([o, t].join(",")));
            return c
        }

python

python 复制代码
import requests
import execjs
headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',

}

for offset in range(0,100,10):

    js_da=execjs.compile(open('6.js','r',encoding='utf-8').read()).call('i','/api/movie',offset)
    params = {
        'limit': '10',
        'offset':offset ,
        'token': js_da,
    }
    response = requests.get('https://spa2.scrape.center/api/movie/', params=params, headers=headers)
    print(response.json())

运行结果

结束

相关推荐
To_OC6 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
To_OC7 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
小林ixn8 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
世人万千丶8 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
এ慕ོ冬℘゜8 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
随心点儿9 小时前
js postMessage 实现跨域发送消息-应用示例
javascript·ecmascript·postmessage
kyriewen10 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
遇乐的果园11 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园12 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_13 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法