web逆向-xx乐

【JS逆向】xx社区 帖子 请求参数加密(nonce) xx社区 帖子 请求参数加密(nonce) 阅读详情

0. 思路来源

此文章仅用于技术交流

1. 什么是XX乐

XX乐是一种web端的网页反爬虫技术,其主要逻辑为对一个url连续请求三次,第一次为错误(状态码501)的请求,并且生成一个cookie,第二次同样为错误的请求,并且会携带此cookie发起请求,得到一段混淆的js代码,并且此代码运行后会生成最终的cookie,第三次携带此cookie即可获得正确的结果

2. 解题思路

    1. 发起第一次请求,获得cookie
    1. 携带cookie发起第二次请求
    1. 根据第二次请求获得的js代码运行后得到的cookie发起第三次请求

3. 思路

0x01 检查与分析

浏览器无痕窗口(无cookie)访问网址,通过F12检查三次请求
检查网络请求
在第二次请求的时候携带了一个新的cookie:__jsl_clearance_s,这个cookie即第一次请求返回的结果。
第二次cookie值
在第三次请求的时候也携带了此cookie,但是与第二次的不一样,是通过第二次返回的JS代码运行后获取的。
第三次cookie值

0x02 第一次请求与分析

因涉及到cookie的变换,这里使用session较为合适

import requests, re, execjs
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
}
url = "https://xx.xxxxxx.com/search/?kw=%E6%84%9F%E5%86%92"
session = requests.session()
response_1 = session.get(url, headers=headers).text

如图所示为第一次运行后的结果:
第一次运行的结果
返回的内容并不是全都需要,需要对结果进行处理

js_1 = re.findall('document.cookie=(.*?);loca', response_1)[0]

js_1的值
再通过第三方库execjs进行js的运行并且对结果进行处理并写入到session里

__jsl_clearance_s = execjs.eval(js_1).split(';')[0].split('=')[1]
session.cookies.set('__jsl_clearance_s', __jsl_clearance_s)

__jsl_clearance_s处理后的值

0x03 第二次请求与分析

按照上面的方式进行第二次的请求

response_2 = session.get(url=url, headers=headers).text
js_2 = re.findall('<script>(.*?)</script>', response_2)[0]

得到了一段比较长的js代码,其中的ha值代表了加密方式,总共有三种:sha1、sha256、md5。每次的加密方式总是随机生成。
第二次返回的JS代码
对返回的代码进行运行和分析,发现缺少环境,需要补充环境。
首先是补充最基本的window和document以及location环境,其次运行发现userAgent报错
JS代码-userAgent报错
在浏览器中进行调试。在源代码-事件侦听器断点-脚本 进行勾选,然后清理浏览器cookie重新请求。找到一直放行断点直至符合我们第二次请求返回的代码处,找到报错的位置进行输出查看
断点调试
在控制台输出混淆的代码即可发现是window[‘navigator’][‘userAgent’]
控制台调试
只需要对window下的navigator下的userAgent进行补环境即可。
当我们补完了环境,运行后发现既不报错也无任何数据输出。检查代码发现核心代码是使用了setTimeout计时器,原理是此方法设置了一个定时器,一旦定时器到期,就会执行一个函数或指定的代码片段。可以使用一个简单的箭头函数进行自定义。
JS代码解析
至此,我们的环境几乎补充完全,还需要考虑到两点:1. 这个js是Python请求获取到的,可以定义一个变量,在Python代码中把得到的JS代码和补环境中的变量进行替换即可使用。2. 我们运行了这个JS代码的目的是获得cookie,所以我们需要使用箭头函数定义一个变量来输出cookie。
补环境代码如下:

jscode = """window = global; window.navigator = {userAgent : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36'}; document = {}; location = {}; let fn = () => document.cookie; setTimeout = (arg1, arg2) => arg1(); code_"""

当我们运行整合后的Python代码时可能会报错:

UnicodeEncodeError: 'gbk' codec can't encode character '\xe5' in position 14296: illegal multibyte sequence

如果遇到这个错误,我们只需要在代码最上方添加如下三行代码即可解决:

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

PS:这个问题出现的原因是使用了pyexecjs,此库已经不维护了,有许多编码问题,想解决编码问题可以通过pip install pyexecjs2下载新的库使用

再使用execjs对代码进行处理并写入session

js_final = execjs.compile(jscode.replace('code_', js_2)).call('fn').split(';')[0].split('=')[1]
session.cookies.set('__jsl_clearance_s', js_final)

0x04 第三次请求

