2024年某书最新x-s-common签名算法分析以及点赞api接口测试nodejs(2024-01-05)

本文主要是介绍2024年某书最新x-s-common签名算法分析以及点赞api接口测试nodejs(2024-01-05),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

           2024年某书又更新了x-s-common算法,现在的版本是:3.6.8。这个签名算法现在是越来越重要了,许多接口都要用到。比如:评论,点赞等接口,没有这个算法采集不到数据。


    一、chrome逆向x-s-common算法


    1、x-s-common


    打开chrome,按f12,打开开发者模式,随便找一接口,全局搜索:x-s-common,找到位置如下:


(图1x-s-common算法位置)

    2、x-s-common参数

 function xsCommon(t, e) {try {var r, n, o = t.platform, i = e.url, a = map_default()(NEED_XSCOMMON_URLS).call(NEED_XSCOMMON_URLS, (function(t) {return new RegExp(t)}));if (!some_default()(a).call(a, (function(t) {return t.test(i)})))return e;var u = e.headers["X-t"] || "", c = e.headers["X-s"] || "", s = e.headers["X-Sign"] || "", l = getSigCount(u && c || s), f = localStorage.getItem(MINI_BROSWER_INFO_KEY), p = localStorage.getItem(RC4_SECRET_VERSION_KEY) || RC4_SECRET_VERSION, d = {s0: getPlatformCode(o),s1: "",x0: p,x1: version,x2: o || "PC",x3: "xhs-pc-web",x4: "3.23.0",x5: js_cookie.Z.get(LOCAL_ID_KEY),x6: u,x7: c,x8: f,x9: encrypt_mcr(concat_default()(r = concat_default()(n = "".concat(u)).call(n, c)).call(r, f)),x10: l};e.headers["X-S-Common"] = encrypt_b64Encode(encrypt_encodeUtf8(stringify_default()(d)))} catch (h) {}return e}
//提炼参数如下:
{"s0": 5,"s1": "","x0": "1","x1": "3.6.8","x2": "Windows","x3": "xhs-pc-web","x4": "3.23.1","x5": "186d30820a4m09cb6glhxe1aqks2olv1l97ow1gun50000408882","x6": 1704412623681,"x7": "XYW_eyJzaWduU3ZuIjoiNTEiLCJzaWduVHlwZSI6IngxIiwiYXBwSWQiOiJ4aHMtcGMtd2ViIiwic2lnblZlcnNpb24iOiIxIiwicGF5bG9hZCI6IjU5ZTg4ODZkYTE5OTg3ZjNlNTNkOWM0YjljZmZjYjUwMGU4YzA2MWY0Y2I3YTBhYjc5YWI2MGU0NjYxN2UxZTdmMDIzNmYzOGM0YjEwMzllZjFkYzU3MmE5N2NiNTliYWM5ZTNiZmRhMWZhYTFlYjkwZDc0YWEzMWI1NGM3MmNkMGQ3NGFhMzFiNTRjNzJjZGFjNDg5YjlkYThjZTVlNDhmNGFmYjlhY2ZjM2VhMjZmZTBiMjY2YTZiNGNjM2NiNTUyYjFkZWM4MTkzYzQwNjMwODhlN2EwZTFhZjcyMGE0N2VhZGMxNzQ2ZDA3MWI3MmYwYzBmNzk0M2U3YjAyMzU0NWU4MTFjZDQ3NGZkZGMxODQ5MTU2NjA5ZTJmYWI5YzZlZjI1ODc2ZDNmNGY5Mjk0NWZhOGExMWI1NWE3Yzk1YWEyMWRmZjNiMjgxOThmZWU2MDg3ODNlYTQyNjNlNzU3MWMyZjY5MmYwZmY4Y2IyZWY1N2M4ZmJjNDk3YmVhOCJ9","x8": "I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLgFTIxS3bqwErFeexd0ekncAzMFYnqthIhJeSBMDKutRI3KsYorWHPtGrbV0P9WfIi/eWc6eYqtyQApPI37ekmR1QL+5Ii6sdnoeSfqYHqwl2qt5BfqJIvFbNLQ+ZPw7Ixdsxuwr4qtkIkrwIi/skZc3ICLdI3Oe0utl2ADZsL5eDSJsSPwXIEvsiVtJOPw8BuwfPpdeTDWOIx4VIiu6ZPwbJqt0IxHyoMAeVutWIvvs6VtrIkSKIimrzf7sY9GdZ0vsYutmor/e0lD9oooeYlqZI3gsYuwZIEesjVtIcYT0OoVGIvgeiqtR/Ygexdp8IhTLIEY2Q7PjI3RG4mQgIiifpVwAICrVJo3eDbvekVtlIx3s0U6sfgu4IENs6DZ3yutiIkos1ovskY/skVw2enNsSPwVIC+ssA7eSuwkggKsWVw8IxI2I38DsqwZgVtLzdbLtb6ekLAs6uwmIE3sS76sVzZvIEF=","x9": -850196713,"x10": 137
}

