某乎搜索接口加密参数分析

news/2025/1/5 6:38:20/文章来源:https://www.cnblogs.com/achangblog/p/18642697

打开某乎,打开浏览器开发者工具,某乎主页随便搜索一个词,如 hello,找到接口如下:
aHR0cHM6Ly93d3cuemhpaHUuY29tL2FwaS92NC9zZWFyY2hfdjM/

该接口为 GET 请求,url 参数未加密,请求头参数有几个未知,如 x-zse-93,x-zse-96,x-zst-81,经测试,请求头必带的参数有 cookie、UA、x-zse-93、x-zse-96、x-zst-81。
一直往下滑翻页查看请求的变化可知,对于同一个关键词的不同翻页请求,仅 x-zse-96 不同,因此先查看此参数生成逻辑,全局搜索未找到有效位置,可以先尝试搜索其他参数,如 x-zse-93 或 x-zst-81,经尝试,找到了 x-zse-81 的生成位置如下:

经调试可知,x-zse-96 就在下方(tC)

可知,x-zse-96 = '2.0_' + tk
tk 就在上方, tk = tT.signature;
进入上方的 ed 方法可以找到 signature 的生成方法:

其中,tp 为如下类型的字符串:

即 x-zse-93 + URI + cookie中的d_c0 + x-zst-81
ty()函数如下:
function(tt, te, tr) {
return te ? tr ? tS(te, tt) : tO(te, tt) : tr ? tC(tt) : tE(tt)
};
经调试,走的是 tE(tt),tE 函数如下:
tE = function(tt) {
return tw(tC(tt))
}
不断循环调用其他函数,最终抠出相关代码并得到 ty()(tp) 的值(扣代码就自己扣吧)

得到里面的参数后,再看外面的函数 tJ(ti).encrypt, 方法如下:
var D = function(tt) {
return __g._encrypt(encodeURIComponent(tt))
};
一步步调试发现,套用了太多层,扣代码较麻烦,观察发现,这是一个 webpack 打包的代码,所以采用扣 webpack 的方式。(扣 webpack 也自己扣吧),扣完后全局导出就好了,如下:


然后运行测试,报错,需要补环境。可以先用一些可以自动生成环境的插件,如 v_jstools

生成的环境经测试可用,接着测试结果。

经测试,发现结果不是固定的,可能与时间或随机数有关,固定时间和随机数后再次测试:


浏览器下:

发现与浏览器环境下结果一致。
这样就得到了 tT.signature 即 tk 的正确值。
x-zse-96 = '2.0_' + tk
将其他参数写死,测试是通过的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861644.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM实战—5.G1垃圾回收器的原理和调优

大纲 1.G1垃圾回收器的工作原理 2.G1分代回收原理—性能为何比传统GC好 3.使用G1垃圾回收器时应如何设置参数 4.如何基于G1垃圾回收器优化性能 5.问题汇总1.G1垃圾回收器的工作原理 (1)ParNew + CMS的组合有哪些痛点 (2)G1垃圾回收器 (3)G1如何实现垃圾回收的停顿时间是可控的 …

大模型--稚晖君开源百万机器人真机数据集 - HPT 具身智能03--43

目录1. 参考2. AgiBot World 数据集1. Arm(手臂)2. Waist(腰部)3. Chassis(底盘)4. Head(头部)5. End-Effector(末端执行器)6. Computing Platform(计算平台)7. Emergency Stop Button(紧急停止按钮)8. Touchscreen Display(触摸屏显示)9. Back Sensor(后部传…

基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率

1.算法运行效果图预览 (完整程序运行后无水印)输出方波输出脉冲波 输出m随机序列输出正弦波2.算法运行软件版本 vivado2019.23.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)//the module of juxin signal signal_jux signal_jux_u(.i_clk (clk_low),.i_rst …

Vue-cli脚手架安装介绍

1、安装Vue-cli 可以使用npm或cnpm安装vue-cli项目构想工具 # 添加国内淘宝镜像加速 sudo npm config set registry https://registry.npmmirror.com/ sudo npm install -g @vue/cli 或使用 # 添加国内淘宝镜像加速 sudo npm install -g cnpm --registry https://registry.npmm…

一名程序员决定学点会计基础知识

1. 概述 企业是一种以营利(即获取经济利润)为目的的经济组织。在会计看来,企业一辈子其实只做了三件事:经营、投资和筹资。 在正常情况下,企业的经济活动是一个川流不息的过程。这一过程也是运用、分配及耗用企业经济资源的过程 。由于资金是企业经济资源的货币表现形式或…

追光记——2024软件工程秋个人总结报告

软件工程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315作业目标 软件工程个人总结学号 102201311一、学期回顾 1.1 SE之初印象 论:大三上最难的一门课是哪个? 操作系统吧,毕竟是408要求的大课 数据库也算合…

ov5640_lcd_display学习笔记

最近学习了正点原子fpga ov5640摄像头显示例程,特此记录一下。 系统框架与接口FPGA要操控的外围器件为ov5640摄像头、LCD和DDR3,接口方面也并不算复杂,用到的接口为sccb、dvp以及RGB888。 sccb接口用来配置摄像头寄存器参数,并且iic兼容sccb,所以配置寄存器直接调用iic的驱…

《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群

《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群@目录二、高级篇(大厂进阶)1.Docker复杂安装详说1.1安装mysql主从复制1.2安装redis集群1.2.1面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例哈希取余分区一致性哈希算法分区…

ThreeJs-10光线投射与物体交互

要拿到three中的物体去做出处理比如点击事件等等,那么需要类似于打一束光下来,穿透物体通过这个数组拿到先创建1000个立方体创建光线投射与物体交互大概步骤如下

【PHP开发】PHP后端基础

一、PHP 基本概念详解 PHP是一种服务器端脚本语言,常用于动态网站开发和 web 应用程序。以下是 PHP 的基本概念与特点的详细说明: 1.1 PHP 文件的默认文件扩展名 PHP 文件的扩展名通常为 .php,例如 index.php。 PHP 文件可以包含 PHP 代码、HTML、CSS 和 JavaScript。 Web 服…

虽遗憾贯穿始终,恍惚过后,好在苦尽甘来不言弃——2024秋软工实践个人总结博客

目录一、学期回顾1.0 汇总———作业&项目1.1我的想象和初心1.2我的投入(头发)和产出1.2.1 编写代码1.2.2 团队项目参与1.2.3 花费的时间1.3印象最深刻的一集二、总结收获2.1我的软工实践故事(流水账)2.1.0 预备2.1.1个人作业2.1.2 结对作业2.1.3 团队作业2.2新技术或生…

XshellPlus V7中文版绿色免安装版下载及使用教程

XshellPlus 是一款将 Xshell 和 Xftp 打包在一起的强大远程管理工具,结合了 Xshell 和 Xftp 的所有功能,提供更高效的远程控制和文件传输体验。目前xshell个人用户已经可以免费使用,官方已经推出个人版!什么是 XshellPlus? XshellPlus 是一款集成了 Xshell 和 Xftp 的工具…