逆向微博热搜时光机(js逆向)

2023-12-16 02:52
文章标签 js 逆向 时光 微博热

本文主要是介绍逆向微博热搜时光机(js逆向),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

直接分析,我们需要先查询一下网络请求的方式,通过使用反页请求,我们可以知道这个时光机的本质上是通过ajax请求进行的数据传输,所以这里我们可以减少查询的范围,可以直接调试查找XHR类型的数据传输内容,这里我推荐大家使用翻页后的数据查询,主要是为了鉴定一下该参数的携带加密位置(timeid)

直接使用浏览器抓包,我们会发现这里出现了一个无限debugger,直接找的这行使用右键直接一律不在此执行,跳过这个debugger,或者使用js代码在控制台中直接修改这个函数的内容,这里我感觉使用右键比较方便。

我们可以发现这个网页返回的数据是经过加密的数据,但是这个加密的数据想要呈现出这种效果肯定的使用解密函数,那么又因为没有返回的改数据的名称,所以我们可以直接使用搜索来确定,大家可以使用搜索来解决这个问题,常见的解密函数是decrypt,直接搜索。开始找这个解密函数的位置。

在此调试,我们来验证一下这个参数的传递是什么。

你可以查看到没有一个参数是加密的数据,所以并不是这个

这里当你一致尝试这个不同的decrypt后,到最后一个你会发现这就是你需要的数据位置了。

打上断点进行调试,没意外就是这个。

直接将代码扣下来,发现n是一个加密对象,直接使用js中的进行验证。这个结构一眼加密。所以直接用js中的crypto-js将n替换。

直接扣下来补一个环境

var CryptoJS = require('crypto-js');let s = CryptoJS.SHA1(CryptoJS.enc.Utf8.parse("tSdGtmwh49BcR1irt18mxG41dGsBuGKS")), a = CryptoJS.enc.Hex.parse(s.toString(CryptoJS.enc.Hex).substr(0, 32));function h(t) {let e = (i = t = String(t),o = CryptoJS.enc.Base64.parse(i),r = a,CryptoJS.AES.decrypt({ciphertext: o}, r, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8));var i, o, r;return JSON.parse(e)
}function main(data){return h(data)
}

将python代码联立,获取加密数据,然后传递进行解密。

import requests
import execjsheaders = {"authority": "api.weibotop.cn","accept": "*/*","accept-language": "zh-CN,zh;q=0.9","origin": "https://www.weibotop.cn","referer": "https://www.weibotop.cn/","sec-ch-ua": "\"Google Chrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","sec-fetch-dest": "empty","sec-fetch-mode": "cors","sec-fetch-site": "same-site","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
url = "https://api.weibotop.cn/currentitems"
response = requests.get(url, headers=headers)data = response.textresult_data = execjs.compile(open('D:\桌面\pythoncode\微博时光机.js', 'r', encoding='utf-8').read()).call(('main'),data)
print(result_data)

效果如下

这篇关于逆向微博热搜时光机(js逆向)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/498843

相关文章

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2