参数分析如下:
s0: getPlatformCode(o),
固定值,web端为:5
s1: "",
固定值,web端为:空
x0: p,p = localStorage.getItem(RC4_SECRET_VERSION_KEY) || RC4_SECRET_VERSION
固定值,web端为:1
x1: version,    
固定值,版本号,当前版本为:"3.6.8",
 "x2": o || "PC",
固定值"Windows",,表示平台类型。
x3: "xhs-pc-web",
固定值,程序类型
x4: "3.23.0",
固定值,内部版本号
x5: js_cookie.Z.get(LOCAL_ID_KEY),
该值为:a1,从cookie中获取。
"x6": u,u = e.headers["X-t"] || ""
该值为:x-t,从x-s签名算法中返回。
"x7": c,c = e.headers["X-s"] || ""
该值为:X-s,从x-s签名算法中返回。
x8: f,localStorage.getItem(MINI_BROSWER_INFO_KEY)
该值为:浏览器指纹,每个浏览器值不同,但基本上可以固定不变。
x9: encrypt_mcr(concat_default()(r = concat_default()(n = "".concat(u)).call(n, c)).call(r, f)),
可以简化如下:
let mcr=encrypt_mcr(xt+xs+b1);
该值为:x6+x7+x8的加密。
x10: l=getSigCount()
该值为:调用x-s-common的计数值。


3、加密函数


e.headers["X-S-Common"] = encrypt_b64Encode(encrypt_encodeUtf8(stringify_default()(d)))
stringify_default()实际上是:JSON.stringify(d))

4、encrypt_mcr算法


(图2encrypt_mcr算法)

5、encrypt_b64Encode加密


(图3encrypt_b64Encode加密)


6、encrypt_encodeUtf8加密


(图4encrypt_encodeUtf8加密)

7、x-s-common测试结果对比


(图5,图6x-s-common测试结果对比)

(图5,图6x-s-common测试结果对比)


可见,nodejs环境算出的结果与浏览器一致。

二、点赞api接口测试


    点赞api接口需要x-s-common签名参数,否则点赞不成功。


1、nodejs点赞api接口源码如下:

const https = require('node:https');
//----------------------------------------------调用模块初始化----------------------------------------------------
const m_common_data = require('./x-s-common.js');//X-S-Common签名
const m_xs_data = require('./xs.js');//X-S签名
//mode by wx:byc6352 in 2024-01-05
//-----------------------------------------------------------------------------------------------------------------------
set_lick(true);//true为点赞,false为取消点赞async function set_lick(b){let url="";if(b)url="https://edith.xiaohongshu.com/api/sns/web/v1/note/like";elseurl="https://edith.xiaohongshu.com/api/sns/web/v1/note/dislike";let path=url.replace("https://edith.xiaohongshu.com","");let data={"note_oid":"649ce312000000000800edcd"};let data_str=JSON.stringify(data);let a1="18cb6c8af05699x2fcmw6t6jwq9yi8kjhc6ge611l50000415372";let o=await m_xs_data.get_xs(path,data_str,a1);var xs=o["X-s"];var xt=o["X-t"];let x_common=m_common_data.get_common(a1,xt,xs);let traceid=m_common_data.get_traceid();let headers={"authority":'edith.xiaohongshu.com',"method":'POST',"path":path,//'/api/sns/web/v1/note/like',"scheme":'https',"Accept":'application/json, text/plain, */*',//"Accept-Encoding":'gzip, deflate, br',"Accept-Language":'zh-CN,zh;q=0.9',"Content-Length":data_str.length,//'39',"Content-Type":'application/json;charset=UTF-8',"Cookie":cookie,"Origin":'https://www.xiaohongshu.com',"Referer":'https://www.xiaohongshu.com/',"Sec-Ch-Ua":'"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',"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/120.0.0.0 Safari/537.36',"X-B3-Traceid":traceid,//'0b0b047c4d54393b',"X-S":xs,"X-S-Common":x_common,"X-T":xt,}//const options = {hostname: 'edith.xiaohongshu.com',port: 443,path: path,method: 'POST',headers: headers}let req = https.request(url,options, (res) => {console.log(`STATUS: ${res.statusCode}`);console.log(`HEADERS: ${JSON.stringify(res.headers)}`);res.setEncoding('utf8');var body="";res.on('data', (chunk) => {body=body+chunk;});res.on('end', () => {try {console.log(body);}catch (e){console.error(e);}});res.on('close', () => {});});req.on('error', (e) => {console.error(`problem with request: ${e.message}`);});req.write(data_str,'utf8');req.end();}

2、接口运行成功


技术支持:6Zeu6aKY5ZKo6K+i77yadng6YnljNjM1MiBvciBtZXRhYnljZjtRUTozOTg0ODg3Mjt0ZWxlZ3JhbTpieWMwMQ==(base64解码)

(图6成功点赞)

大功造成!!!

这篇关于2024年某书最新x-s-common签名算法分析以及点赞api接口测试nodejs(2024-01-05)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig