Skip to content

Commit 97a428c

Browse files
committed
feat: add support edge fingerprint
1 parent a8c00dc commit 97a428c

5 files changed

Lines changed: 9 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Standalone C CLI client for:
77
- `VLESS + TLS + XHTTP (mode=packet-up)`
88
- `VLESS + Reality + XHTTP (mode=stream-one)`
99

10-
`fp=chrome/firefox/random/randomized/qq`
10+
`fp=chrome/firefox/edge/random/randomized/qq`
1111

1212
Protocol semantics are aligned with `xray-core` for the supported transports and URI parameters.
1313

include/types.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ typedef enum {
99
FP_RANDOM = 1,
1010
FP_QQ = 2,
1111
FP_RANDOMIZED = 3,
12-
FP_FIREFOX = 4
12+
FP_FIREFOX = 4,
13+
FP_EDGE = 5
1314
} fingerprint_mode_t;
1415

1516
typedef enum {

src/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,8 @@ int main(int argc, char **argv) {
517517
fp_label = "qq";
518518
} else if (cfg.fp_mode == FP_FIREFOX) {
519519
fp_label = "firefox";
520+
} else if (cfg.fp_mode == FP_EDGE) {
521+
fp_label = "edge";
520522
}
521523
fprintf(stderr, "%s listening on 127.0.0.1:%d (server=%s:%u, sni=%s, security=%s, transport=%s, fp=%s)\n", prog, listen_port,
522524
cfg.server_host, (unsigned)cfg.server_port, cfg.sni, cfg.security,

src/tls13_reality.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2419,7 +2419,7 @@ static int build_client_hello(const vless_config_t *cfg, int use_reality, uint8_
24192419
}
24202420
uint8_t suites[64];
24212421
size_t soff = 0;
2422-
if (cfg->fp_mode == FP_QQ || cfg->fp_mode == FP_CHROME) {
2422+
if (cfg->fp_mode == FP_QQ || cfg->fp_mode == FP_CHROME || cfg->fp_mode == FP_EDGE) {
24232423
uint16_t chrome_like_suites[] = {boring_grease_cipher, 0x1301, 0x1302, 0x1303, 0xc02b, 0xc02f, 0xc02c, 0xc030,
24242424
0xcca9, 0xcca8, 0xc013, 0xc014, 0x009c, 0x009d, 0x002f, 0x0035};
24252425
for (size_t i = 0; i < sizeof(chrome_like_suites) / sizeof(chrome_like_suites[0]); i++) {
@@ -2473,7 +2473,7 @@ static int build_client_hello(const vless_config_t *cfg, int use_reality, uint8_
24732473
db_free(&hs);
24742474
return -1;
24752475
}
2476-
} else if (cfg->fp_mode == FP_CHROME) {
2476+
} else if (cfg->fp_mode == FP_CHROME || cfg->fp_mode == FP_EDGE) {
24772477
size_t header_len = hs.len - 4;
24782478
if (ext_grease(&exts, boring_grease_ext1) != 0 || ext_server_name(&exts, cfg->sni) != 0 ||
24792479
ext_extended_master_secret(&exts) != 0 || ext_renegotiation_info(&exts) != 0 ||

src/uri.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ static void parse_query(vless_config_t *cfg, char *query) {
104104
cfg->fp_mode = FP_QQ;
105105
} else if (strcmp(decoded, "firefox") == 0) {
106106
cfg->fp_mode = FP_FIREFOX;
107+
} else if (strcmp(decoded, "edge") == 0) {
108+
cfg->fp_mode = FP_EDGE;
107109
} else {
108110
cfg->fp_mode = FP_CHROME;
109111
}

0 commit comments

Comments
 (0)