Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 28 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,35 @@ jobs:
LDFLAGS="-X RealityChecker/internal/version.Version=$VERSION -X RealityChecker/internal/version.Commit=$COMMIT -X RealityChecker/internal/version.BuildTime=$BUILD_TIME -s -w"

# Linux AMD64 - 静态编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$LDFLAGS" -tags netgo -installsuffix netgo -o reality-checker .
chmod +x reality-checker
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$LDFLAGS" -tags netgo -installsuffix netgo -o dist/reality-checker-linux-amd64 .
cp dist/reality-checker-linux-amd64 reality-checker
zip -j dist/reality-checker-linux-amd64.zip reality-checker
rm reality-checker

# Linux ARM64 - 静态编译
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "$LDFLAGS" -tags netgo -installsuffix netgo -o reality-checker .
chmod +x reality-checker
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "$LDFLAGS" -tags netgo -installsuffix netgo -o dist/reality-checker-linux-arm64 .
cp dist/reality-checker-linux-arm64 reality-checker
zip -j dist/reality-checker-linux-arm64.zip reality-checker
rm reality-checker

# Windows AMD64
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "$LDFLAGS" -o dist/reality-checker-windows-amd64.exe .
cp dist/reality-checker-windows-amd64.exe reality-checker.exe
zip -j dist/reality-checker-windows-amd64.zip reality-checker.exe
rm reality-checker.exe

# macOS AMD64
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "$LDFLAGS" -o dist/reality-checker-darwin-amd64 .
cp dist/reality-checker-darwin-amd64 reality-checker
zip -j dist/reality-checker-darwin-amd64.zip reality-checker
rm reality-checker

# macOS ARM64
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "$LDFLAGS" -o dist/reality-checker-darwin-arm64 .
cp dist/reality-checker-darwin-arm64 reality-checker
zip -j dist/reality-checker-darwin-arm64.zip reality-checker
rm reality-checker

# 显示构建结果
ls -la dist/