第三次可正常请求,即可得出结果:

response_3 = session.get(url=url, headers=headers).text

4. 总体代码

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

import requests, re, execjs

jscode = """window = global; window.navigator = {userAgent : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36'}; document = {}; location = {}; let fn = () => document.cookie; setTimeout = (arg1, arg2) => arg1(); code_"""

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
}
url = "https://xx.xxxxxx.com/search/?kw=%E6%84%9F%E5%86%92"

session = requests.session()
response_1 = session.get(url, headers=headers).text
js_1 = re.findall('document.cookie=(.*?);loca', response_1)[0]
__jsl_clearance_s = execjs.eval(js_1).split(';')[0].split('=')[1]
session.cookies.set('__jsl_clearance_s', __jsl_clearance_s)

# 第二次请求
response_2 = session.get(url=url, headers=headers).text
js_2 = re.findall('<script>(.*?)</script>', response_2)[0]
encrypt_type = re.findall('"ha":"(.*?)","is"', js_2)[0]
js_final = execjs.compile(jscode.replace('code_', js_2)).call('fn').split(';')[0].split('=')[1]
session.cookies.set('__jsl_clearance_s', js_final)

# 第三次请求
response_3 = session.get(url=url, headers=headers).text
print(response_3)

【JS逆向】XX云歌曲评论【AES+RSA】加密 xx歌曲评论逆向 阅读详情

相关推荐

【JS逆向】XX网 Post参数以及数据加密【Base64+Aes+Des】

Post参数以及数据加密【Base64+Aes+Des】

MaxShuo的博客 1705

新手参加2025年CTF大赛——Web题目的基本解题流程

新手参加2025年CTF大赛——Web题目的基本解题流程

隔壁王叔的博客 1440

常见的爬虫逆向面试题

文章转载于:https://mp.weixin.qq.com/s/dXRo0D_Xx7E_h85XbnwPVQ 有兴趣去源站浏览学习主要自己看着方便些。

菜鸡小白的成长记录 1694

web逆向-XX指数

页面加载会产生3个接口,其中接口1的结果返回了uniqid和加密值data,接口2的url拼接上uniqid,会返回另外一个字符串e.data,调用解密方法传入e.data和data即可得到正确的结果。

HelloDWW的博客 1122

WEB逆向进化论:Agent技术如何重塑数据采集与自动化架构

在数据采集与自动化领域,传统WEB逆向技术通过分析网络请求、解析页面结构来获取数据,其核心原理是模拟浏览器行为或直接调用API接口。这项技术的价值在于能够高效、精准地提取结构化信息,广泛应用于电商监控、舆情分析和价格比对等场景。然而,面对现代Web应用日益复杂的交互逻辑和动态内容,传统方法在维护成本和应对变化方面面临挑战。近年来,基于大语言模型的智能体(Agent)技术为这一领域带来了新的思路。Agent通过自然语言理解任务意图,并驱动真实浏览器进行交互,能够更灵活地处理登录、复杂表单和多步操作等动态流程,

weixin_30908941的博客 417

逆向破解FastMoss TikTok接口签名加密:Python实战与Web逆向思路

在Web开发与数据采集领域,API接口签名验证是保障数据传输安全与防止滥用的核心机制。其基本原理是客户端与服务器约定一套加密算法,对请求参数、时间戳等信息进行哈希运算,生成唯一的签名串,服务器通过验签确保请求的合法性与完整性。这项技术的核心价值在于,在不暴露敏感密钥的前提下实现身份认证与防篡改,广泛应用于开放平台、数据服务商的风控体系中。典型的应用场景包括社交媒体数据聚合、电商价格监控、金融行情采集等自动化业务流程。本文以FastMoss平台的TikTok数据接口为例,深入剖析其签名加密的逆向工程实战。通过

weixin_34343000的博客 399

【JS逆向】xx租房 AES数据加密

注意:文章内容仅用于学习和技术交流,如有侵权请联系我删除。 学者应洁身自好,切勿做出违法的事情,旨在提供逆向思路。 aHR0cHM6Ly93d3cubWFvbWFvenUuY29tLyMvYnVpbGQv 问题分析: 打开url,发现post数据和结果返回皆为加密数据: 猜测为AES对称加密。 逆向分析: 当看到这些加密数据时,无论搜索url中的关键词还是全局一步一步调试,都很难找到加密和解密入口,无从下手,这时,换个思路,既然猜测为AES加密, 那就大胆搜索下与AES加..

MaxShuo的博客 2275

AI三端逆向SKILL:构建人机协同的逆向工程智能工作流

逆向工程是分析软件内部工作原理、协议和数据格式的关键技术,广泛应用于安全研究、漏洞挖掘、协议分析和软件兼容性开发等领域。其核心原理是通过静态分析(反汇编、反编译)和动态分析(调试、行为监控)等技术手段,还原程序的逻辑与结构。随着软件保护技术(如代码混淆、虚拟机保护、反调试)的复杂化和代码规模的膨胀,传统依赖人工经验逐行分析的方法面临效率瓶颈。AI辅助逆向通过引入大语言模型的代码理解、模式识别与上下文推理能力,为这一领域带来了新的技术价值。它能自动化处理海量混淆代码的初步聚类与摘要,辅助工程师快速定位关键逻辑

weixin_34005042的博客 699

JS逆向学习 加密站点的渗透测试!

某xxx行智慧商家管理平台登录首页界面下图是在【手机验证登录】处通过 burpsuite 抓到的数据包,此时如果随意修改请求数据包,发送到服务端后会因无法解密或验签不通过而丢弃此次请求。针对手机号填写处,我们无法正常进行诸如SQL注入、XSS、逻辑漏洞等测试。所以解密数据包,是针对此类站点进行渗透测试的前置条件。需要用python写一个叫 Burpy 的类,在实现几个方法,如:encrypt、decrypt、processor 等,新增的方法会注册到 burpsuite 插件burpy的事件模块中。

weixin_51725318的博客 1061

YOLOv5模型转换陷阱:从PT到RKNN的置信度异常与乱框问题深度解析

本文深度解析了YOLOv5模型从PT到RKNN转换过程中的置信度异常与检测框错乱问题,揭示了NPU硬件特性与模型结构不匹配的根本原因。通过详细的解决方案和实操步骤,包括模型修改、转换流程配置和验证技巧,帮助开发者有效解决这一常见部署难题,提升模型在瑞芯微芯片上的推理性能。

weixin_29062255的博客 902

独立站如何采集商品?外贸独立站采集教程

从这里Robert了解到还有国内有很多仿牌卖家、微商,都有类似的情况,他们出海的阻碍主要在于支付、物流、推广。8.插件“抓取任务”列表手动点同步,将商品同步到主商城后台商品管理列表(商品默认同步到下架列表中) 后台商品管理下架列表显示已同步商品。5.店铺信息修改完成后,可以开始采集商品,采集时弹窗中会自动识别当前平台及商品链接,分类和相册名称可以自定义 编辑修改。4. 打开采集目标站商品页面,点开谷歌浏览器扩展程序列表,找到Shopyy采集平台,打开配置页。打开弹窗中的“店铺管理”,添加店铺信息。

Jernnifer_mao的博客 1378

[逆向知识] 补环境 -- 让本地逆向如鱼得水

详细介绍了JS逆向爬虫中补环境的方法与技巧。通过分析浏览器特有属性和Node.js环境的差异,提出缺什么补什么的核心思路,并给出window、navigator等常见对象的补环境示例。针对复杂情况,介绍了代理监控器的高级用法,能有效追踪未定义属性。

2401_87328929的博客 3042

Android开发Intent详解

本文详解Android开发Intent。

qq_30725967的博客 2414

逆向分析某office插件

至此,这个软件就分析的差不多了,还有其他的一些小功能在此就不再赘述了,本文起到一个抛砖引玉的作用,读者可以参考本文自行分析其余的功能模块,若想获得VIP权限,有如下几种方法。每次使用软件时用dnSpy调试,修改局部变量, 在内存中改成VIP;分析授权码算法,自行编写注册机进行授权;直接拿密钥写注册表;拦截通讯数据包,抓包改包,欺骗软件自己已经是VIP了。上述1~3条方法建议配合断网使用,否则可能会失效,不过也可以通过hook方法屏蔽掉它的联网功能,此处不再赘述。

m0_59598029的博客 1451

从报错到优化:一次Gauss JDBC参数限制排查实录(32767参数上限避坑指南)

本文详细记录了排查GaussDB JDBC驱动因绑定参数数量超过32767上限而抛出`PSQLException`(报错信息为`Tried to send an out-of-range integer as a 2-byte value`)的全过程。文章深入分析了该限制的底层协议原理,并提供了应用层分批查询、使用临时表以及优化业务逻辑等多种解决方案,旨在帮助开发者规避此参数上限陷阱,构建更稳健的数据访问层。

rgv23456789的博客 218

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 990

