hakrawler

Crawler web simple et rapide conçu pour une découverte facile et rapide des endpoints et des assets d'une application web. Conçu pour être piloté avec d'autres outils. Simple, fast web crawler designed for easy, quick discovery of endpoints and assets within a web application. Designed to be piped with other tools.

↗ https://github.com/hakluke/hakrawler

Overview

hakrawler is a Go-based web crawler built for fast URL discovery. It reads URLs from stdin, crawls each one, and outputs discovered links. Designed to integrate cleanly in Unix pipelines alongside tools like subfinder, httpx, and gf.

Basic Usage

Crawl a single URL

echo "https://example.com" | hakrawler

Crawl from a file

cat urls.txt | hakrawler

Depth control

echo "https://example.com" | hakrawler -d 3

Include subdomains

echo "https://example.com" | hakrawler -subs

Output only URLs (no other info)

echo "https://example.com" | hakrawler -plain

Discovery Options

Include URLs from wayback machine

echo "https://example.com" | hakrawler -wayback

Parse JS files for more URLs

echo "https://example.com" | hakrawler

Filter by scope (only same domain)

echo "https://example.com" | hakrawler -scope example.com

Set cookies for authenticated crawl

echo "https://example.com" | hakrawler -h "Cookie: session=abc123"

Multiple custom headers

echo "https://example.com" | hakrawler -h "Authorization: Bearer TOKEN" -h "X-Custom: value"

Pipelines

Full subdomain → alive → crawl → parameter discovery pipeline

subfinder -d example.com -silent | \
  httpx -silent | \
  hakrawler | \
  gf xss | \
  dalfox pipe

Find endpoints with parameters

echo "https://example.com" | hakrawler | grep "?"

Extract JavaScript files

echo "https://example.com" | hakrawler | grep "\.js$"

Crawl and check with nuclei

cat hosts.txt | hakrawler | httpx -silent | nuclei -t exposures/

Tips

  • Much lighter than full browser-based crawlers — good for quick discovery
  • Combine with gf (tomnomnom’s grep-based pattern finder) for targeted parameter extraction
  • Use -d 2 or -d 3 for deeper crawls; default depth is 1
  • Authenticated crawling: capture cookies from a logged-in browser session and pass with -h
Help / Man page
hakrawler [flags]

(reads URLs from stdin)

-d INT      Depth to crawl (default: 1)
-subs       Include subdomains in crawl scope
-plain      Output only URLs (no metadata)
-wayback    Include Wayback Machine URLs
-scope STR  Scope string (domain to limit crawl to)
-h STR      Add custom header (repeatable)
-proxy STR  Proxy URL
-t INT      Number of threads (default: 8)
-insecure   Disable TLS verification
-u STR      User agent
-timeout N  Request timeout seconds

Vue d’ensemble

hakrawler est un crawler web écrit en Go, conçu pour une découverte d’URLs rapide. Il lit les URLs depuis stdin, explore chacune d’elles, et affiche les liens découverts. Conçu pour s’intégrer proprement dans des pipelines Unix aux côtés d’outils comme subfinder, httpx et gf.

Utilisation de base

# Explorer une seule URL
echo "https://example.com" | hakrawler

# Explorer depuis un fichier
cat urls.txt | hakrawler

# Contrôle de la profondeur
echo "https://example.com" | hakrawler -d 3

# Inclure les sous-domaines
echo "https://example.com" | hakrawler -subs

# N'afficher que les URLs (aucune autre info)
echo "https://example.com" | hakrawler -plain

Options de découverte

# Inclure les URLs de la wayback machine
echo "https://example.com" | hakrawler -wayback

# Parser les fichiers JS pour davantage d'URLs
echo "https://example.com" | hakrawler

# Filtrer par périmètre (même domaine uniquement)
echo "https://example.com" | hakrawler -scope example.com

# Définir des cookies pour un crawl authentifié
echo "https://example.com" | hakrawler -h "Cookie: session=abc123"

# Plusieurs en-têtes personnalisés
echo "https://example.com" | hakrawler -h "Authorization: Bearer TOKEN" -h "X-Custom: value"

Pipelines

# Pipeline complet sous-domaines → hôtes actifs → crawl → découverte de paramètres
subfinder -d example.com -silent | \
  httpx -silent | \
  hakrawler | \
  gf xss | \
  dalfox pipe

# Trouver des endpoints avec des paramètres
echo "https://example.com" | hakrawler | grep "?"

# Extraire les fichiers JavaScript
echo "https://example.com" | hakrawler | grep "\.js$"

# Explorer et vérifier avec nuclei
cat hosts.txt | hakrawler | httpx -silent | nuclei -t exposures/

Conseils

  • Bien plus léger que les crawlers complets basés sur un navigateur : bon pour une découverte rapide
  • Combiner avec gf (l’outil de recherche par pattern grep de tomnomnom) pour une extraction de paramètres ciblée
  • Utiliser -d 2 ou -d 3 pour des crawls plus profonds ; la profondeur par défaut est 1
  • Crawl authentifié : capturez les cookies depuis une session navigateur connectée et passez-les avec -h
Aide / Page de manuel
hakrawler [flags]

(reads URLs from stdin)

-d INT      Depth to crawl (default: 1)
-subs       Include subdomains in crawl scope
-plain      Output only URLs (no metadata)
-wayback    Include Wayback Machine URLs
-scope STR  Scope string (domain to limit crawl to)
-h STR      Add custom header (repeatable)
-proxy STR  Proxy URL
-t INT      Number of threads (default: 8)
-insecure   Disable TLS verification
-u STR      User agent
-timeout N  Request timeout seconds