Fast proxy scraper and checker written in Rust. Collects HTTP/SOCKS4/SOCKS5 proxies from any source, verifies each one actually works, and exports JSON with res
Fast proxy scraper and checker written in Rust. Collects HTTP/SOCKS4/SOCKS5 proxies from any source, verifies each one actually works, and exports JSON with res
A proxy scraper and checker written in Rust.
It collects HTTP/SOCKS4/SOCKS5 proxies from any number of sources, verifies each one really works, and writes the survivors out with response times, geolocation and network ownership attached.
scheme://user:pass@host:port and CIDR ranges are understood, from URLs or local files.If you want proxies without running anything, monosans/proxy-list is updated regularly using this tool.
Checking opens hundreds of simultaneous connections to untrusted hosts. Your ISP may read that as abusive traffic, and cheap routers can drop connectivity when their NAT table fills. Consider a VPN, and lower max_concurrent_checks if a run destabilizes your network.
Every option is documented inline in config.toml. The binary reads config.toml from the current directory; set PROXY_SCRAPER_CHECKER_CONFIG to point it somewhere else.
Download and run a pre-built binary (easiest)
On Android/Termux, see the dedicated section below instead.
Download the archive for your platform from nightly builds. Look for artifacts starting with proxy-scraper-checker-binary- followed by your platform. If you are not sure which platform you have, check the platform support table.
Extract the archive to a dedicated folder.
Edit config.toml.
Run the executable.
Docker
The Docker image logs to stdout instead of showing the interactive TUI.
Install Docker Compose.
Download the archive from nightly builds. Look for artifacts starting with proxy-scraper-checker-docker- followed by your CPU architecture.
Extract it to a folder and edit config.toml.
Build and run:
# Windows
docker compose build
docker compose up --no-log-prefix --remove-orphans
# Linux/macOS
docker compose build --build-arg UID=$(id -u) --build-arg GID=$(id -g)
docker compose up --no-log-prefix --remove-orphans
Results land in ./out on the host; output.path is ignored in Docker.
Android / Termux
Install with one command:
bash
Build from source
Install the Rust toolchain, see
Clone the repository:
git clone https://github.com/monosans/proxy-scraper-checker.git
cd proxy-scraper-checker
Build a release binary with the TUI enabled:
cargo build --features tui --release --locked
Run with the TUI:
cargo run --features tui --release --locked
The binary lands in target/release/proxy-scraper-checker on Linux/macOS, or target\release\proxy-scraper-checker.exe on Windows.
out/
├── proxies.json working proxies with metadata, compact
├── proxies_pretty.json the same data, indented
└── proxies/
├── all.txt every proxy, with its protocol prefix
├── http.txt one file per enabled protocol, no prefix
├── socks4.txt
└── socks5.txt
A text line is host:port, or username:password@host:port for a proxy that needs credentials, with protocol:// in front of either in all.txt.
{
"protocol": "socks5",
"username": null,
"password": null,
"host": "1.2.3.4",
"port": 1080,
"timeout": 0.42,
"exit_ip": "5.6.7.8",
"asn": {
"autonomous_system_number": 12345,
"autonomous_system_organization": "Example Networks"
},
"geolocation": {
"country": { "iso_code": "US", "names": { "en": "United States" } },
"city": { "names": { "en": "Chicago" } },
"location": {
"latitude": 41.85,
"longitude": -87.65,
"time_zone": "America/Chicago"
}
}
}
timeout is how long the whole request took, in seconds: connection, request and the complete response. That is also what sort_by_speed orders by. exit_ip is the address the target site actually saw, so comparing it with host spots proxies that forward through somewhere else.
exit_ip, asn and geolocation are only filled in when check_url returns the exit IP, so pointing it at an ordinary web page leaves all three null. geolocation mirrors the GeoLite2 City record (abbreviated above); fields the database has no data for are omitted, and names are English only.
Stopping a run early, with ESC or q in the TUI or Ctrl-C anywhere, writes out everything checked so far. If you stop before any proxy has been checked, the previous run's files are left untouched rather than emptied.
| IPcook.com |
Want your name in this section? Support the project and it goes here.
Star the repository so other people can find it. If you are interested in sponsoring, DM me on Telegram.
_This product includes GeoLite2 Data created by MaxMind, available from _
No open issues yet, or sync has not completed.