@@ -2,16 +2,20 @@ export function getUserAgentFromHeaders(headers) {
22 const keys = Object . keys ( headers ) ;
33 let UA = '' ;
44 let ua = '' ;
5+ let accept = '' ;
56 for ( let k of keys ) {
6- if ( / U S E R - A G E N T / i. test ( k ) ) {
7+ const lower = k . toLowerCase ( ) ;
8+ if ( lower === 'user-agent' ) {
79 UA = headers [ k ] ;
810 ua = UA . toLowerCase ( ) ;
9- break ;
11+ } else if ( lower === 'accept' ) {
12+ accept = headers [ k ] ;
1013 }
1114 }
12- return { UA , ua } ;
15+ return { UA , ua, accept } ;
1316}
14- export function getPlatformFromUserAgent ( { ua, UA } ) {
17+
18+ export function getPlatformFromUserAgent ( { ua, UA , accept } ) {
1519 if ( UA . indexOf ( 'Quantumult%20X' ) !== - 1 ) {
1620 return 'QX' ;
1721 } else if ( UA . indexOf ( 'Surfboard' ) !== - 1 ) {
@@ -35,15 +39,18 @@ export function getPlatformFromUserAgent({ ua, UA }) {
3539 return 'ClashMeta' ;
3640 } else if ( ua . indexOf ( 'clash' ) !== - 1 ) {
3741 return 'Clash' ;
38- } else if ( ua . indexOf ( 'v2ray' ) !== - 1 ) {
42+ } else if ( ua . indexOf ( 'v2ray' ) !== - 1 || ua . indexOf ( 'egern' ) !== - 1 ) {
3943 return 'V2Ray' ;
4044 } else if ( ua . indexOf ( 'sing-box' ) !== - 1 ) {
4145 return 'sing-box' ;
42- } else {
46+ } else if ( accept . indexOf ( 'application/json' ) === 0 ) {
4347 return 'JSON' ;
48+ } else {
49+ return 'V2Ray' ;
4450 }
4551}
52+
4653export function getPlatformFromHeaders ( headers ) {
47- const { UA , ua } = getUserAgentFromHeaders ( headers ) ;
48- return getPlatformFromUserAgent ( { ua, UA } ) ;
54+ const { UA , ua, accept } = getUserAgentFromHeaders ( headers ) ;
55+ return getPlatformFromUserAgent ( { ua, UA , accept } ) ;
4956}
0 commit comments