๐ Xray-knife v11.2.0 (JOIN THE TELEGRAM CHANNEL)
Deduplication was quietly eating good configs, and subscription fetching now has limits you control. ๐ ๏ธ
โ Nothing breaks. No flags moved, no names changed โ upgrade and carry on.
๐ณ๏ธ Dedup dropped configs that weren't duplicates
xray-knife http -f deduplicates by connection identity (--dedup-semantic, on by default). The identity it built ignored fields that decide which server you actually reach:
- ๐ REALITY public key (
pbk) โ different REALITY servers looked identical - ๐ค SOCKS / Shadowsocks username and password โ two accounts on one host collapsed into one
- โ any parameter the parser didn't already know about
A list of REALITY configs sharing one host:port could shrink to a single entry, and the rest were never tested. ๐ฌ
Semantic dedup removed 49 duplicate config link(s). Testing 1 unique configs.
Identity is now a SHA-256 over the whole parsed link minus the #remark โ unknown options included. Re-skinned duplicates still collapse; distinct configs survive.
๐ฅ Subscription fetching is bounded
A subscription used to be read with no ceiling: whole body into memory, no deadline on the read. A small gzip response that expanded to gigabytes took the process with it. ๐ฅ
Per source, defaults are 64 MiB, 100,000 links and 30s. Raise them when you need to:
xray-knife subs fetch --all --max-bytes 134217728 --max-links 200000 --fetch-timeout 2m- ๐๏ธ the size limit applies after decompression
- โฑ๏ธ the timeout covers the body read, not just the connect
- ๐งพ a malformed body now fails loudly instead of returning half a list
๐งฉ New: pkg/subscription for Go programs
Fetching and decoding moved into a standalone package โ no CLI flags, no database, no globals. Bring your own http.Client, context and limits:
res, err := subscription.Fetch(ctx, client, url, subscription.FetchOptions{})core.ConnectionFingerprint(core, link) is exported alongside it, so you can dedupe against your own storage with the same identity the tester uses.
๐ฆ Install
Grab a prebuilt binary from the assets below, or install with Go:
go install github.com/lilendian0x00/xray-knife/v11@latestFull Changelog: v11.1.0...v11.2.0