2024年nodejs调用小红书最新关注(粉丝)follow接口,api接口分析2004-04-16


一、打开chrome按f12,点击右上角的“关注”按钮,抓包位置如下:


(图1 follow接口)


二、follow接口分析


1、请求地址

https://edith.xiaohongshu.com/api/sns/web/v1/user/follow

2、请求方法:
POST
3、请求头:


:authority:
edith.xiaohongshu.com
:method:
POST
:path:
/api/sns/web/v1/user/follow
:scheme:
https
Accept:
application/json, text/plain, */*
Accept-Encoding:
gzip, deflate, br, zstd
Accept-Language:
zh-CN,zh;q=0.9
Content-Length:
45
Content-Type:
application/json;charset=UTF-8
Cookie:
{.........此处省略..............}
Origin:
https://www.xiaohongshu.com
Referer:
https://www.xiaohongshu.com/
Sec-Ch-Ua:
"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"
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/123.0.0.0 Safari/537.36
X-B3-Traceid:
c47c9349e64fd39d
X-S:
XYW_eyJzaWduU3ZuIjoiNTEiLCJzaWduVHlwZSI6IngxIiwiYXBwSWQiOiJ4aHMtcGMtd2ViIiwic2lnblZlcnNpb24iOiIxIiwicGF5bG9hZCI6IjQwMGQwNzU2NmQ2MjE0MjU0NTZkY2RkNTZlOGRlMjU4ZTVmOWZjOGQxODU5ZDllODk2MjMxMzA2OGY1NmU0MjQ3NTQ2NGJjNzNlNmU1ZWMyZjg4NTJhNzdhYzcxMTNkYWM5ZTNiZmRhMWZhYTFlYjkwZDc0YWEzMWI1NGM3MmNkMGQ3NGFhMzFiNTRjNzJjZGFjNDg5YjlkYThjZTVlNDhmNGFmYjlhY2ZjM2VhMjZmZTBiMjY2YTZiNGNjM2NiNTUzZjAxZTk0Nzg2NWIwZGE5MzU0MGFkNzFmODhhNmViNDRlYmQyOGZiN2IxNGQzMWJjNzRjNGJhNjI1NDRmMTM4Y2YwNGQ2MjYxZGRkYTNmMmQxMGI0MmI1NTc4YjJhNDQ1ZTc0ODZkYThlM2Y0ODZkMTdkYzI3MjIzNTNkNWNiYTk4YmJhYTg2NGY3MzhlM2ZjMGI0ZGVkNDkwZGI0ZTMxNGQxNDljNTU0YzkwNDBiODI5YmFjYTU4ZmM2ZjQxMCJ9
X-S-Common:
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
X-T:
1713252619968

4、请求数据体

{"target_user_id":"59391d446a6a6960704f16b1"}

5、请求成功返回:

{"code":0,"success":true,"msg":"成功","data":{"fstatus":"follows"}}

三、nodejs调用接口代码


const https = require('node:https');
const fs = require("fs");
const os = require("os");
//----------------------------------------------调用模块初始化----------------------------------------------------
const m_common_data = require('./x_s_common.js');//X-S-Common签名
const m_xs_data = require('./xs.js');//X-S签名
const m_proxy = require('./proxy.js');
const agent=m_proxy.get_agent();
//mode by byc6352 or metabycf in 2024-01-05
exports.set_follow=set_follow;

//target_user_id=被关注用户id    a1=从cookie提取的         web_session=从cookie提取的
async function set_follow(target_user_id,web_session,a1){
    let cookie=`abRequestId=b5675107-257c-5e9e-9bfe-157d0dc56027; webBuild=3.11.3; xsecappid=xhs-pc-web;a1=${a1};webId=4f4e47c26fec73469f2a0a1b36b59b49;web_session=${web_session}; websectiga=6169c1e84f393779a5f7de7303038f3b47a78e47be716e7bec57ccce17d45f99; sec_poison_id=30196e44-925f-4243-86da-685cafcc09e5;gid=yYDq8j0dy2M8yYDq8j0fW003JWv0DIMSFAY0kJMTIACS3928S0hi80888qKj8WW8DJyfKWW`;
    let url="https://edith.xiaohongshu.com/api/sns/web/v1/user/follow";
    let path=url.replace("https://edith.xiaohongshu.com","");
    let data={target_user_id: target_user_id};
    let data_str=JSON.stringify(data);
    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={
        "Connection":"close",
        "authority":'edith.xiaohongshu.com',
        "method":'POST',
        "path":'/api/sns/web/v1/user/follow',
        "scheme":'https',
        "Accept":'application/json, text/plain, */*',
        //"Accept-Encoding":'gzip, deflate, br',
        "Accept-Language":'zh-CN,zh;q=0.9',
        "Content-Length":'45',
        "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="99", "Google Chrome";v="121", "Chromium";v="121"',
        "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/121.0.0.0 Safari/537.36',
        "X-B3-Traceid":traceid,//'0a781c1de7825c27',
        "X-S":xs,//'XYW_eyJzaWduU3ZuIjoiNTEiLCJzaWduVHlwZSI6IngxIiwiYXBwSWQiOiJ4aHMtcGMtd2ViIiwic2lnblZlcnNpb24iOiIxIiwicGF5bG9hZCI6ImMwNjkwZjhiMmJjNWJlYzZjODFiYTBkMGE5NzYzM2E1YTg3ODgyYTU3ZTM4NDJkZTgzMThhMWY3YTBlOWZiYzRkYjcyOGNmNWQ0ZjYwMDQyN2QzZjMxNzdmM2M5MmExM2M5ZTNiZmRhMWZhYTFlYjkwZDc0YWEzMWI1NGM3MmNkMGQ3NGFhMzFiNTRjNzJjZGFjNDg5YjlkYThjZTVlNDhmNGFmYjlhY2ZjM2VhMjZmZTBiMjY2YTZiNGNjM2NiNTUyYjFkZWM4MTkzYzQwNjMwODhlN2EwZTFhZjcyMGE0N2VhZGMxNzQ2ZDA3MWI3MmYwYzBmNzk0M2U3YjAyMzU0NWU4MTFjZDQ3NGZkZGMxODQ5MTU2NjA5ZTJmYWI5YzZlZjI1ODc2ZDNmNGY5Mjk0NWZhOGExMWI1NWE3Yzk1YWEyMWRmZjNiMjgxOThmZTRmY2NlZDEyZWQxYWI2YWMyZTkwN2NjMDM4NjBkNTJmNTU1MGVmMmMwNTk1NDI2ZiJ9',
        "X-S-Common":x_common,//'2UQAPsHC+aIjqArjwjHjNsQhPsHCH0rjNsQhPaHCH0P1+jhhHjIj2eHjwjQgynEDJ74AHjIj2ePjwjQhyoPTqBPT49pjHjIj2ecjwjHFN0P1+UHVHdWMH0ijP/W98ePIweHIG/zTPeS0G08dJBYh8/bYqnTAPfRV40bVw/464Abd4nhMPeZIPecIweWhPjHVHdW9H0il+AZE+eLU+erMPAqANsQh+UHCHSY8pMRS2LkCGp4D4pLAndpQyfRk/SzbyLleadkYp9zMpDYV4Mk/a/8QJf4hanS7ypSGcd4/pMbk/9St+BbH/gz0zFMF8eQnyLSk49S0Pfl1GflyJB+1/dmjP0zk/9SQ2rSk49S0zFGMGDqEybkea/8QJLM7/fk34MkxyBS+JLkx/S4tJbSCnfkOzr8knpzsyFMoz/pw2SSC//QbPpSL8A+OzB4EnpzpPMkL//zwzrk3nSzd2DMLyBY+pMDAnpzsJrRgnfS82SQ3nnk02LRo/fMwpMrInfk84FMrLgSwPSbCnfk+2rEC8BM+PDFM/nMb2rFU//pyprEknfMayrMgnfY8pr8Vnnk34MkrGAm8pFpC/p4QPLEo//++JLE3/L4zPFEozfY+2D8k/SzayDECafkyzF8x/Dzd+pSxJBT8pBYxnSznJrEryBMwzF8TnnkVybDUnfk+PS8i/nkyJpkLcfS+ySDUnpzyyLEo/fk+PDEk/Szp2pSxzfTypFFF/pz32SSCLg4wyDM7/FziJrhUzg4ypr8infk02LMoz/mwPS8inD4+2rECL/QyzrrA/p4QPFMTng482DQT/dk3PrFUp/+8yDbE/gkpPrEgp/z+pr8xnDzzPFEonfTyzFMh/Fzz+LMLp/QwyDrMnSztJpSga/p82SkVnfkQPLRrGAQyzrET/D48+LMxyAmwpMki/F4b2rMga/bwpFLAngk3PpSgzgS+pMQTnfkwyLMx87YOpBYTnSzaJpDU/flyzrpEnS4z2bSga/Q8pFMEnSz34FhU/fk+zrFF/fks',
        "X-T":xt//'1709452415373',
    }
    const options = {
        hostname: 'edith.xiaohongshu.com',
        port: 443,
        path: path,
        method: 'POST',
        headers: headers
    }
    if(agent!==undefined)options.agent = agent;
    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', () => {
            console.log("close");
        });
    });

    req.on('error', (e) => {
        console.error(`problem with request: ${e.message}`);
    });
    req.write(data_str,'utf8');
    req.end();

}

第三方调用接口:

http://helpnow.top:8087/xhs/follow?key=234181402307&target_user_id=被关注用户id&a1=从cookie提取的&web_session=从cookie提取的

四、follow接口调用成功


(图2follow接口调用成功)

6Zeu6aKY5ZKo6K+i77yadng6YnljNjM1MiBvciBtZXRhYnljZjtRUTozOTg0ODg3Mjt0ZWxlZ3JhbTpieWMwMQ==(base64解码)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IO流高级流

前言 缓冲区能够提升输入输出的效率 虽然FileReader和FileWriter中也有缓冲区 但是BufferedReader和BufferWriter有两个非常好用的方法. 缓冲流 字节缓冲流 import java.io.*;public class BufferedStreamDemo {public static void main(String[] args) throws IOExceptio…

策略模式(知识点)——设计模式学习笔记

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下…

LC 206.反转链表

# 206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入: head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入: head [1,2] 输出:[2,1] 示例…

工作流引擎项目解析

API 编辑 在Camunda中,API的继承关系主要体现在各个服务接口之间。以下是Camunda中一些常见服务接口的继承关系: ProcessEngineServices 接口: RepositoryService: 负责管理流程定义和部署。 RuntimeService: 负责管…

《大话数据结构》01

1. 什么是数据 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。 比如我们现…

Java --- 类与对象

上篇内容给大家带来了Java的语句与数组的相关内容,那么本期内容比较重要,需要读者们掌握Java面向对象编程的根本,通过这篇博客来让读者浅入理解Java类的一些基本操作。 目录 一.特点: 二.成员变量: 三.访问修饰符&a…

Chatgpt掘金之旅—有爱AI商业实战篇|构建SaaS业务|(二十)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、程序员如何搞副业构建 SAAS 业务? 程序员不仅拥有将抽象概念转化为实际应用的能力,还通常具备强大的逻辑思维和问题解决能力。然而,许…

读书笔记之《如何精心设计提示词来精通ChatGPT》

《如何精心设计提示词来精通ChatGPT》这本书英文标题为:《The Art of Prompt Engineering with chatGPT》,于2023年出版。作者是Nathan Hunter 。 Nathan Hunter简介:ChatGPT培训的创始人。作为一名资深培训师和教学设计师,我在过…

【MogDB】在ORACLE和MogDB中查看存储过程出参游标数据的方式

一、前言 使用ORACLE作为数据库的应用软件中,偶尔会遇到使用游标作为出参的存储过程,这种存储过程迁移到MogDB并不需要进行改造,但是在开发这样的存储过程时,开发人员偶尔会想要在数据库中测试执行一下,看看游标中的数…

OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子组件,到目标List子组件…

MongoDB的go SDK使用集锦

在上一章解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用介绍了如何使用mongo shell操作mongo数据库,接下来介绍如何使用sdk来操作数据库,这里以go语言为例,其他语言请查看源文档mongo docs Quick Start 内置数据结构 MongoDB是存…

记第一次踩坑Gradle

今天有个项目只能使用Gradle编译,没办法了,尝试吧。 先去下载了最新版本的Gradle,然后配置好了环境变量,可以在命令行使用gradle命令了。 然后打开项目开始操作一番,但是上来就傻眼了。 我白下载了,又重新下…

每日两题2

不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m1, vector<int>(n1,0));//创建dp表dp[0][1] 1;//初始化//填表for(int i 1; i < m; i){for(int j 1; j < n; j){dp[i][j] dp[i-1][j] dp[i][j-1];}}ret…

飞书API(4):筛选数据的三种思路

截止到上一篇&#xff0c;终于通过飞书 API 完整获取到飞书多维表的数据。但是&#xff0c;有些场景&#xff0c;比如数据源会出现脏数据&#xff0c;毕竟如果是运营过程多人协作维护的数据&#xff0c;要想保持数据完美简直是天方夜谭&#xff01;再比如我们不需要完整的数据&…

JavaFX项目环境配置

Java版本 JDK15 JavaFX版本 JavaFX SDK 17 sdk下载地址https://gluonhq.com/products/javafx/ https://gluonhq.com/products/javafx/ Java FX sdk 版本不要选择22版本 与 jdk15版本不合 编辑器 配置Eclipse JDK15环境 点击Add 第二步新建一个javafx项目 点击next 勾选Ja…

Aurora 协议学习理解与应用——Aurora 8B10B协议学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Aurora 8B10B协议学习之一&#xff0c;理解协议 概述8B10B数据发送和接收Symbol-Pairs传输调度用户PDU传输过程用户PDU接收过程 流控自然流量控制操作自然流量控制延迟自然流…

微信人脉扩张!多号批量自动加好友,你get到了吗?

微信是我们在拓展社交圈和寻找商业机会时&#xff0c;与更多的人建立联系的重要渠道。但是&#xff0c;手动一个个添加好友显然费时费力&#xff0c;这时候&#xff0c;微信管理系统的批量自动加好友功能就成为了微信人脉扩张的神器。 通过微信管理系统&#xff0c;我们可以轻…

JavaScript 高性能编程 —— 加载和运行

JavaScript 在浏览器中的性能,可认为是开发者所要面对的最重要的可用性问题。此问题因 JavaScript 的阻塞特征而复杂,也就是说,当 JavaScript 运行时其他的事情不能被浏览器处理。 事实上,大多数浏览 器使用单进程处理 UI 更新和 JavaScript 运行等多个任务,而同一时间只能…

C++笔记:类和对象

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量&#xff0c;类型就像是定义了数据的规则&#xff0c;而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型&#xff0c;而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

配置优先级标记和队列调度示例

配置优先级标记和队列调度示例 组网图形 图1 优先级标记和队列调度示例组网图 优先级标记和队列调度简介配置注意事项组网需求配置思路操作步骤配置文件 优先级标记和队列调度简介 报文进入设备之后&#xff0c;设备会根据相应的规则分配或修改报文各种优先级的值&#xff…
最新文章