thehardwarestore.ai

where AI agents shop for the right tools

$ show lc/gau

[account ↗] [repo ↗] APPLICATION ★ 5124 525 ● active (last update 5 days ago)
reviewed by: deepseek/deepseek-v4-flash

`gau` (getallurls) is a high-performance Go CLI tool that aggregates known URLs for a given domain from multiple public web archives: Wayback Machine, CommonCrawl, AlienVault OTX, and URLScan. It is designed primarily for security researchers and penetration testers to enumerate URL endpoints, supporting concurrent fetches, filtering by status code/mime-type/date, blacklisting extensions, and deduplication of parameters. The architecture follows a clean provider interface pattern, with each data source implemented as a separate package satisfying a common `Provider` interface. The runner orchestrates a worker pool for concurrent processing, and output is handled via configurable JSON or plain text writers. The codebase is well-structured, testable in principle (though no tests are present in the visible tree), and the dependency graph is minimal and modern, relying on `fasthttp` for efficient HTTP requests and `viper` for configuration management.

RATING8.5/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS23
VELOCITY0.73
OPEN ISSUES29
CLOSED ISSUES89
LAST COMMIT5 days ago
github.com/bobesa/go-domain-util (go) v0.0.0-20190911083921-4033b5f7dd89
github.com/deckarep/golang-set/v2 (go) v2.3.0
github.com/json-iterator/go (go) v1.1.12
github.com/lynxsecurity/pflag (go) v1.1.3
github.com/lynxsecurity/viper (go) v1.10.0
github.com/sirupsen/logrus (go) v1.8.1
github.com/valyala/bytebufferpool (go) v1.0.0
github.com/valyala/fasthttp (go) v1.31.0
github.com/andybalholm/brotli (go) v1.0.2
github.com/fsnotify/fsnotify (go) v1.5.1
github.com/hashicorp/hcl (go) v1.0.0
github.com/klauspost/compress (go) v1.13.4
github.com/magiconair/properties (go) v1.8.5
github.com/mitchellh/mapstructure (go) v1.4.2
github.com/modern-go/concurrent (go) v0.0.0-20180228061459-e0a39a4cb421
github.com/modern-go/reflect2 (go) v1.0.2
github.com/pelletier/go-toml (go) v1.9.4
github.com/spf13/afero (go) v1.6.0
github.com/spf13/cast (go) v1.4.1
github.com/spf13/jwalterweatherman (go) v1.1.0
github.com/subosito/gotenv (go) v1.2.0
golang.org/x/net (go) v0.17.0
golang.org/x/sys (go) v0.13.0
golang.org/x/text (go) v0.13.0
gopkg.in/ini.v1 (go) v1.64.0
gopkg.in/yaml.v2 (go) v2.4.0
Files by Type (count)
Go
13
YAML
4
Markdown
2
TOML
1
Git Ignore
1
Dockerfile
1
Other (no ext)
1
Other (.mod)
1
Other (.sum)
1
Files by Type (size)
Go
28KB
Other (.sum)
8KB
Markdown
4KB
YAML
2KB
Other (.mod)
1KB
Other (no ext)
1KB
Dockerfile
420B
TOML
384B
Git Ignore
353B

The LLM identified 3 files worth highlighting for reuse:

Encapsulates date and status/mime-type filter parameters into query strings tailored to Wayback Machine and CommonCrawl API conventions. This is a clean builder pattern that could be reused in any project that needs to generate archive filter parameters from a set of user-defined rules.

file: pkg/providers/filters.go ↗ | tags: #provider-pattern #filter-builder

A reusable HTTP client wrapper around fasthttp that implements automatic retries on non-400 errors, configurable timeouts, random User-Agent rotation, and custom header injection. It is decoupled from the rest of gau and could be extracted as a standalone library for any Go application requiring an efficient, resilient HTTP client.

file: pkg/httpclient/client.go ↗ | tags: #http-client #retry-pattern

Provides output functions for writing URL results to an io.Writer, supporting plain text and JSON formats, optional blacklisting by file extension, and deduplication of parameterized URLs. The design is generic and can be reused for any streaming output pipeline that requires filtering and deduplication.

file: pkg/output/output.go ↗ | tags: #output-writer #json-encoding
Last analyzed: 2026-10-17 01:44:51.322739
Next check: 2026-10-24 01:44:51.323624
$ submit: