当前位置: 首页 > article >正文

爬虫案例十五js逆向七麦数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、网站分析
  • 二、代码


前言

提示:这里可以添加本文要记录的大概内容:

js逆向七麦数据


提示:以下是本篇文章正文内容,下面案例可供参考

一、网站分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码

扣的js

function fn_o(n) {
    var t = '';
    ['66', '72', '6f', '6d', '43', '68', '61', '72', '43', '6f', '64', '65']['forEach'](function(n) {
        t += unescape('%u00' + n)
    });
    return String["fromCharCode"](n)
}
function fn_p(t) {
    t = encodeURIComponent(t)["replace"](/%([0-9A-F]{2})/g, function(n, t) {
        return fn_o('0x' + t)
    });
    try {
        return btoa(t)// 计算base64
    } catch (n) {
        return Buffer['from'](t)['toString']('base64')
    }
}
function fn_qt(n, t) {
    for (var e = (n = n['split'](''))['length'], r = t['length'], a = 'charCodeAt', i = 0; i < e; i++)
        n[i] = fn_o(n[i][a](0) ^ t[(i + 10) % r][a](0));
    return n['join']('')
}
function fn(t) {
    var n = undefined;
    // f || $ != s
    s = 1079
    var e, r = +new Date - (s || 0) - 1661224081041, a = [];
    return undefined === t["params"] && (t["params"] = {}),
    Object['keys'](t["params"])['forEach'](function(n) {
        if (n == 'analysis')
            return false;
        t["params"]['hasOwnProperty'](n) && a['push'](t["params"][n])
    }),

    a = a['sort']()['join'](''),
    a = fn_p(a),

    a = (a += "@#" + t["url"]["replace"](t["baseURL"], "")) + ("@#" + r) + ("@#" + 3),
    e = fn_p(fn_qt(a, 'xyz517cda96efgh')),


    -1 == t['url']['indexOf']('analysis') && (t['url'] += (-1 != t['url']['indexOf']('?') ? '&' : '?') + 'analysis' + '=' + encodeURIComponent(e)),
    e
}
// v = fn({
//     baseURL: "https://api.qimai.cn",
//     url: "/indexV2/getIndexRank",
//     params: {
//         "genre": "36",
//         "setting": "0"
//     },
// })
// console.log(v);

python代码

import requests
import execjs

f = open('qm.js',mode='r',encoding='utf-8')
js_code = f.read()
f.close()
js = execjs.compile(js_code)
url = "https://api.qimai.cn/indexV2/getIndexRank"

params = {
    "setting": "0",
    "genre": "36"
}
jiami_ming = {
    "baseURL": "https://api.qimai.cn",
    "url": "/indexV2/getIndexRank",
    "params": params
}
mi = js.call("fn",jiami_ming)
print(mi)
params['analysis'] = mi
headers = {
	"":"" #头自行添加
}
resp = requests.get(url,params=params,headers=headers)
print(resp.json())

在这里插入图片描述


http://www.kler.cn/a/584889.html

相关文章:

  • MySQL Buffer Pool、Undo Log、脏页详解
  • 树莓科技集团董事长:第五代产业园运营模式的深度剖析与展望​
  • MATLAB—从入门到精通的第三天
  • uniapp上传文件问题以及返回上一页出现退出app的问题记录
  • Flutter_学习记录_video_player、chewie 播放视频
  • 80.Dictionary 字典 C#例子
  • 数据库学习笔记
  • CSS3 用户界面设计指南
  • Go执行当前package下的所有方法
  • 微信小程序校园跑腿的设计与实现【lw+源码+部署+视频+讲解】
  • SpringBoot使用Logback日志框架与综合实例
  • 在 WSL中批量执行InSAR任务-stackSentinel.py
  • 【web前端开发】HTML排版标签、HTML语义化标签、常用的文本标签
  • 嵌入式裸机设计--MCU常用裸机架构有哪些?
  • 面试之《实现Event Bus》
  • Qt 驾校考试系统项目实现
  • OSPF-2 邻接建立关系
  • 软件工程概述、软件过程模型、逆向工程(高软45)
  • 2025探索短剧行业新可能报告40+份汇总解读|附PDF下载
  • 【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析