ProtoScope is a comprehensive security testing tool for VPN/Proxy protocols. It tests subscription links for connectivity, performance, geo-access, DNS security, and privacy.
π― Powered by Sing-box - Universal support for all modern proxy protocols!
| Protocol | Parse | Test | Status |
|---|---|---|---|
| VMess | β | β | Fully Supported |
| VLESS | β | β | Fully Supported |
| Trojan | β | β | Fully Supported |
| Shadowsocks | β | β | Fully Supported |
| Hysteria2 | β | β | Fully Supported |
| TUIC | β | β | Fully Supported |
π― Powered by Sing-box: ProtoScope uses Sing-box as the universal backend for all protocols. Sing-box is a modern, feature-rich proxy platform that supports:
- β Traditional protocols (VMess, VLESS, Trojan, Shadowsocks)
- β Modern QUIC-based protocols (Hysteria2, TUIC)
- β Active development and excellent performance
This unified approach provides:
- π One backend for all - no switching between tools
- π¦ Modern architecture - supports latest protocols
- π Maximum compatibility - all protocols in one tool
- Basic connection testing
- Latency measurement (ping)
- Download/Upload speed tests
- Connection jitter analysis
- RU Domains: vk.com, yandex.ru, mail.ru, rt.com
- CN Domains: baidu.com, qq.com, weibo.com, taobao.com
- IR Domains: isna.ir, farsnews.ir, tasnimnews.com
- US Domains: google.com, youtube.com, facebook.com, twitter.com
- Tests which geographic restrictions are bypassed
- DNS Leak Detection: Checks if DNS queries leak to ISP
- DNS Blocking: Tests if ads/tracking domains are blocked
- Google Ads (googleadservices.com, doubleclick.net)
- Tracking domains (google-analytics.com, facebook.com/tr)
- Analytics services
- DNS leak detection
- WebRTC leak detection
- IPv6 leak detection
- Real IP exposure check
- Security score (0-100)
- Go 1.20 or higher (for building from source)
- Sing-box (required)
Linux:
bash <(curl -fsSL https://sing-box.app/deb-install.sh)macOS:
brew install sing-boxWindows: Download from Sing-box Releases
Verify:
sing-box versionWhy Sing-box? ProtoScope uses Sing-box as the universal backend because it supports all protocols natively:
- β Traditional protocols (VMess, VLESS, Trojan, Shadowsocks)
- β Modern QUIC-based protocols (Hysteria2, TUIC)
- β Active development and excellent performance
git clone https://github.com/VenoMexx/ProtoScope.git
cd ProtoScope
go build -o protoscope ./cmd/protoscopego install github.com/VenoMexx/ProtoScope/cmd/protoscope@latest# Test a subscription URL (all protocols)
protoscope -url "https://example.com/subscription"
# Test only specific protocols
protoscope -url "https://example.com/subscription" -protocols vless,vmess
protoscope -url "https://example.com/subscription" -protocols tuic
protoscope -url "https://example.com/subscription" -protocols hysteria2,tuic
# Quick mode (connectivity only)
protoscope -url "https://example.com/subscription" -quick
# JSON output
protoscope -url "https://example.com/subscription" -format json
# Markdown report
protoscope -url "https://example.com/subscription" -format markdown > report.md
# Custom timeout and concurrency
protoscope -url "https://example.com/subscription" -timeout 60s -concurrent 10
# Verbose output
protoscope -url "https://example.com/subscription" -verbose-url string
Subscription URL to test (required)
-format string
Output format: console, json, markdown (default: console)
-timeout duration
Timeout for each test (default: 30s)
-concurrent int
Number of concurrent tests (default: 3)
-quick
Quick mode - only connectivity tests
-verbose
Enable verbose output with detailed results
-protocols string
Filter protocols (comma-separated: vmess,vless,trojan,shadowsocks,hysteria2,tuic)
Examples: "vless", "vmess,vless", "tuic,hysteria2"
Default: test all protocols
-no-speed
Disable speed tests (useful for faster testing)
-no-geo
Disable geo-access tests
-no-dns
Disable DNS leak and blocking tests
-no-privacy
Disable privacy and security tests
# Test only connectivity (fastest)
protoscope -url <url> -quick
# Skip speed tests for faster results
protoscope -url <url> -no-speed
# Full test with verbose output
protoscope -url <url> -verbose
# Test with custom concurrency
protoscope -url <url> -concurrent 10
# Export results to JSON
protoscope -url <url> -format json > results.json
# Generate markdown report
protoscope -url <url> -format markdown > report.md
# Test only modern QUIC protocols
protoscope -url <url> -protocols hysteria2,tuic
# Test only traditional protocols
protoscope -url <url> -protocols vmess,vless,trojan,shadowsocks
# Quick test only VLESS protocols
protoscope -url <url> -protocols vless -quick
# Combine filters: test only Hysteria2 with full tests
protoscope -url <url> -protocols hysteria2 -verboseProtoScope v0.1.0 - Protocol Security Tester
===========================================
Testing 15 protocols from subscription...
Protocol 1/15: HK-01 [vmess] β
ββ Connectivity: Connected (245ms)
ββ Speed: β 45.2 Mbps / β 12.3 Mbps
ββ Geo Access:
β ββ RU: β Accessible (4/4 domains)
β ββ CN: β Blocked (0/4 domains)
β ββ IR: β Accessible (3/3 domains)
ββ DNS:
β ββ Leak: β No leak detected
β ββ Ad Blocking: β 0/10 ads blocked
ββ Privacy:
ββ DNS Leak: β Safe
ββ IPv6 Leak: β Safe
ββ Security Score: 90/100
Protocol 2/15: US-02 [hysteria2] β
ββ Connection failed: timeout
===========================================
Summary
===========================================
Total Protocols: 15
Working: 12 (80%)
Failed: 3 (20%)
Best Latency: HK-03 (89ms)
Best Speed: US-01 (78.5 Mbps)
Most Secure: HK-01, SG-02, JP-01 (Score: 90+)
[
{
"protocol": {
"type": "vmess",
"name": "HK-01",
"server": "hk.example.com",
"port": 443,
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"timestamp": "2025-11-11T20:00:00Z",
"success": true,
"connectivity": {
"connected": true,
"response_time": 245000000
},
"performance": {
"latency": 245000000,
"download_speed_mbps": 45.2,
"upload_speed_mbps": 12.3
},
"geo_access": {
"summary": {
"total_tested": 15,
"total_accessible": 12,
"access_percentage": 80.0
}
},
"dns": {
"leak_detection": {
"is_leaking": false
},
"blocking": {
"summary": {
"total_tested": 10,
"total_blocked": 0
}
}
},
"privacy": {
"dns_leak": false,
"webrtc_leak": false,
"ipv6_leak": false,
"security_score": 90
}
}
]ProtoScope/
βββ cmd/
β βββ protoscope/ # CLI application
βββ internal/
β βββ parser/ # Subscription parsers
β βββ tester/ # Protocol testers
β βββ checks/ # Test modules
β β βββ connectivity.go # Connection tests
β β βββ performance.go # Speed & latency
β β βββ geo.go # Geo-access tests
β β βββ dns.go # DNS leak & blocking
β β βββ privacy.go # Privacy tests
β βββ metrics/ # Performance metrics
β βββ reporter/ # Report generation
βββ pkg/
β βββ models/ # Data models
β βββ domains/ # Test domain lists
βββ configs/ # Configuration files
- Establish connection through proxy
- Make HTTP request to test endpoint
- Measure connection time
- Verify data transmission
- Attempt to connect to geo-specific domains
- Test both HTTP and HTTPS
- Record accessibility and response times
- Categorize by region
- Query external DNS leak detection APIs
- Compare detected DNS servers with proxy location
- Check for ISP DNS exposure
- Verify DNS routing through proxy
- Attempt to resolve ad/tracking domains
- Try HTTP/HTTPS connections
- Categorize block type (DNS/HTTP/None)
- Calculate blocking percentage
- Get public IP through proxy
- Check for WebRTC leaks
- Test IPv6 connectivity
- Calculate security score
ProtoScope is designed for authorized testing only:
- β Test your own VPN/proxy subscriptions
- β Evaluate service quality and security
- β Check for DNS/IP leaks
- β Do not test unauthorized services
- β Do not use for malicious purposes
- Go 1.20 or higher
- Internet connection for testing
go build -o protoscope ./cmd/protoscopego test ./...Edit configs/domains.yaml to add custom test domains:
geo_domains:
custom:
- example.com
- custom-site.net
dns_blocking:
custom_ads:
- custom-ad-domain.com- Basic subscription parsing
- Protocol models (VMess, VLESS, Trojan, Hysteria2)
- Connectivity testing
- Performance testing
- Geo-access testing
- DNS leak detection
- DNS blocking tests
- Privacy tests
- Sing-box integration for all protocols
- Full test runner implementation
- Multiple output formats (console, JSON, markdown)
- Universal Sing-box backend
- All protocols support (VMess, VLESS, Trojan, Shadowsocks, Hysteria2, TUIC)
- Comprehensive error diagnostics and troubleshooting
- WebRTC leak testing (browser automation required)
- HTML report generation
- Configuration file support (YAML)
- CI/CD integration
- Docker support
- Batch testing from file
- Streaming service tests (Netflix, YouTube)
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
This tool is for educational and authorized testing purposes only. Users are responsible for ensuring they have permission to test any proxy/VPN services. The authors are not responsible for misuse of this tool.
- Inspired by various VPN testing tools
- Built with Go and modern security practices
- Community feedback and contributions
Made with β€οΈ for the privacy community