| Crates.io | herscat |
| lib.rs | herscat |
| version | 0.2.0-pre |
| created_at | 2025-08-15 10:21:40.120299+00 |
| updated_at | 2025-11-16 06:05:12.003371+00 |
| description | High-intensity xray proxy stress tester in Rust |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1796539 |
| size | 171,741 |
High-intensity xray proxy stress tester in Rust.
⚠️ For controlled load testing of proxy deployments you own or have explicit permission to test.
--url) or a list file (--list)HersCat orchestrates multiple xray-core instances and distributes HTTP download, TCP flood, and UDP flood traffic across them using SOCKS5 to help you evaluate performance stability, concurrency limits, and resilience of your proxy setup.
xray-core available in PATHwget https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip
unzip Xray-linux-64.zip
sudo mv xray /usr/local/bin/
sudo chmod +x /usr/local/bin/xray
You can use any of the following:
cargo install herscat
git clone https://github.com/vffuunnyy/herscat.git
cd herscat
cargo build --release
# or install into ~/.cargo/bin
cargo install --path .
pacman -S herscat-bin
yay -S herscat-bin
paru -S herscat-bin
# etc.
Prebuilt images are published to GitHub Container Registry via GoReleaser.
# Pull the latest image
docker pull ghcr.io/vffuunnyy/herscat:latest
# Run with a single proxy URL
docker run --rm -it \
--network host \
ghcr.io/vffuunnyy/herscat:latest \
--url "vless://uuid@server.com:443?type=tcp&security=tls&sni=server.com"
# Run with a list file mounted into the container
docker run --rm -it \
--network host \
-v $(pwd)/proxies.txt:/data/proxies.txt:ro \
ghcr.io/vffuunnyy/herscat:latest \
--list /data/proxies.txt --concurrency 2000 --instances 10 --duration 300
Notes:
xray-core; no extra mount is required.--network host is recommended so the containerized tool can open SOCKS5 ports and generate load using host networking.# Single proxy URL (supports vless/trojan/ss)
herscat --url "vless://uuid@server.com:443?type=tcp&security=tls&sni=server.com"
# Multiple proxy URLs from a file (one per line)
herscat --list proxies.txt --mode download --targets "http://example.com/1gb.zip"
# TCP flood against host:port targets via proxies
herscat \
--mode tcp-flood \
--list proxies.txt \
--targets "203.0.113.10:443,example.org:80" \
--packet-size 512 \
--packet-rate 200 \
--packets-per-conn 1
# UDP flood (same targets syntax as TCP)
herscat \
--mode udp-flood \
--list proxies.txt \
--targets "198.51.100.5:53" \
--packet-size 128 \
--packets-per-conn 5
Usage: herscat [OPTIONS] [COMMAND]
Options:
-u, --url <PROXY_URL> Proxy URL (vless/trojan/ss)
-l, --list <FILE> File with proxy URLs, one per line
-d, --duration <SECONDS> Test duration in seconds (0 = infinite) [default: 0]
-x, --instances <N> Number of xray-core instances [default: 5]
-p, --base-port <PORT> Base SOCKS5 port [default: 10808]
-c, --concurrency <N> Total concurrency per mode across all instances [default: 200]
-t, --targets <ITEMS> Mode-dependent targets (HTTP URLs or host:port entries)
-m, --mode <MODE> Stress mode: download|tcp-flood|udp-flood [default: download]
-s, --packet-size <BYTES> Packet size for tcp/udp flood payloads [default: 1024]
-r, --packet-rate <PPS> Optional per-task packets-per-second cap for tcp/udp flood
-P, --packets-per-conn <COUNT> Packets per TCP/UDP connection before reconnect (0 = keep open)
-v, --verbose Info logging
--debug Debug logging
-i, --stats-interval <SECONDS> Statistics reporting interval [default: 5]
-h, --help Print help
-V, --version Print version
Commands:
completions <shell> Generate shell completions (bash|zsh|fish)
--targets is shared across modes: supply HTTP/HTTPS URLs for download, and host:port pairs
for tcp-flood or udp-flood. Flood modes require explicit targets, while the download mode falls
back to the built-in list if none is provided.
herscat \
--list servers.txt \
--concurrency 10000 \
--instances 20 \
--duration 600 \
--verbose
# Download mode with custom URLs
herscat \
--mode download \
--url "vless://uuid@server.com:443?type=tcp&security=tls" \
--targets "http://example.com/1gb.zip,http://example.net/5gb.zip" \
--concurrency 200
# TCP/UDP flood modes
herscat \
--mode tcp-flood \
--list proxies.txt \
--targets "target1:443,target2:80" \
--packet-size 256 --packets-per-conn 2
herscat \
--mode udp-flood \
--list proxies.txt \
--targets "target3:53" \
--packet-size 128 --packet-rate 500
# bash
herscat completions bash > ~/.local/share/bash-completion/completions/herscat
# zsh
herscat completions zsh > ~/.local/share/zsh/site-functions/_herscat
# fish
herscat completions fish > ~/.config/fish/completions/herscat.fish
⚠️ IMPORTANT DISCLAIMER
This tool is built for legitimate penetration testing, benchmarking, and research. You must:
The authors and contributors are not responsible for misuse.
cargo fmt
cargo clippy
cargo test
Licensed under either of:
LICENSE-APACHELICENSE-MITYou may choose either license.