File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1217,15 +1217,24 @@ function socks5AddressParser(address) {
12171217
12181218 // 解析服务器地址部分
12191219 const latters = latter . split ( ":" ) ;
1220- // 从末尾提取端口号(因为 IPv6 地址中也包含冒号)
1221- port = Number ( latters . pop ( ) . replace ( / [ ^ \d ] / g, '' ) ) ;
1220+ // 检查是否是IPv6地址带端口格式 [xxx]:port
1221+ if ( latters . length > 2 && latter . includes ( "]:" ) ) {
1222+ // IPv6地址带端口格式:[2001:db8::1]:8080
1223+ port = Number ( latter . split ( "]:" ) [ 1 ] . replace ( / [ ^ \d ] / g, '' ) ) ;
1224+ hostname = latter . split ( "]:" ) [ 0 ] + "]" ; // 正确提取hostname部分
1225+ } else if ( latters . length === 2 ) {
1226+ // IPv4地址带端口或域名带端口
1227+ port = Number ( latters . pop ( ) . replace ( / [ ^ \d ] / g, '' ) ) ;
1228+ hostname = latters . join ( ":" ) ;
1229+ } else {
1230+ port = 80 ;
1231+ hostname = latter ;
1232+ }
1233+
12221234 if ( isNaN ( port ) ) {
12231235 throw new Error ( '无效的 SOCKS 地址格式:端口号必须是数字' ) ;
12241236 }
12251237
1226- // 剩余部分就是主机名(可能是域名、IPv4 或 IPv6 地址)
1227- hostname = latters . join ( ":" ) ;
1228-
12291238 // 处理 IPv6 地址的特殊情况
12301239 // IPv6 地址包含多个冒号,所以必须用方括号括起来,如 [2001:db8::1]
12311240 const regex = / ^ \[ .* \] $ / ;
You can’t perform that action at this time.
0 commit comments