Takes a list of domains and probes for working http and http services.
The project is written in Rust, using asynchronous requests making it light weight and fast.
The latest release binaries can be downloaded from Github https://github.com/oliverdaff/hprobe/releases/latest .
Install latest from GitHub using Cargo.
git checkout https://github.com/oliverdaff/hprobe
cargo test
cargo install --path .Reads a list of domains from stdin.
cat domains.txt
domain1.com
domain2.com
domain3.com
cat domains.tx | hprobe
http://domain1.com
http://domain2.com
http://domain3.com
https://domain1.com
https://domain2.com
https://domain3.comhprobe --help
hprobe 0.1
A fast http probe
USAGE:
hprobe [FLAGS] [OPTIONS]
FLAGS:
-k, --insecure Accept invalid certificates.
-h, --help Prints help information
-s, --suppress-default Do not process the default http and https ports
-V, --version Prints version information
OPTIONS:
-c, --concurrency <CONCURRENCY> The number of concurrent requests [default: 20]
-p, --probe <PROBE>... Protocol port pair <http|https>:<port>
--proxy-all <PROXY_ALL> The url of the proxy to for all requests.
--proxy-http <PROXY_HTTP> The url of the proxy to for http requests.
--proxy-https <PROXY_HTTPS> The url of the proxy to for https requests.
-t, --timeout <TIMEOUT> The timeout for the connect phase (ms) [default: 1000]
-u, --user_agent <user_agent> Set the requests USER-AGENT headerHprobe will look in environment variables to set HTTP or HTTPS proxies.
HTTP_PROXY or http_proxy provide http proxies for http connections while HTTPS_PROXY or https_proxy provide HTTPS proxies for HTTPS connections.
The --proxy-all flag can be used to proxy all requests on the command line.
The --proxy-http flag can be used to proxy all http requests on the command line, but can not be used with --proxy-all.
The --proxy-https flag can be used to proxy all https requests on the command line, but can not be used with --proxy-all.
-k, --insecure using either of these two flags means any certificate for any site will be trusted for use. This includes expired certificates.
-u --user-agent set the user agent for the request.
The DNS resolution uses the system configuration. Compiling with the feature flag --async-dns will enable the
-a, --async-dns flag which will enable asynchronous DNS resolution.
Build the docker container by first using cargo cross to build the static binaries.
cargo install cross
cross build --target x86_64-unknown-linux-musl --releaseThen build the docker container
docker build -t hprobe .
Run the container using:
-iflag to map stdin to into the container.--rmto remove the container on exit2>/dev/nullsterr redirection to hide failed connection detail.
cat domains.txt | docker run -i --rm hprobe <args>
The tests can be invoked with cargo test.
This project was inspired by httprobe written in golang.
MIT © Oliver Daff