Greasy Fork

Greasy Fork is available in English.

小红书全量数据采集 (Source标识 + 服务器回显)

采集 InitialState 和 Feed 流,标识数据来源,并在气泡中显示服务器返回的具体消息。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
cheng jack os
日安装量
1
总安装量
1
评分
0 0 0
版本
1.5
创建于
2025-12-16
更新于
2025-12-16
大小
8.0 KB
许可证
MIT
适用于

下边是Python版本的服务端代码,自己启动,确保能正常访问即可
然后打开小红书页面就能自动hook到数据,并且以json结构传给服务器存储
目前支持hook的接口有:
1. https://edith.xiaohongshu.com/api/sns/web/v1/feed(推荐页点开触发的接口)
2. https://www.xiaohongshu.com/explore?channel_id=homefeed_recommend&channel_type=web_note_detail_r10(直接打开链接的接口)

这个脚本能怎么玩?
装到 selenium,playwright,pypepteer,dp 等浏览器自动化工具里,访问url,插件自动采集页面信息存储到服务器,实现小红薯自动采集功能



jhc@jhc-G3-3579:~$ cat server.py
# 文件名: server.py
import uvicorn
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
import json
import os
import time

# 初始化 FastAPI 应用
app = FastAPI()

# ================================================================
# 1. 配置 CORS (跨域资源共享)
# 这是为了允许来自浏览器脚本的请求访问本地服务器
# 虽然 GM_xmlhttpRequest 可以绕过部分限制,但配置 CORS 是最稳健的做法
# ================================================================
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有来源,生产环境请指定具体域名
allow_credentials=True,
allow_methods=["*"], # 允许所有方法 (POST, GET, OPTIONS 等)
allow_headers=["*"], # 允许所有请求头
)

# 确保数据保存目录存在
DATA_DIR = "xhs_data"
if not os.path.exists(DATA_DIR):
os.makedirs(DATA_DIR)

@app.get("/")
def read_root():
return {"status": "running", "message": "小红书数据接收服务已启动"}

# ================================================================
# 2. 定义接收数据的接口
# ================================================================
@app.post("/receive_feed")
async def receive_feed(request: Request):
"""
接收来自油猴脚本的 Feed 流数据
"""
try:
# 获取 JSON 数据
data = await request.json()

# 获取当前时间戳作为文件名,防止覆盖
timestamp = int(time.time() * 1000)
filename = f"{DATA_DIR}/feed_{timestamp}.json"

# 将数据写入本地文件
with open(filename, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)

print(f"✅ [成功] 接收到数据,已保存至: {filename}")

# 简单打印一下数据摘要(只打印前两项的 ID,方便在控制台确认)
if "data" in data and "items" in data["data"]:
count = len(data["data"]["items"])
print(f" 📊 本次包含 {count} 条笔记")

return {"status": "success", "file": filename}

except Exception as e:
print(f"❌ [错误] 处理数据失败: {str(e)}")
return {"status": "error", "message": str(e)}

if __name__ == "__main__":
# 启动服务器,监听 8000 端口
# reload=True 表示修改代码后自动重启
print("🚀 服务器启动中... 监听 http://127.0.0.1:8000")
uvicorn.run("server:app", host="192.168.2.114", port=8000, reload=True)