-
Notifications
You must be signed in to change notification settings - Fork 7.1k
[Bug/Feature Request] Expand Fingerprint selection: Allow pinning specific uTLS IDs to bypass SNI+Fingerprint filtering #5406
Description
Description
In the latest v2rayNG beta versions (utilizing updated Xray-core/uTLS), many REALITY connections have started failing in Russia due to advanced DPI (TSPU) signature matching.
Observed behavior:
- SNI + Fingerprint Correlation: The block is often specific to the combination. For example, using a Google domain + the default
chromefingerprint results in an immediate reset, while changing the domain OR switching to a fingerprint likeiosorqqrestores the connection. - Regression in Beta: The default
firefoxfingerprint in the latest beta is now detectable and blocked. Rolling back to an older v2rayNG version fixes the issue because the older core used a different uTLS mapping for the genericfirefoxlabel.
Technical Analysis (Xray-core Reference)
As seen in the Xray-core source code [transport/internet/tls/tls.go (Line 180)](https://github.com/XTLS/Xray-core/blob/cb7bfeb54c79d7e81ee1f9d8c6a7e0a2125ab898/transport/internet/tls/tls.go#L180), the core supports a wide range of specific uTLS IDs categorized into:
PresetFingerprints(Generic labels currently exposed in v2rayNG)ModernFingerprints(Specific versions likehellochrome_120,hellochrome_131,hellofirefox_120)OtherFingerprints(Stable older versions likehellofirefox_105,helloios_13,helloqq_11_1)
The Problem: v2rayNG's UI only allows selecting from a few generic presets. When the core's default firefox or chrome updates to a newer version that is flagged by local DPI, users have no easy way to "pin" a working, older version (like hellofirefox_105) without manual JSON editing, which is often overwritten by the GUI.
Requested Features
1. Full uTLS ID Support in UI
Expand the fingerprint selection to include all strings from ModernFingerprints and OtherFingerprints.
- Suggestion: Add a "Show Advanced Fingerprints" toggle in App Settings to populate the spinner with specific IDs.
2. Global Fingerprint Mapping (Alias)
Add a global configuration form in "Settings" to map generic labels to specific IDs.
- Example: Set a global rule:
firefox->hellofirefox_105. - This allows users to fix all their profiles at once when a specific core update breaks the default fingerprint behavior.
3. Manual String Input
Allow the fingerprint field to accept any string. The app should pass the input directly to Xray-core instead of reverting it to a predefined default.
Why this is necessary
DPI systems are now targeting specific TLS handshake signatures. The generic labels (chrome, firefox) are moving targets. Providing access to the full list of uTLS IDs is the only way for users to maintain a stable, stealthy connection in a rapidly changing censorship environment.