全球实时交易系统BN API,如何实现网络架构实时探测?
摘要:# BN API 架构探测 > 通过 DNS 解析、响应头分析、性能测试等手段,分析币安合约交易 API 的基础架构设计 ## 一、摘要 **核心发现**: - `fapi.binance.com`(REST API)
# BN API 架构探测
> 通过 DNS 解析、响应头分析、性能测试等手段,分析币安合约交易 API 的基础架构设计
---
## 一、摘要
**核心发现**:
- `fapi.binance.com`(REST API)使用 **CloudFront + 禁用缓存** 架构
- `fstream.binance.com`(WebSocket)使用 **独立 EC2 + 固定 IP** 架构
- 两种架构分别针对短连接和长连接场景进行了精细化优化
---
## 二、研究方法
### 2.1 测试工具
| 工具 | 用途 |
|------|------|
| `nslookup`, `dig` | DNS 查询 |
| `curl` | HTTP 测试 |
| `curl` with timing | 性能测试 |
| `openssl s_client` | TLS 分析 |
| `ipinfo.io` | IP 归属查询 |
### 2.2 测试维度
1. **DNS 解析**:不同地理位置的 DNS 返回结果
2. **响应头分析**:识别中间层技术栈(CDN、负载均衡器)
3. **性能测试**:响应时间分布和稳定性
4. **缓存行为**:测试 CDN 缓存策略
5. **IP 溯源**:通过 PTR 记录确认 IP 类型
---
## 三、REST API 架构分析(fapi.binance.com)
### 3.1 DNS 解析特征
#### 日本东京 AWS EC2
```bash
$ nslookup fapi.binance.com
Name: fapi.binance.com
Canonical name: tf-futures-prod-fapi-2-alb-2110254405.ap-northeast-1.elb.amazonaws.com
Address: 18.177.245.151
Address: 176.34.6.220
... (共 8 个 IP)
```
#### 欧洲法兰克福 AWS EC2
```bash
$ nslookup fapi.binance.com
Name: fapi.binance.com
Canonical name: d2ukl3c6tymv7q.cloudfront.net
Address: 65.9.175.125
Address: 65.9.175.39
... (CloudFront IP)
```
### 3.2 GeoDNS 路由策略
| 用户位置 | DNS 返回 | 架构 |
|---------|---------|------|
| 亚太(日本) | ALB 直连 | `*.elb.ap-northeast-1.amazonaws.com` |
| 欧洲 | CloudFront | `*.cloudfront.net` |
| 其他地区 | CDN/CloudFront | 具体 IP |
### 3.3 CloudFront 不是用来缓存的!
**测试结果**:
```bash
$ curl -si https://fapi.binance.com/fapi/v1/time | grep -E "cache|x-cache"
HTTP/2 200
cache-control: no-cache, no-store, must-revalidate
pragma: no-cache
x-cache: Miss from cloudfront
```
**所有接口都配置了 `no-cache, no-store, must-revalidate`!**
### 3.4 CloudFront 的真正用途
```
fapi.binance.com 架构:
用途: REST API (交易、查询、行情)
前端: CloudFront
缓存策略: 完全禁用 (no-cache, no-store)
作用:
- 全球网络加速 (AWS 骨干网)
- DDoS 防护 (Shield Standard)
- HTTP/2 优化
- 地理路由
成本: ~$255,000/月 (100TB 流量)
```
### 3.5 为什么不缓存?
| 原因 | 说明 |
|------|------|
| **实时性要求** | 交易 API 必须实时,缓存会导致套利风险 |
| **合规要求** | 金融交易 API 必须提供实时、一致的数据 |
| **限流机制优先** | 币安通过 API 权重系统控制流量,而非依赖缓存 |
```
x-mbx-u