Expand All @@ -82,8 +100,12 @@ jobs:
详细使用方法请参考 [README.md](https://github.com/V2RaySSR/RealityChecker/blob/main/README.md)

**下载说明:**
- `reality-checker-linux-amd64.zip` - Linux x86_64
- `reality-checker-linux-arm64.zip` - Linux ARM64
- Linux (x86_64): `reality-checker-linux-amd64.zip` / `reality-checker-linux-amd64`
- Linux (ARM64): `reality-checker-linux-arm64.zip` / `reality-checker-linux-arm64`
- Windows (x86_64): `reality-checker-windows-amd64.zip` / `reality-checker-windows-amd64.exe`
- macOS (Intel): `reality-checker-darwin-amd64.zip` / `reality-checker-darwin-amd64`
- macOS (Apple Silicon): `reality-checker-darwin-arm64.zip` / `reality-checker-darwin-arm64`


**基本命令:**
```bash
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
reality-checker
reality-checker.exe
*.exe
PROJECT_STATUS.md

# 系统文件
Expand Down
118 changes: 52 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# Reality协议目标网站检测工具
# Reality Target 寻找和分析工具

一个专业的Reality协议目标网站检测工具,用于评估网站是否适合作为Reality协议的目标域名。
一键找到符合最佳实践的SNI

[V2RaySSR综合网](https://v2rayssr.com)
基于原项目,整合Xray官方RealiTLScanner的功能,简化了操作步骤,实现 `输入ip段,返回符合条件的域名`,大大减少了心智负担和操作难度

Reality SNI目标域名的最佳实践

- 不使用CDN
- 非热门大厂
- 和入口机ip同ASN
- TLS握手延迟尽量低

## ✨ 功能特性

Expand All @@ -16,14 +23,52 @@
* **批量检测** - 支持多域名并发检测,可与RealiTLScanner配合使用
* **智能报告** - 生成详细的检测分析报告

### 推荐工作流程

1.确认vps ip

2.手动查找和第一步的ip同ASN同国家的ip段(比如在[ipinfo](https://ipinfo.io)),

3.把找到的ip range填入一个文件(比如as7203.txt),一行一条

4.开始检测(在客户端运行,也就是本地电脑,这样测出来的握手时间才有参考性,保证直连[不会分流请关闭代理])

```bash
./reality-checker auto --in ./as7203.txt --limit 10
```

5.手动测试符合条件的域名,观察是否像真实上线的网站(不是demo,不是初始部署欢迎页),最好有真实的功能和业务

## 📊 检测结果说明

### 检测结果示例

以下是一个批量检测的实际输出示例:
原本设计为

```bash
./reality-checker csv file.csv
```
输入vps的ip -> 自动查询ASN以及对应国家的同ASN ip段 -> 并发扫描所有ip -> 返回符合条件的结果
```

但是自动查询ASN下的ip段目前没找到免费的数据库方案。
所以折中的做法是

### 过滤条件

二进制同目录下 congfig.yaml

```yaml
reality_filter:
#是否要求无cdn,默认true(推荐)
require_no_cdn:true
#TLS握手延迟上限,根据具体情况调整,默认800ms
max_hadshake_ms: 800
#最少证书有效期(如果过低可能是无人维护的死站)
min_cert_days: 20

#并发性能
concurrency:
max_concurrent: 10
check_timeout: 3s
```

**实际运行效果:**
Expand All @@ -32,14 +77,6 @@

**只有满足Reality目标域名硬性条件的(TLS1.3、X25519、H2、SNI匹配、证书有效),才会在列表中显示**

### CDN检测等级说明

| 等级 | 含义 | 影响 |
|------|------|------|
| **高** | 明确使用CDN | 可以使用,但不推荐 |
| **中** | 疑似使用CDN | 可以使用,但不推荐 |
| **低** | 轻微CDN特征 | 可以使用,但不推荐 |
| **-** | 未检测到CDN | 可以使用,强烈推荐 |

### 热门网站说明

Expand All @@ -64,41 +101,8 @@

**方法1:直接下载(推荐)**

从 [Releases](https://github.com/V2RaySSR/RealityChecker/releases) 页面下载对应架构的zip文件:

```bash
# Linux x86_64
wget https://github.com/V2RaySSR/RealityChecker/releases/latest/download/reality-checker-linux-amd64.zip

# Linux ARM64
wget https://github.com/V2RaySSR/RealityChecker/releases/latest/download/reality-checker-linux-arm64.zip
```

解压后直接使用:
```bash
# 解压
unzip reality-checker-linux-amd64.zip

# 添加执行权限
chmod +x reality-checker
从 [Releases](https://github.com/qualvey/RealityChecker/releases) 页面下载对应架构的zip文件:

# 开始检测
./reality-checker check <域名>
```

**方法2:本地编译**

```bash
# 克隆项目
git clone https://github.com/V2RaySSR/RealityChecker.git
cd RealityChecker

# 编译程序
go build -o reality-checker

# 开始检测
./reality-checker check <域名>
```

## 🔍 使用示例

Expand All @@ -123,24 +127,6 @@ go build -o reality-checker
./reality-checker csv file.csv
```

### 推荐工作流程

对于大量域名检测,建议配合使用 [RealiTLScanner](https://github.com/XTLS/RealiTLScanner) 工具( [教程观看](https://www.youtube.com/watch?v=zE8CFQ6muUI) ):

**1. 使用RealiTLScanner扫描VPS IP:**
```bash
./RealiTLScanner -addr <VPS IP> -port 443 -thread 100 -timeout 5 -out file.csv
```

**2. 使用本工具检测生成的CSV文件:**
```bash
./reality-checker csv file.csv
```

**重要提示:**
- RealiTLScanner 尽量在本地运行,不要在远端
- 多次运行RealiTLScanner时,请更改输出文件名,如:`file1.csv`、`file2.csv`、`file3.csv` 等
- 如果使用相同的文件名,可能会导致文件导出失败或覆盖之前的扫描结果

### 查看帮助

Expand Down
Binary file removed RealiTLScanner-ARM.zip
Binary file not shown.
Binary file removed RealiTLScanner-Intel.zip
Binary file not shown.
Binary file removed RealityChecker.png
Binary file not shown.
23 changes: 23 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bash

set -euo pipefail

# 获取 Git 版本、Commit 哈希及当前 UTC 时间
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "v3.0.0-embedded")
COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "custom")
BUILD_TIME=$(date -u '+%Y-%m-%d_%H:%M:%S')

echo "=========================================="
echo "正在编译 REALITY 单二进制工具..."
echo "版本 (Version): ${VERSION}"
echo "提交 (Commit): ${COMMIT}"
echo "时间 (BuildTime): ${BUILD_TIME}"
echo "=========================================="

go build -ldflags "-s -w \
-X RealityChecker/internal/version.Version=${VERSION} \
-X RealityChecker/internal/version.Commit=${COMMIT} \
-X RealityChecker/internal/version.BuildTime=${BUILD_TIME}" \
-o ../reality-checker .

echo "编译完成!二进制位置: /home/ryu/script/reality/reality-checker"
43 changes: 43 additions & 0 deletions config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# REALITY 目标网站检测与选型系统 - 配置文件

# 日志系统配置
log:
# 日志级别: debug (每请求一个 IP 即输出详细日志), info, warn, error
level: info
file: ""

# REALITY 目标选型过滤策略 (遵从 Xray 官方最佳实践)
reality_filter:
# 1. 强制非 CDN 过滤 (true: 剔除 Cloudflare/Akamai/Fastly 等 CDN 节点,防止 VPS 变成公网免费反代)
require_no_cdn: true

# 2. 握手时间延迟上限 (毫秒): 高于此延迟的节点抛弃 (默认 800ms)
max_handshake_ms: 400

# 3. 热门大站过滤 (true: 依据 data/hot_websites.txt 匹配剔除 Google/Apple 等超级大站)
require_no_hot: true

# 4. 证书剩余有效天数下限: 默认 7 天 (剔除 7 天内到期废弃的死链,避开 30 天造成的 ACME 自动续期误杀)
min_cert_days: 10

# 5. 最低推荐星级门槛: (1~5 星)
min_stars: 3

# 网络检测配置
network:
timeout: 3s
retries: 1
dns_servers:
- "8.8.8.8"
- "1.1.1.1"

# 并发性能配置
concurrency:
max_concurrent: 10
check_timeout: 3s

# 输出与格式
output:
color: true
verbose: false
format: "table"
Loading