Initial commit.

This commit is contained in:
Eduard Tolosa 2020-10-03 16:12:39 -05:00
commit e1ecd57557
7 changed files with 2197 additions and 0 deletions

39
README.md Normal file
View file

@ -0,0 +1,39 @@
# FHC
FHC stands for Fast HTTP Checker, it's written in Rust. Works on Linux, Windows, macOS, Android, Aarch64, ARM and possibly in your oven.
# Goal
Offer the community an efficient HTTP checker tool.
# Methodology
FHC try to resolve https first, if this fails then fallback to http, in that way you don't miss any active HTTP host.
# Performance & speed
FHC is **very** resource friendly, you can use up to 1000 threads in an single core machine and this will work without any problem, the bottleneck for this tool is your network speed. By default, FHC is able to perform HTTP check for ~76 hosts per second in good network conditions (tested in an Google Cloud machine). Depending on how much host have only http (not https) and/or are alive the number of host resolved in average can be higher as the tool doesn't have to perform an double check. In our demo we used an real-world scenario performing resolution for all the `facebook.com` subdomains.
## Demo
[![asciicast](https://asciinema.org/a/363351.svg)](https://asciinema.org/a/363351)
# Installation
## Using precompiled binaries.
Download the asset from the [releases page](https://github.com/Edu4rdSHL/fhc/releases/latest) according to your platform.
## Using the source code.
1. You need to have the lastest stable [Rust](https://www.rust-lang.org/) version insalled in your system.
2. Clone the repo or download the source code, then run `cargo build --release`.
3. Execute the tool from `./target/release/fhc` or add it to your system PATH to use from anywhere.
Optionally you can just use `cargo install fhc`
# Usage
* Show all HTTP urls depite their response codes:
```
cat hosts.txt | fhc
```
* If you want to see only the HTTP host with 200-299 codes:
```
cat hosts.txt | fhc -2
```
You can tune the `--timeout`, `-t/--threads`, `-u/--user-agent` and other options according to your needs. See `fhc --help`