Skip to content
0xdaxiongPublic

About

An HTTP API forwarding service based on [rnet], providing functions such as TLS fingerprint simulation, session pool management, and Cookie management.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RNet API 转发服务

本项目核心代码来自 rnet。这是一个基于 rnet v3.0.0rc17 封装的 HTTP API 转发服务,提供 TLS 指纹模拟、会话池管理、Cookie 管理等功能。

✨ 功能特性

  • 🔐 TLS 指纹模拟 - 支持 100+ 浏览器指纹(Chrome、Safari、Firefox、Edge、Opera、OkHttp)
  • 🏊 会话池管理 - 自动管理会话生命周期,10分钟超时自动清理
  • 🍪 Cookie 管理 - 获取、设置、清除会话 Cookie
  • 🌐 代理支持 - HTTP/HTTPS/SOCKS4/SOCKS5 代理,可随时切换
  • ⚡ 异步并发 - 基于 asyncio 的高性能异步处理
  • 📄 协议控制 - 支持 HTTP/1.1 和 HTTP/2,自定义请求头排序
  • 🖼️ 二进制处理 - 图片等二进制响应自动 Base64 编码

🚀 快速开始

安装依赖

pip install -r requirements.txt

或手动安装:

pip install fastapi uvicorn pydantic pydantic-settings
pip install rnet --pre --upgrade

启动服务

# 开发模式
uvicorn app.main:app --reload --host 0.0.0.0 --port 8080

# 生产模式
uvicorn app.main:app --host 0.0.0.0 --port 8080 --workers 4

访问文档

📖 API 接口

请求转发

POST /api/forward

{
  "session_id": "可选,会话ID",
  "url": "https://httpbin.org/get",
  "method": "GET",
  "headers": {"User-Agent": "Mozilla/5.0"},
  "body": "请求体",
  "json_body": {"key": "value"},
  "form_data": {"field": "value"},
  "timeout": 30,
  "follow_redirects": true,
  "http_version": "2",
  "header_order": ["Host", "User-Agent", "Accept"]
}

响应示例:

{
  "success": true,
  "status_code": 200,
  "headers": {"Content-Type": "application/json"},
  "body": "响应内容",
  "is_base64": false,
  "cookies": [],
  "url": "https://httpbin.org/get",
  "elapsed_ms": 123
}

会话管理

接口 方法 描述
/api/session/create POST 创建新会话
/api/session/{session_id} GET 获取会话信息
/api/session/{session_id} DELETE 删除会话

创建会话请求:

{
  "session_id": "可选,自定义ID",
  "emulation": "Chrome143",
  "proxy": "http://user:pass@host:port",
  "http_version": "2",
  "timeout_minutes": 10
}

Cookie 管理

接口 方法 描述
/api/session/{session_id}/cookies GET 获取 Cookie
/api/session/{session_id}/cookies POST 设置 Cookie
/api/session/{session_id}/cookies DELETE 清除 Cookie

代理管理

接口 方法 描述
/api/session/{session_id}/proxy PUT 更新代理

更新代理请求:

{
  "proxy": "socks5://127.0.0.1:1080"
}

状态接口

接口 方法 描述
/api/status GET 服务状态
/api/emulations GET 支持的浏览器列表

🌐 支持的浏览器指纹

Chrome

Chrome100, Chrome101, Chrome104-Chrome110, Chrome114, Chrome116-Chrome143

Safari

Safari15_3 - Safari26_2, SafariIos, SafariIPad

Firefox

Firefox109, Firefox117, Firefox128, Firefox133-Firefox146

Edge

Edge101, Edge122, Edge127, Edge131-Edge142

Opera

Opera116 - Opera119

OkHttp

OkHttp3_9 - OkHttp5

⚙️ 配置

通过环境变量配置:

变量 默认值 描述
RNET_API_HOST 0.0.0.0 服务监听地址
RNET_API_PORT 8080 服务端口
RNET_API_SESSION_TIMEOUT_MINUTES 10 会话超时时间(分钟)
RNET_API_CLEANUP_INTERVAL_SECONDS 60 清理检查间隔(秒)
RNET_API_MAX_SESSIONS 1000 最大会话数
RNET_API_DEFAULT_TIMEOUT_SECONDS 30 默认请求超时
RNET_API_LOG_LEVEL INFO 日志级别

或使用 .env 文件:

RNET_API_SESSION_TIMEOUT_MINUTES=30
RNET_API_MAX_SESSIONS=500

📦 项目结构

rnet_api/
├── app/
│   ├── __init__.py          # 包初始化
│   ├── main.py               # FastAPI 主应用
│   ├── config.py             # 配置管理
│   ├── models.py             # 数据模型
│   ├── session_pool.py       # 会话池管理器
│   ├── request_handler.py    # 请求处理器
│   └── response_handler.py   # 响应处理器
├── docs/
│   └── API_DOCS.md           # API 详细文档
├── requirements.txt          # 依赖列表
└── README.md                 # 项目说明

🔧 使用示例

Python

import requests

# 创建会话
session = requests.post("http://localhost:8080/api/session/create", json={
    "emulation": "Chrome143",
    "proxy": "http://127.0.0.1:8080"
}).json()
session_id = session["session_id"]

# 发送请求
response = requests.post("http://localhost:8080/api/forward", json={
    "session_id": session_id,
    "url": "https://httpbin.org/get",
    "method": "GET"
}).json()

print(response["body"])

# 获取 Cookie
cookies = requests.get(f"http://localhost:8080/api/session/{session_id}/cookies").json()
print(cookies)

# 删除会话
requests.delete(f"http://localhost:8080/api/session/{session_id}")

cURL

# 创建会话
curl -X POST http://localhost:8080/api/session/create \
  -H "Content-Type: application/json" \
  -d '{"emulation": "Chrome143"}'

# 发送请求
curl -X POST http://localhost:8080/api/forward \
  -H "Content-Type: application/json" \
  -d '{"url": "https://httpbin.org/get", "method": "GET"}'

# 获取状态
curl http://localhost:8080/api/status

📄 许可证

MIT License

🙏 致谢

  • rnet - 高性能 Python HTTP 客户端
  • FastAPI - 现代 Web 框架

About

An HTTP API forwarding service based on [rnet], providing functions such as TLS fingerprint simulation, session pool management, and Cookie management.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages