xhs 小红书X-s补环境分析

部署运行你感兴趣的模型镜像

声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

有相关问题请第一时间头像私信联系我删除博客!

第一步那就是找传参加密的入口

xhs的环境检测相比dy是要少很多的,接下来步入正题;

1、首先进入网站:aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tL2V4cGxvcmU=
2、进入后直接F12

3、随便点一个标签

4、过滤一下homefeed接口就有本次学习的目标接口5、Ctrl+Shift+f全局搜索  ["X-s"]

6、然后分析一下这三个结果

第一个和第二个都是同一个位置,这已经很明显了咱们直接打上刷新

会发现到这时已经是生成了X-s和X-t放在了l里面准备提取扔到headers了那咋们就往上看l的值是怎么来的就会发现是通过一个条件判断调用不同方法生成的;那咱就打断点到这个l生成的这里

(要注意很多接口都会走这里去生成x-s所以可以打个条件断点)

c.indexOf('/api/sns/web/v1/homefeed') != -1

打上断点后放掉断点随便点一个标签会发现断住了

那就看看到底是调的那个方法生成的吧

把这两个方法拎出来可以明显看到window._webmsxyw生成的x-s的长度才是正确的,那接下来就看看传了那些参数吧

在断点上面可以看到是传了一个c和一个i

里面分别是API和请求时的参数

第二步就是扣代码和补环境了

上面已经知道是调用那个方法传那些参数了那咋就别蹭了进去吧,直接将鼠标放到window._webmsxyw上面点击提示的路径跳转到加密代码

可以发现这里全是混淆的jsvmp代码就不用去分析代码逻辑了直接Ctrl+A全选复制到本地去吧

扣下了可以看到有四个大方法咱不管直接运行

发现报了一个window未定义那就直接window = global呗但是记得加delete global,然后在最下面加上调用生成参数的方法;

再次运行发现是下一个错误了,那就到了我们补环境的正题了

那就加上Proxy代理去慢慢补吧;

经过了九九八十一天的补环境也是正常出值了,用Python传值调用它是否可行吧;

到这就大功告成!

如有问题可以联系我或者在评论区互相学习,如有侵权请联系我进行删除!

免责声明: 本文所提供的信息仅供学习和研究用途!严禁用于任何商业和非法用途!请在遵守相关法律法规的前提下进行网络爬虫操作!否则作者不对因使用本文信息而导致的任何法律问题或后果负责!

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

可以使用Playwright创建浏览器环境来生成加密结果,从而获取小红书的x - s。以下是相关的代码示例及步骤说明: ### 1. 利用Playwright创建浏览器环境执行加密函数 ```python import asyncio from playwright.async_api import async_playwright async def main(): async with async_playwright() as playwright: browser = await playwright.chromium.launch(headless=True) page = await browser.new_page() # 注入stealth.min.js脚本 await page.add_init_script(path="stealth.min.js") url = "" # 请求api data = "" # 请求参数 # 执行JavaScript获取加密参数 encrypt_params = await page.evaluate('([url, data]) => window._webmsxyw(url, data)', [url, data]) local_storage = await page.evaluate('() => window.localStorage') print(encrypt_params) print(local_storage) await browser.close() asyncio.run(main()) ``` 上述代码中,通过`page.evaluate`方法调用了`window._webmsxyw`函数,此函数可能是小红书的加密函数,执行该函数可以得到加密结果,加密结果可能包含x - s [^1]。 ### 2. 构建获取签名的函数 ```javascript function get_sign(api) { return global_page.evaluate((api) => { return new Promise((r, j) => { let data = { a1: new RegExp('a1' + '=' + '([^;]*)' + ';').exec(document.cookie)[1], sign: window._webmsxyw(api) }; r(data); }); }, api); } ``` 这里定义了一个`get_sign`函数,该函数通过`global_page.evaluate`方法调用`window._webmsxyw`函数来获取签名,签名结果可能包含x - s。需要注意的是,它检测`a1`,也就是加密用到的`a1`和拿到加密后请求接口用到的cookie里面的`a1`要保持一致 [^2]。 ### 3. 调用加密服务获取x - s等信息 ```python import requests import json # 假设cp和cp2是调用加密服务的对象 result = cp.call('get_comment', p, data, a1) headers = {} headers['x-s'] = result['X-s'] print('X-s==>', result['X-s']) headers['x-t'] = str(result['X-t']) print('X-t==>', headers['x-t']) common = cp2.call('getCommon', headers['x-t'], headers['x-s'], a1) headers.update({"x-s-common": common}) print('x-s-common==>', headers['x-s-common']) X_Mns = cp2.call('getSign', json={ 'u': '/api/sns/web/v1/homefeed', 'p': data, 'a1': a1 }) print('X_Mns==>', X_Mns) headers['x-mns'] = X_Mns cookies = { "xsecappid": "xhs-pc-web", "a1": a1, "acw_tc": "", "loadts": "1746520372696", } url = "/api/sns/web/v1/feed" data = json.dumps(data, separators=(',', ':')) response = requests.post(url, headers=headers, cookies=cookies, data=data) print(response.text) print(response) ``` 此代码通过调用加密服务(`cp`和`cp2`)来获取`x - s`、`x - t`、`x - s - common`和`X_Mns`等信息,并将这些信息添加到请求头中,然后发送请求 [^3]。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值