← retour aux outils back to tools

# 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