[PR #2989] Use Firefox fingerprint for REALITY compatibility #3045

Open
opened 2026-10-14 21:07:06 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/amnezia-vpn/amnezia-client/pull/2989
Author: @sharkmax888
Created: 8/15/2026
Status: 🔄 Open

Base: dev ← Head: fix/reality-firefox-fallback


📝 Commits (1)

  • fcd3fb5 Use Firefox fingerprint for REALITY compatibility

📊 Changes

6 files changed (+67 additions, -5 deletions)

View changed files

📝 client/core/configurators/xrayConfigurator.cpp (+31 -1)
📝 client/core/controllers/selfhosted/exportController.cpp (+2 -1)
📝 client/core/protocols/xrayProtocol.cpp (+27 -0)
📝 client/core/utils/constants/protocolConstants.h (+5 -1)
📝 client/core/utils/serialization/transfer.h (+1 -1)
📝 client/server_scripts/xray/template.json (+1 -1)

📄 Description

What changed

  • use firefox as the default uTLS fingerprint for VLESS REALITY profiles;
  • normalize REALITY profiles using chrome when native configs are imported or migrated;
  • apply the same compatibility normalization at runtime so existing desktop profiles recover without being recreated;
  • keep generated and exported configurations consistent with the new default.

Why

On AmneziaVPN 5.0.0.5 for Windows, a REALITY connection using the chrome fingerprint can report a successful connection while all payload traffic is blackholed. DNS requests and HTTP traffic time out even though the tunnel interface and TCP connection are present.

Changing only the fingerprint from chrome to firefox makes the same VLESS REALITY configuration and server work. This is consistent with the behavior reported in #2704.

This PR is deliberately presented as a compatibility workaround. It does not claim to fix the underlying issue in amnezia-xray-bindings, Xray core, or uTLS.

User impact

New, imported, and existing VLESS REALITY profiles no longer get stuck in a false "connected" state with no usable traffic when they use the affected Chrome fingerprint.

Validation

  • built the Windows x64 Release client from tag 5.0.0.5;
  • packaged the result successfully with Qt Installer Framework;
  • tested the same REALITY server/configuration on Windows:
    • chrome: connected status, but DNS and payload traffic timed out;
    • firefox: DNS resolution, HTTPS browsing, and public-IP verification worked through the VPS;
  • git diff --check passes.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/amnezia-vpn/amnezia-client/pull/2989 **Author:** [@sharkmax888](https://github.com/sharkmax888) **Created:** 8/15/2026 **Status:** 🔄 Open **Base:** `dev` ← **Head:** `fix/reality-firefox-fallback` --- ### 📝 Commits (1) - [`fcd3fb5`](https://github.com/amnezia-vpn/amnezia-client/commit/fcd3fb56f93ba3af7afa7205708f9a52fc0a74eb) Use Firefox fingerprint for REALITY compatibility ### 📊 Changes **6 files changed** (+67 additions, -5 deletions) <details> <summary>View changed files</summary> 📝 `client/core/configurators/xrayConfigurator.cpp` (+31 -1) 📝 `client/core/controllers/selfhosted/exportController.cpp` (+2 -1) 📝 `client/core/protocols/xrayProtocol.cpp` (+27 -0) 📝 `client/core/utils/constants/protocolConstants.h` (+5 -1) 📝 `client/core/utils/serialization/transfer.h` (+1 -1) 📝 `client/server_scripts/xray/template.json` (+1 -1) </details> ### 📄 Description ## What changed - use `firefox` as the default uTLS fingerprint for VLESS REALITY profiles; - normalize REALITY profiles using `chrome` when native configs are imported or migrated; - apply the same compatibility normalization at runtime so existing desktop profiles recover without being recreated; - keep generated and exported configurations consistent with the new default. ## Why On AmneziaVPN 5.0.0.5 for Windows, a REALITY connection using the `chrome` fingerprint can report a successful connection while all payload traffic is blackholed. DNS requests and HTTP traffic time out even though the tunnel interface and TCP connection are present. Changing only the fingerprint from `chrome` to `firefox` makes the same VLESS REALITY configuration and server work. This is consistent with the behavior reported in #2704. This PR is deliberately presented as a compatibility workaround. It does not claim to fix the underlying issue in amnezia-xray-bindings, Xray core, or uTLS. ## User impact New, imported, and existing VLESS REALITY profiles no longer get stuck in a false "connected" state with no usable traffic when they use the affected Chrome fingerprint. ## Validation - built the Windows x64 Release client from tag `5.0.0.5`; - packaged the result successfully with Qt Installer Framework; - tested the same REALITY server/configuration on Windows: - `chrome`: connected status, but DNS and payload traffic timed out; - `firefox`: DNS resolution, HTTPS browsing, and public-IP verification worked through the VPS; - `git diff --check` passes. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amnezia-client#3045
No description provided.