建议收藏 | 最全的 JS 逆向入门教程合集

点击上方“咸鱼学Python”,选择“加为星标”第一时间关注Python技术干货!嘿,大家好,截止今天咸鱼零零散散分享爬虫、数据分析基础和 Web 的内容已经136篇...

咸鱼学Python的博客 2万+

化工设计软件:PDMS二次开发_(7).数据导入与导出技术

在某些复杂场景下,PDMS提供的标准API接口可能无法满足需求。此时,可以通过自定义API接口来实现特定的数据导入与导出功能。自定义设备导入API接口可以处理更复杂的设备数据格式。# 导入必要的库import pdms_api # 假设有一个PDMS API库# 定义自定义设备数据# 自定义设备导入API接口# 调用自定义设备导入API接口# 输出导入成功的消息print("自定义设备数据导入成功")在PDMS二次开发中,数据的导入与导出是关键的技术环节。

kkchenjj的博客 1484

关于某方的的逆向

某方接口逆向

kejione的博客 337

【PyTorch项目实战】图像分类与识别:手写数字识别(MNIST)、普适物体识别(CIFAR-10)

主要介绍了两个经典的实战项目:(1)基于 MNIST 数据集的手写数字识别(2)基于 CIFAR-10 数据集进行图像分类

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4400

23、工业物流中的多智能体路径规划与碰撞处理策略

本文探讨了工业4.0背景下工业物流中的多智能体路径规划(MAPF)与碰撞处理策略。分析了自动导引车(AGV)等移动资源的应用现状,综述了主流路径规划算法如A*、D*Lite、M*等,以及集中式与分布式碰撞检测方法。重点比较了五种碰撞避免策略:路径交叉、优先级、起始时间调整、无交叉路径和速度调整,提出了基于环境条件的策略选择流程,并通过流程图展示了评估、组合、测试与优化的全过程。文章强调应根据订单不确定性、时间约束、优先级和生产组织等因素综合选择或组合策略,以提升物流效率与系统可靠性。

mac99的博客 125

521反爬报错实战指南:从原理到JS逆向的完整解决方案

很多人看到5xx就默认是源站服务器故障,反复调整请求头、降低请求频率都无济于事——实际上,绝大多数业务场景下的521并非源站宕机,而是网站WAF/云防护网关抛出的JS挑战拦截,是专门针对自动化脚本的反爬机制。我们将从原理拆解入手,结合真实采集案例,完整覆盖521反爬的排查思路、三种层级的绕过方案,以及核心的JS逆向实战,看完即可解决90%以上的521拦截场景。这是开发成本最低的方案,核心思路是:用真实浏览器内核执行JS,自动完成Cookie计算与验证,完全模拟普通用户的访问流程。

2502_92200938的博客 304

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

xx云音乐 encSecKey参数逆向分析

网易云音乐唯一的加密地方在每个音乐的评论数据上,一些做自然语言nlp的同学可能会需要这部分的数据。本篇文章将带着大家逐步分析网易云音乐params和encSecKey参数的加密方法,以及如何逆向得出加密参数。

weixin_52807972的博客 1543

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【JS逆向学习】五矿(rsa加密)

至此,整个加密过程我们已经分析完毕,代码如下,需要注意的是。首先翻页观察网络请求,再次翻页发现仍然是两次网络请求,如下。看到应该是在上面位置初始化的,然后我们控制台打印下。加密的参数我们已经分析完了,接下来我们来分析。,然后把上述函数代码拷贝进来并补全参数,然后执行。加密,第一个接口就只是发起网络请求,返回。代码断住了,然后向上跟栈观察,得来全不费功夫。,像这种请求参数加密的,可以直接。为了验证下我们的猜想,我们新建个。加密本身,用于加密的对象。我们分析下上面的代码逻辑,位的时间戳,至此,用于。

学海无涯 1946

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

逆向小程序破解js神器-(工具篇)

ok, 现在基本上破解一个wx小程序的一个流程大概就已经完成了, 剩下的就是如何进行调试破解了, 这个工具可以说是小程序调试神器,修改代码很方便,并且易调试,可以修改手机型号,真机调试,清理缓存, 快速定位加密代码,绝对是爬虫的一个神器,大家可以尝试一下,大家有什么问题可以留言, 欢迎来撩, 希望收藏。

qq_38219875的博客 7773
上一篇: pyppeteer + 隧道代理 搭配使用
下一篇: web逆向-XX指数
我真看不懂代码
博客等级 码龄7年 189粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值