From 3d3a5041593ff1ddae7b7742c6bd85f62c6ab848 Mon Sep 17 00:00:00 2001 From: Gleb Date: Sun, 8 Nov 2026 10:59:54 +0300 Subject: [PATCH] uTLS: Switch to XTLS/utls fork; Register hellochrome_155, which is also the new default fingerprint (#7135) https://github.com/XTLS/Xray-core/discussions/7333#discussioncomment-19433184 https://github.com/XTLS/Xray-core/issues/7259#issuecomment-6718349626 https://github.com/XTLS/Xray-core/issues/7208#issuecomment-6677620667 https://github.com/XTLS/Xray-core/pull/7187#issuecomment-6314784068 https://github.com/XTLS/Xray-core/discussions/7144#discussioncomment-18912091 https://github.com/XTLS/Xray-core/issues/6299#issuecomment-4658601714 https://github.com/XTLS/Xray-core/pull/6181#issuecomment-4567373533 ... Closes https://github.com/XTLS/Xray-core/issues/7131#issuecomment-6139192035 --- app/dns/nameserver_doh.go | 2 +- app/geodata/download.go | 2 +- go.mod | 6 ++++-- go.sum | 12 ++++++++---- infra/conf/transport_internet.go | 2 +- main/commands/all/tls/ping.go | 2 +- proxy/vless/outbound/outbound.go | 2 +- transport/internet/reality/reality.go | 2 +- transport/internet/tls/ech.go | 2 +- transport/internet/tls/grpc.go | 2 +- transport/internet/tls/tls.go | 3 ++- 11 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/dns/nameserver_doh.go b/app/dns/nameserver_doh.go index ed7f18466..f76162bec 100644 --- a/app/dns/nameserver_doh.go +++ b/app/dns/nameserver_doh.go @@ -10,7 +10,7 @@ import ( "net/url" "time" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common" "github.com/xtls/xray-core/common/crypto" "github.com/xtls/xray-core/common/errors" diff --git a/app/geodata/download.go b/app/geodata/download.go index a7839318c..03dc75eef 100644 --- a/app/geodata/download.go +++ b/app/geodata/download.go @@ -12,7 +12,7 @@ import ( "path/filepath" "time" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common/errors" "github.com/xtls/xray-core/common/net" "github.com/xtls/xray-core/common/platform/filesystem" diff --git a/go.mod b/go.mod index ff93f007a..5aa0798a1 100644 --- a/go.mod +++ b/go.mod @@ -16,11 +16,11 @@ require ( github.com/pelletier/go-toml v1.9.5 github.com/pion/stun/v3 v3.1.7 github.com/pires/go-proxyproto v0.16.0 - github.com/refraction-networking/utls v1.8.3-0.20260301010127-aa6edf4b11af github.com/robfig/cron/v3 v3.0.1 github.com/stretchr/testify v1.12.1 github.com/vishvananda/netlink v1.3.1 github.com/xtls/reality v0.0.0-20261014101318-83f621788ca8 + github.com/xtls/utls v0.0.0-20261106062530-666e20f266ac github.com/yuin/gopher-lua v1.1.2 go4.org/netipx v0.0.0-20231129151722-fdeea329fbba golang.org/x/crypto v0.58.0 @@ -46,13 +46,15 @@ require ( github.com/huin/goupnp v1.2.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/juju/ratelimit v1.0.2 // indirect - github.com/klauspost/compress v1.20.0 // indirect + github.com/klauspost/compress v1.20.1 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect + github.com/molecule-man/go-brrr v1.2.0 // indirect github.com/pion/dtls/v3 v3.1.5 // indirect github.com/pion/logging v0.2.4 // indirect github.com/pion/transport/v4 v4.1.0 // indirect github.com/quic-go/qpack v0.6.0 // indirect + github.com/refraction-networking/utls v1.8.2 // indirect github.com/vishvananda/netns v0.0.5 // indirect github.com/wlynxg/anet v0.0.5 // indirect go.yaml.in/yaml/v3 v3.0.5 // indirect diff --git a/go.sum b/go.sum index 32194546e..336e18dfa 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,8 @@ github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7Bd github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/juju/ratelimit v1.0.2 h1:sRxmtRiajbvrcLQT7S+JbqU0ntsb9W2yhSdNN8tWfaI= github.com/juju/ratelimit v1.0.2/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= -github.com/klauspost/compress v1.20.0 h1:a3C1ke2ohxFymNlb2HWAHjDeKCI90scRskErZkR0ezA= -github.com/klauspost/compress v1.20.0/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= +github.com/klauspost/compress v1.20.1 h1:T7kKElXUMXrUJ2E9QhQhxFtcK5rPyLdsGZvdbLMPdiQ= +github.com/klauspost/compress v1.20.1/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= github.com/klauspost/cpuid/v2 v2.4.2 h1:xRw7IZEsAgVCp6trS/DgWbTAqpixhmywgVgBjYGg1bQ= github.com/klauspost/cpuid/v2 v2.4.2/go.mod h1:19jmZ9mjzoF//ddRSUsv0zfBTJWh3QJh9FNxZTMrGxU= github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= @@ -49,6 +49,8 @@ github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9t github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= github.com/miekg/dns v1.1.73 h1:uhT8nJxmTrPJYClxVxTCX+CVn6qnzSiybRk72Z6DgrE= github.com/miekg/dns v1.1.73/go.mod h1:RW2Obtfd5NZHvOFe3zYG0W8koWOQtAzyHaLo8vASBuQ= +github.com/molecule-man/go-brrr v1.2.0 h1:dOJU45BC3Gc2WXoxAW0rgCAgVuu2gruAOGncfieA0Jw= +github.com/molecule-man/go-brrr v1.2.0/go.mod h1:7ybW6/7gA3oKY45jOfVNjSJDtrr6ea4tzbsTkjmQDC4= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= @@ -67,8 +69,8 @@ github.com/quic-go/go-ossfuzz-seeds v0.1.0 h1:APacT+iIaNF6fd8AGEiN3bT/Jtkd2jz4v4 github.com/quic-go/go-ossfuzz-seeds v0.1.0/go.mod h1:3IOHRbJIc+L6YKMwfDtJAM9Vj9k0YY4muhuyUYk5tbk= github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= -github.com/refraction-networking/utls v1.8.3-0.20260301010127-aa6edf4b11af h1:er2acxbi3N1nvEq6HXHUAR1nTWEJmQfqiGR8EVT9rfs= -github.com/refraction-networking/utls v1.8.3-0.20260301010127-aa6edf4b11af/go.mod h1:jkSOEkLqn+S/jtpEHPOsVv/4V4EVnelwbMQl4vCWXAM= +github.com/refraction-networking/utls v1.8.2 h1:j4Q1gJj0xngdeH+Ox/qND11aEfhpgoEvV+S9iJ2IdQo= +github.com/refraction-networking/utls v1.8.2/go.mod h1:jkSOEkLqn+S/jtpEHPOsVv/4V4EVnelwbMQl4vCWXAM= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.16.0 h1:O9DK+vNMDVGLr2BeZqmpLeMjiMNkuXfcqntWbZV6S5g= @@ -83,6 +85,8 @@ github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/xtls/reality v0.0.0-20261014101318-83f621788ca8 h1:RjLnVvlzK4q6zWaSBPNRGsrgx2fbJDeUWffjw574uzs= github.com/xtls/reality v0.0.0-20261014101318-83f621788ca8/go.mod h1:ptlSkJ8k/7IDauNH0SA96JPOo+nYGLTv2Y3UMpwvAsY= +github.com/xtls/utls v0.0.0-20261106062530-666e20f266ac h1:nRlqo57FDFc2UfII/rARfuqT+pY0V3p3v38+LCtLSbA= +github.com/xtls/utls v0.0.0-20261106062530-666e20f266ac/go.mod h1:fWZDN7axSrekwnSY/FXuRW2OEFR7M5cJaecV9p95vS8= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= diff --git a/infra/conf/transport_internet.go b/infra/conf/transport_internet.go index efee0363a..1f7ae59c1 100644 --- a/infra/conf/transport_internet.go +++ b/infra/conf/transport_internet.go @@ -5,7 +5,7 @@ import ( "slices" "strings" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common/errors" "github.com/xtls/xray-core/common/serial" "github.com/xtls/xray-core/transport/internet" diff --git a/main/commands/all/tls/ping.go b/main/commands/all/tls/ping.go index f64de0e7e..eea63bd3c 100644 --- a/main/commands/all/tls/ping.go +++ b/main/commands/all/tls/ping.go @@ -10,7 +10,7 @@ import ( "strconv" "text/tabwriter" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common/utils" "github.com/xtls/xray-core/main/commands/base" diff --git a/proxy/vless/outbound/outbound.go b/proxy/vless/outbound/outbound.go index 3f6b4b191..3f33dd6f8 100644 --- a/proxy/vless/outbound/outbound.go +++ b/proxy/vless/outbound/outbound.go @@ -9,7 +9,7 @@ import ( "sync" "time" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" proxymanConfig "github.com/xtls/xray-core/app/proxyman" proxyman "github.com/xtls/xray-core/app/proxyman/outbound" "github.com/xtls/xray-core/app/reverse" diff --git a/transport/internet/reality/reality.go b/transport/internet/reality/reality.go index 4431a1764..c4f759a90 100644 --- a/transport/internet/reality/reality.go +++ b/transport/internet/reality/reality.go @@ -24,8 +24,8 @@ import ( "time" "unsafe" - utls "github.com/refraction-networking/utls" "github.com/xtls/reality" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common/crypto" "github.com/xtls/xray-core/common/errors" "github.com/xtls/xray-core/common/net" diff --git a/transport/internet/tls/ech.go b/transport/internet/tls/ech.go index 171b60b01..2bc41a2dc 100644 --- a/transport/internet/tls/ech.go +++ b/transport/internet/tls/ech.go @@ -15,7 +15,7 @@ import ( "sync/atomic" "time" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common/crypto" "github.com/xtls/xray-core/common/session" "golang.org/x/net/http2" diff --git a/transport/internet/tls/grpc.go b/transport/internet/tls/grpc.go index 5a437bfc0..c650a92a9 100644 --- a/transport/internet/tls/grpc.go +++ b/transport/internet/tls/grpc.go @@ -7,7 +7,7 @@ import ( "net/url" "strconv" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "google.golang.org/grpc/credentials" ) diff --git a/transport/internet/tls/tls.go b/transport/internet/tls/tls.go index cd5fe4c23..641b9a29b 100644 --- a/transport/internet/tls/tls.go +++ b/transport/internet/tls/tls.go @@ -9,7 +9,7 @@ import ( "sync/atomic" "time" - utls "github.com/refraction-networking/utls" + utls "github.com/xtls/utls" "github.com/xtls/xray-core/common/buf" "github.com/xtls/xray-core/common/net" "github.com/xtls/xray-core/common/utils" @@ -275,6 +275,7 @@ var ModernFingerprints = map[string]*utls.ClientHelloID{ "hellochrome_120": &utls.HelloChrome_120, "hellochrome_131": &utls.HelloChrome_131, "hellochrome_133": &utls.HelloChrome_133, + "hellochrome_155": &utls.HelloChrome_155, "helloios_13": &utls.HelloIOS_13, "helloios_14": &utls.HelloIOS_14, "helloedge_106": &utls.HelloEdge_106,