Trình quay số thông minh tìm kiếm một chiến lược bỏ chặn DNS và TLS cho một danh sách miền thử nghiệm nhất định. Phương thức này cần một cấu hình mô tả nhiều chiến lược để chọn.
Cấu hình YAML cho Trình quay số thông minh
Cấu hình mà Trình quay số thông minh sử dụng ở định dạng YAML. Dưới đây là ví dụ:
dns:
- system: {}
- https:
name: 8.8.8.8
- https:
name: 9.9.9.9
tls:
- ""
- split:2
- tlsfrag:1
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
Cấu hình DNS
- Trường
dns
chỉ định danh sách trình phân giải DNS cần kiểm thử. - Mỗi trình phân giải DNS có thể là một trong các loại sau:
system
: Sử dụng trình phân giải hệ thống. Chỉ định bằng một đối tượng trống.https
: Sử dụng trình phân giải DNS qua HTTPS (DoH) đã mã hoá.tls
: Sử dụng trình phân giải DNS qua TLS (DoT) được mã hoá.udp
: Sử dụng trình phân giải UDP.tcp
: Sử dụng trình phân giải TCP.
Trình phân giải DNS-over-HTTPS (DoH)
https:
name: dns.google
address: 8.8.8.8
name
: Tên miền của máy chủ DoH.address
: Máy chủ lưu trữ:cổng của máy chủ DoH. Mặc định làname
:443.
Trình phân giải DNS qua TLS (DoT)
tls:
name: dns.google
address: 8.8.8.8
name
: Tên miền của máy chủ DoT.address
: host:port của máy chủ DoT. Mặc định làname
:853.
Trình phân giải UDP
udp:
address: 8.8.8.8
address
: máy chủ:cổng của trình phân giải UDP.
Trình phân giải TCP
tcp:
address: 8.8.8.8
address
: host:port của trình phân giải TCP.
Cấu hình TLS
- Trường
tls
chỉ định danh sách các phương thức truyền tải TLS cần kiểm thử. - Mỗi phương thức truyền TLS là một chuỗi chỉ định phương thức truyền cần sử dụng.
- Ví dụ:
override:host=cloudflare.net|tlsfrag:1
chỉ định một phương thức truyền tải sử dụng tính năng chuyển tiếp miền với Cloudflare và phân mảnh TLS. Hãy xem tài liệu về cấu hình để biết thông tin chi tiết.
Cấu hình dự phòng
Cấu hình dự phòng sẽ được sử dụng nếu không có chiến lược nào không cần proxy có thể kết nối. Ví dụ: nó có thể chỉ định một máy chủ proxy dự phòng để thử kết nối của người dùng. Việc sử dụng phương án dự phòng sẽ chậm hơn khi bắt đầu, vì trước tiên, các chiến lược DNS/TLS khác phải không thành công/hết thời gian chờ.
Chuỗi dự phòng phải là:
- Chuỗi cấu hình
StreamDialer
hợp lệ như được xác định trongconfigurl
. - Một đối tượng cấu hình Psiphon hợp lệ dưới dạng phần tử con của trường
psiphon
.
Ví dụ về máy chủ Shadowsocks
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
Ví dụ về máy chủ SOCKS5
fallback:
- socks5://[USERINFO]@[HOST]:[PORT]
Ví dụ về cấu hình Psiphon
Để sử dụng mạng Psiphon, bạn cần:
- Hãy liên hệ với nhóm Psiphon để lấy cấu hình cấp cho bạn quyền truy cập vào mạng của họ. Bạn có thể cần phải ký hợp đồng.
- Thêm cấu hình Psiphon đã nhận được vào phần
fallback
của cấu hình Trình quay số thông minh. Vì JSON tương thích với YAML, nên bạn có thể sao chép và dán cấu hình Psiphon trực tiếp vào phầnfallback
, như sau:
fallback:
- psiphon: {
"PropagationChannelId": "FFFFFFFFFFFFFFFF",
"SponsorId": "FFFFFFFFFFFFFFFF",
"DisableLocalSocksProxy" : true,
"DisableLocalHTTPProxy" : true,
...
}
Cách sử dụng Trình quay số thông minh
Để sử dụng Trình quay số thông minh, hãy tạo một đối tượng StrategyFinder
và gọi phương thức NewDialer
, truyền vào danh sách các miền kiểm thử và cấu hình YAML.
Phương thức NewDialer
sẽ trả về một transport.StreamDialer
có thể dùng để tạo kết nối bằng chiến lược đã tìm thấy. Ví dụ:
finder := &smart.StrategyFinder{
TestTimeout: 5 * time.Second,
LogWriter: os.Stdout,
StreamDialer: &transport.TCPDialer{},
PacketDialer: &transport.UDPDialer{},
}
configBytes := []byte(`
dns:
- system: {}
- https:
name: 8.8.8.8
- https:
name: 9.9.9.9
tls:
- ""
- split:2
- tlsfrag:1
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
`)
dialer, err := finder.NewDialer(
context.Background(),
[]string{"www.google.com"},
configBytes
)
if err != nil {
// Handle error.
}
// Use dialer to create connections.
Đây là một ví dụ cơ bản và có thể cần được điều chỉnh cho trường hợp sử dụng cụ thể của bạn.