mirror of
				https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
				synced 2025-10-31 16:11:05 +08:00 
			
		
		
		
	feat: 支持 QX tls-pubkey-sha256 tls-alpn tls-no-session-ticket tls-no-session-reuse 字段
This commit is contained in:
		
							parent
							
								
									c8b197c0a1
								
							
						
					
					
						commit
						ea88cc1794
					
				| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "sub-store", | ||||
|   "version": "2.14.85", | ||||
|   "version": "2.14.86", | ||||
|   "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", | ||||
|   "main": "src/main.js", | ||||
|   "scripts": { | ||||
|  | ||||
| @ -43,13 +43,13 @@ start = (trojan/shadowsocks/vmess/http/socks5) { | ||||
| } | ||||
| 
 | ||||
| trojan = "trojan" equals address | ||||
|     (password/over_tls/tls_host/tls_fingerprint/tls_verification/obfs/obfs_host/obfs_uri/tag/udp_relay/udp_over_tcp/fast_open/server_check_url/others)* { | ||||
|     (password/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/obfs/obfs_host/obfs_uri/tag/udp_relay/udp_over_tcp/fast_open/server_check_url/others)* { | ||||
|     proxy.type = "trojan"; | ||||
|     handleObfs(); | ||||
| } | ||||
| 
 | ||||
| shadowsocks = "shadowsocks" equals address | ||||
|     (password/method/obfs_ssr/obfs_ss/obfs_host/obfs_uri/ssr_protocol/ssr_protocol_param/tls_fingerprint/tls_verification/udp_relay/udp_over_tcp/fast_open/tag/server_check_url/others)* { | ||||
|     (password/method/obfs_ssr/obfs_ss/obfs_host/obfs_uri/ssr_protocol/ssr_protocol_param/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/udp_relay/udp_over_tcp/fast_open/tag/server_check_url/others)* { | ||||
|     if (proxy.protocol) { | ||||
|         proxy.type = "ssr"; | ||||
|         // handle ssr obfs
 | ||||
| @ -80,7 +80,7 @@ shadowsocks = "shadowsocks" equals address | ||||
| } | ||||
| 
 | ||||
| vmess = "vmess" equals address | ||||
|     (uuid/method/over_tls/tls_host/tls_fingerprint/tls_verification/tag/obfs/obfs_host/obfs_uri/udp_relay/udp_over_tcp/fast_open/aead/server_check_url/others)* { | ||||
|     (uuid/method/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/tag/obfs/obfs_host/obfs_uri/udp_relay/udp_over_tcp/fast_open/aead/server_check_url/others)* { | ||||
|     proxy.type = "vmess"; | ||||
|     proxy.cipher = proxy.cipher || "none"; | ||||
|     if (proxy.aead) { | ||||
| @ -92,12 +92,12 @@ vmess = "vmess" equals address | ||||
| } | ||||
| 
 | ||||
| http = "http" equals address  | ||||
|     (username/password/over_tls/tls_host/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)*{ | ||||
|     (username/password/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)*{ | ||||
|     proxy.type = "http"; | ||||
| } | ||||
| 
 | ||||
| socks5 = "socks5" equals address | ||||
|     (username/password/password/over_tls/tls_host/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)* { | ||||
|     (username/password/password/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)* { | ||||
|     proxy.type = "socks5"; | ||||
| } | ||||
|      | ||||
| @ -155,6 +155,14 @@ tls_verification = comma "tls-verification" equals flag:bool { | ||||
|     proxy["skip-cert-verify"] = !flag; | ||||
| } | ||||
| tls_fingerprint = comma "tls-cert-sha256" equals tls_fingerprint:$[^,]+ { proxy["tls-fingerprint"] = tls_fingerprint.trim(); } | ||||
| tls_pubkey_sha256 = comma "tls-pubkey-sha256" equals param:$[^=,]+ { proxy["tls-pubkey-sha256"] = param; } | ||||
| tls_alpn = comma "tls-alpn" equals param:$[^=,]+ { proxy["tls-alpn"] = param; } | ||||
| tls_no_session_ticket = comma "tls-no-session-ticket" equals flag:bool {  | ||||
|     proxy["tls-no-session-ticket"] = flag; | ||||
| } | ||||
| tls_no_session_reuse = comma "tls-no-session-reuse" equals flag:bool {  | ||||
|     proxy["tls-no-session-reuse"] = flag; | ||||
| } | ||||
| 
 | ||||
| obfs_ss = comma "obfs" equals type:("http"/"tls"/"wss"/"ws"/"over-tls") { obfs.type = type; return type; } | ||||
| obfs_ssr = comma "obfs" equals type:("plain"/"http_simple"/"http_post"/"random_head"/"tls1.2_ticket_auth"/"tls1.2_ticket_fastauth") { obfs.type = type; return type; } | ||||
|  | ||||
| @ -41,13 +41,13 @@ start = (trojan/shadowsocks/vmess/http/socks5) { | ||||
| } | ||||
| 
 | ||||
| trojan = "trojan" equals address | ||||
|     (password/over_tls/tls_host/tls_fingerprint/tls_verification/obfs/obfs_host/obfs_uri/tag/udp_relay/udp_over_tcp/fast_open/server_check_url/others)* { | ||||
|     (password/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/obfs/obfs_host/obfs_uri/tag/udp_relay/udp_over_tcp/fast_open/server_check_url/others)* { | ||||
|     proxy.type = "trojan"; | ||||
|     handleObfs(); | ||||
| } | ||||
| 
 | ||||
| shadowsocks = "shadowsocks" equals address | ||||
|     (password/method/obfs_ssr/obfs_ss/obfs_host/obfs_uri/ssr_protocol/ssr_protocol_param/tls_fingerprint/tls_verification/udp_relay/udp_over_tcp/fast_open/tag/server_check_url/others)* { | ||||
|     (password/method/obfs_ssr/obfs_ss/obfs_host/obfs_uri/ssr_protocol/ssr_protocol_param/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/udp_relay/udp_over_tcp/fast_open/tag/server_check_url/others)* { | ||||
|     if (proxy.protocol) { | ||||
|         proxy.type = "ssr"; | ||||
|         // handle ssr obfs | ||||
| @ -78,7 +78,7 @@ shadowsocks = "shadowsocks" equals address | ||||
| } | ||||
| 
 | ||||
| vmess = "vmess" equals address | ||||
|     (uuid/method/over_tls/tls_host/tls_fingerprint/tls_verification/tag/obfs/obfs_host/obfs_uri/udp_relay/udp_over_tcp/fast_open/aead/server_check_url/others)* { | ||||
|     (uuid/method/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/tag/obfs/obfs_host/obfs_uri/udp_relay/udp_over_tcp/fast_open/aead/server_check_url/others)* { | ||||
|     proxy.type = "vmess"; | ||||
|     proxy.cipher = proxy.cipher || "none"; | ||||
|     if (proxy.aead) { | ||||
| @ -90,12 +90,12 @@ vmess = "vmess" equals address | ||||
| } | ||||
| 
 | ||||
| http = "http" equals address  | ||||
|     (username/password/over_tls/tls_host/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)*{ | ||||
|     (username/password/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)*{ | ||||
|     proxy.type = "http"; | ||||
| } | ||||
| 
 | ||||
| socks5 = "socks5" equals address | ||||
|     (username/password/password/over_tls/tls_host/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)* { | ||||
|     (username/password/password/over_tls/tls_host/tls_pubkey_sha256/tls_alpn/tls_no_session_ticket/tls_no_session_reuse/tls_fingerprint/tls_verification/tag/fast_open/udp_relay/udp_over_tcp/server_check_url/others)* { | ||||
|     proxy.type = "socks5"; | ||||
| } | ||||
|      | ||||
| @ -153,6 +153,14 @@ tls_verification = comma "tls-verification" equals flag:bool { | ||||
|     proxy["skip-cert-verify"] = !flag; | ||||
| } | ||||
| tls_fingerprint = comma "tls-cert-sha256" equals tls_fingerprint:$[^,]+ { proxy["tls-fingerprint"] = tls_fingerprint.trim(); } | ||||
| tls_pubkey_sha256 = comma "tls-pubkey-sha256" equals param:$[^=,]+ { proxy["tls-pubkey-sha256"] = param; } | ||||
| tls_alpn = comma "tls-alpn" equals param:$[^=,]+ { proxy["tls-alpn"] = param; } | ||||
| tls_no_session_ticket = comma "tls-no-session-ticket" equals flag:bool {  | ||||
|     proxy["tls-no-session-ticket"] = flag; | ||||
| } | ||||
| tls_no_session_reuse = comma "tls-no-session-reuse" equals flag:bool {  | ||||
|     proxy["tls-no-session-reuse"] = flag; | ||||
| } | ||||
| 
 | ||||
| obfs_ss = comma "obfs" equals type:("http"/"tls"/"wss"/"ws"/"over-tls") { obfs.type = type; return type; } | ||||
| obfs_ssr = comma "obfs" equals type:("plain"/"http_simple"/"http_post"/"random_head"/"tls1.2_ticket_auth"/"tls1.2_ticket_fastauth") { obfs.type = type; return type; } | ||||
|  | ||||
| @ -63,6 +63,19 @@ function shadowsocks(proxy) { | ||||
|     } | ||||
| 
 | ||||
|     if (needTls(proxy)) { | ||||
|         appendIfPresent( | ||||
|             `,tls-pubkey-sha256=${proxy['tls-pubkey-sha256']}`, | ||||
|             'tls-pubkey-sha256', | ||||
|         ); | ||||
|         appendIfPresent(`,tls-alpn=${proxy['tls-alpn']}`, 'tls-alpn'); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-ticket=${proxy['tls-no-session-ticket']}`, | ||||
|             'tls-no-session-ticket', | ||||
|         ); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-reuse=${proxy['tls-no-session-reuse']}`, | ||||
|             'tls-no-session-reuse', | ||||
|         ); | ||||
|         // tls fingerprint
 | ||||
|         appendIfPresent( | ||||
|             `,tls-cert-sha256=${proxy['tls-fingerprint']}`, | ||||
| @ -165,6 +178,19 @@ function trojan(proxy) { | ||||
|     } | ||||
| 
 | ||||
|     if (needTls(proxy)) { | ||||
|         appendIfPresent( | ||||
|             `,tls-pubkey-sha256=${proxy['tls-pubkey-sha256']}`, | ||||
|             'tls-pubkey-sha256', | ||||
|         ); | ||||
|         appendIfPresent(`,tls-alpn=${proxy['tls-alpn']}`, 'tls-alpn'); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-ticket=${proxy['tls-no-session-ticket']}`, | ||||
|             'tls-no-session-ticket', | ||||
|         ); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-reuse=${proxy['tls-no-session-reuse']}`, | ||||
|             'tls-no-session-reuse', | ||||
|         ); | ||||
|         // tls fingerprint
 | ||||
|         appendIfPresent( | ||||
|             `,tls-cert-sha256=${proxy['tls-fingerprint']}`, | ||||
| @ -248,6 +274,19 @@ function vmess(proxy) { | ||||
|     } | ||||
| 
 | ||||
|     if (needTls(proxy)) { | ||||
|         appendIfPresent( | ||||
|             `,tls-pubkey-sha256=${proxy['tls-pubkey-sha256']}`, | ||||
|             'tls-pubkey-sha256', | ||||
|         ); | ||||
|         appendIfPresent(`,tls-alpn=${proxy['tls-alpn']}`, 'tls-alpn'); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-ticket=${proxy['tls-no-session-ticket']}`, | ||||
|             'tls-no-session-ticket', | ||||
|         ); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-reuse=${proxy['tls-no-session-reuse']}`, | ||||
|             'tls-no-session-reuse', | ||||
|         ); | ||||
|         // tls fingerprint
 | ||||
|         appendIfPresent( | ||||
|             `,tls-cert-sha256=${proxy['tls-fingerprint']}`, | ||||
| @ -303,6 +342,19 @@ function http(proxy) { | ||||
|     appendIfPresent(`,over-tls=${proxy.tls}`, 'tls'); | ||||
| 
 | ||||
|     if (needTls(proxy)) { | ||||
|         appendIfPresent( | ||||
|             `,tls-pubkey-sha256=${proxy['tls-pubkey-sha256']}`, | ||||
|             'tls-pubkey-sha256', | ||||
|         ); | ||||
|         appendIfPresent(`,tls-alpn=${proxy['tls-alpn']}`, 'tls-alpn'); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-ticket=${proxy['tls-no-session-ticket']}`, | ||||
|             'tls-no-session-ticket', | ||||
|         ); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-reuse=${proxy['tls-no-session-reuse']}`, | ||||
|             'tls-no-session-reuse', | ||||
|         ); | ||||
|         // tls fingerprint
 | ||||
|         appendIfPresent( | ||||
|             `,tls-cert-sha256=${proxy['tls-fingerprint']}`, | ||||
| @ -351,6 +403,19 @@ function socks5(proxy) { | ||||
|     appendIfPresent(`,over-tls=${proxy.tls}`, 'tls'); | ||||
| 
 | ||||
|     if (needTls(proxy)) { | ||||
|         appendIfPresent( | ||||
|             `,tls-pubkey-sha256=${proxy['tls-pubkey-sha256']}`, | ||||
|             'tls-pubkey-sha256', | ||||
|         ); | ||||
|         appendIfPresent(`,tls-alpn=${proxy['tls-alpn']}`, 'tls-alpn'); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-ticket=${proxy['tls-no-session-ticket']}`, | ||||
|             'tls-no-session-ticket', | ||||
|         ); | ||||
|         appendIfPresent( | ||||
|             `,tls-no-session-reuse=${proxy['tls-no-session-reuse']}`, | ||||
|             'tls-no-session-reuse', | ||||
|         ); | ||||
|         // tls fingerprint
 | ||||
|         appendIfPresent( | ||||
|             `,tls-cert-sha256=${proxy['tls-fingerprint']}`, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 xream
						xream