Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
trawl — Moteur de scraping auto-hébergé — contourne tout challenge JS et captcha : Cloudflare, Turnstile, reCAPTCHA, hCaptcha, GeeTest. Alternative à FlareSolverr et Byparr, et remplacement direct pour votre stack *arr. | Kitploit
Outils/GitHubGitHub/germondai/trawl
Proxies Web et InterceptionCollecte d'InformationsSécurité WebUtilitaires et FrameworksCrawlerAnti-BotUsurpation d'Empreinte NumériqueContournement de CAPTCHA
GitHubgermondai/trawl

trawl

Moteur de scraping auto-hébergé — contourne tout challenge JS et captcha : Cloudflare, Turnstile, reCAPTCHA, hCaptcha, GeeTest. Alternative à FlareSolverr et Byparr, et remplacement direct pour votre stack *arr.

8644625il y a 3h 28mVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
Site web
Partager



TRAWL

Bienvenue sur TRAWL ! 👋

Scraping web auto-hébergé pour les applications et les agents IA. Récupérez des pages via l'API native, ou connectez un client MCP pour lire du Markdown propre, extraire des données structurées, capturer des captures d'écran et inspecter l'activité du navigateur.

TRAWL commence par une requête HTTP rapide, réutilise les sessions de navigateur résolues, et escalade vers Camoufox et un proxy résidentiel optionnel lorsqu'un site nécessite plus de travail. Il gère les défis JavaScript pris en charge et les CAPTCHAs, et vous offre un tableau de bord local pour voir ce qui a réussi, échoué et pris du temps.

Pour les utilisateurs existants de FlareSolverr, le point de terminaison compatible /v1 fonctionne avec Prowlarr et les autres outils *arr. Le routage adaptatif et la réutilisation de session de TRAWL sont conçus pour des requêtes plus rapides et plus fiables ; certains benchmarks sur une même machine montrent des réponses plus rapides que FlareSolverr et Byparr, les résultats variant selon le site et l'état de la session.

Fonctionnalités

  • Outils MCP pour les agents IA - lisez les pages en Markdown ou en texte, scrapez le HTML, extrayez des enregistrements JSON, capturez des captures d'écran et inspectez les diagnostics du navigateur à partir d'URL publiques connues
  • Exécution à 4 niveaux - requête HTTP simple → session de navigateur en cache → résolution de défi fraîche → proxy résidentiel optionnel
  • Extraction structurée et captures d'écran - sélectionnez des champs dans des éléments répétés, affichez les pages JavaScript et capturez une fenêtre d'affichage, une page complète ou un élément spécifique
  • Proxy HTTP/HTTPS conscient des défis - transfert direct pour le trafic normal, escalade automatique de niveau pour les murs détectés, plus WebSockets, corps binaires et prise en charge de Range/206
  • Tableau de bord de métriques local - historique persistant des requêtes, résultats par niveau, causes d'échec et mises à jour en direct
  • Gestion multi-WAF - détection et flux navigateur dédiés pour Cloudflare, Akamai Bot Manager et Imperva/Incapsula
  • Résolution native des captchas - CF Turnstile/Interstitial, reCAPTCHA v2 (STT gratuit), hCaptcha, GeeTest v4 Slide, ALTCHA et Friendly Captcha v1/v2
  • Camoufox Firefox - empreinte corrigée au niveau C++/Juggler pour réduire les signaux d'automatisation
  • Cache de session - cookies résolus et identité du navigateur stockés dans Redis ; les sessions acceptées peuvent éviter une nouvelle résolution
  • Compatible FlareSolverr - fonctionne avec Prowlarr, Jackett, Sonarr et tout l'écosystème *arr dès la sortie de la boîte
  • Aucune API de solveur payante requise - le reCAPTCHA audio peut utiliser le point de terminaison STT gratuit de Google ou un service Whisper local optionnel

Sponsors

View/Collapse All
Birght Data Bright Data - La plateforme la plus puissante pour Web Unlocker, SERP API et les outils de scraping web.

Pourquoi Bright Data ?
• Web Unlocker - contournez toute protection anti-bot
• SERP API - résultats Google, Bing et plus en temps réel
• Scraping Browser et scrapers dédiés
• Réseau massif de proxys résidentiels
• Conçu pour l'échelle et la fiabilité

Commencez gratuitement avec Bright Data !
NodeMaven NodeMaven - Le fournisseur de proxys le plus efficace pour le scraping web et l'automatisation, avec les IP de la plus haute qualité du marché.

Pourquoi NodeMaven ?
• Ciblage par code postal
• 99,9 % de disponibilité
• Filtrage IP : tous les proxys ont un score de fraude <97 %
• Aucun KYC requis
• Outils gratuits uniques : Proxy Bandwidth Checker, Meta Tag Checker, IP Lookup et autres !

Codes spéciaux pour les utilisateurs de TRAWL :
• - 35 % de réduction sur les proxys mobiles et résidentiels • - 40 % de réduction sur les proxys ISP (statiques)

Tableau de bord local

Tableau de bord des métriques TRAWL affichant des données de requêtes illustratives

La capture d'écran utilise un trafic illustratif. Votre tableau de bord à http://localhost:8191/dashboard affiche uniquement les requêtes traitées par votre instance TRAWL. Consultez le guide des métriques pour la configuration.

Démarrage rapide```bash

Clone and configure

git clone https://github.com/germondai/trawl cd trawl cp .env.example .env

Start scraper + Redis

docker compose up -d

Verify

curl http://localhost:8191/health

root@kitploit:~
Le premier démarrage prend 15 à 30 s pendant que le pool de navigateurs s'initialise. Les démarrages suivants sont rapides.

### Catalogues d'applications NAS

Vous préférez une installation en un clic ? TRAWL est disponible dans les
catalogues d'applications communautaires pour TrueNAS et Unraid :

- [TrueNAS Community Apps](https://apps.truenas.com/catalog/trawl_community/) —
  ouvrez **Apps → Discover Apps** et recherchez **TRAWL**.
- [Unraid Community Apps](https://ca.unraid.net/apps/trawl-1o4q23p06utr4h) —
  ouvrez l'onglet **Apps** et recherchez **Trawl**.

Merci aux contributeurs des communautés TrueNAS et Unraid qui ont empaqueté et
publié ces intégrations.

## API

### Compatible FlareSolverr (`/v1`)```bash
curl -X POST http://localhost:8191/v1 \
  -H 'Content-Type: application/json' \
  -d '{"cmd":"request.get","url":"https://nowsecure.nl","maxTimeout":60000}'

API native (/scrape)

Renvoie des métadonnées plus riches : tier, timings, sessionCached, liste complète des cookies.```bash curl -X POST http://localhost:8191/scrape
-H 'Content-Type: application/json'
-d '{"url":"https://nowsecure.nl","maxTimeout":60000}'

root@kitploit:~
### Outils MCP (`/mcp`)

Définissez `MCP_ENABLED=true` pour exposer les outils Streamable HTTP indépendants du client de TRAWL
pour le contenu lisible, le HTML, l'extraction structurée, les captures d'écran et les diagnostics du navigateur à toute
application ou agent IA compatible MCP. Ils chargent des URL publiques connues ; TRAWL ne
fournit pas de recherche web ni de classement. Consultez le
[guide d'intégration MCP](https://github.com/germondai/trawl/blob/dev/apps/docs/integrations/mcp.md).

### Connecter Prowlarr / Jackett

Définissez l'URL de FlareSolverr sur :```
http://localhost:8191        # running on the same host
http://trawl:8191            # running via Docker Compose on the same network

Proxy HTTP/HTTPS contournant les challenges

Certains sites lient leur validation Cloudflare à l'empreinte complète de connexion du navigateur qui a résolu le challenge. Le flux /v1 ne peut pas aider dans ce cas : Prowlarr ne conserve que le cookie + le user-agent et re-récupère la page avec son propre client HTTP, ce qui déclenche un nouveau challenge Cloudflare — le cookie n'est pas portable. Pour ces indexeurs, activez le proxy de transfert de TRAWL et ajoutez-le à Prowlarr en tant que proxy HTTP :```env MITM_ENABLED=true MITM_PORT=8192 MITM_CA_DIR=/data/proxy-ca # persist the CA (mount a volume) MITM_MAX_TIER=4 # cap escalation (e.g. 3 to stay off residential) MITM_ALWAYS_SCRAPE=false # opt in to bypass the proxy's direct Tier 0 probe

root@kitploit:~
Par défaut, le listener se lie à `0.0.0.0` afin que les clients sur un réseau bridge Docker puissent l'atteindre ; définissez `MITM_HOST=127.0.0.1` pour le restreindre à la loopback sur un hôte bare-metal.

1. Installez le CA du proxy dans le trust store du client afin qu'il accepte les certificats par hôte :
   `curl http://<trawl-host>:8191/proxy-ca.crt` → ajoutez-le au CA store du conteneur Prowlarr
   (par exemple un script linuxserver `/custom-cont-init.d` qui le copie vers
   `/usr/local/share/ca-certificates/` et exécute `update-ca-certificates`).
2. Prowlarr → Settings → Indexer Proxies → **HTTP**, hôte `<trawl-host>`, port `8192`.
   Attribuez-lui un tag si seuls certains indexeurs doivent l'utiliser.

Les requêtes ordinaires empruntent un chemin HTTP/TLS direct. Les petites réponses HTML, JSON et texte sont mises en mémoire tampon pour la détection de challenge ; les challenges détectés escaladent via le même pipeline de niveaux que `POST /scrape`. Les vidéos et les réponses binaires volumineuses sont diffusées directement. Les requêtes Range sont transmises de bout en bout et peuvent escalader lorsque leur réponse est un challenge détecté ; les upgrades WebSocket utilisent un relais direct sans escalade vers le navigateur.

Consultez la [documentation complète du proxy](https://github.com/germondai/trawl/blob/dev/apps/docs/proxy/overview.md) pour les détails de routage, le trafic pris en charge, les limitations, l'installation du CA et des exemples de clients.

> ⚠️ Un proxy MITM peut usurper l'identité de n'importe quel hôte auprès d'un client qui fait confiance à son CA. Ne l'exposez que sur une interface privée (localhost / un réseau Docker privé), jamais publiquement.

### Installation du certificat CA du proxy

Le proxy auto-génère un CA racine au premier lancement. Son certificat et sa clé privée sont persistés sous `MITM_CA_DIR` (par défaut `/data/proxy-ca`). Les certificats par hôte sont générés et mis en cache en mémoire pendant l'exécution de TRAWL ; ils n'ont pas besoin d'être installés séparément car ils sont signés par la racine persistante. Chaque client qui utilise le proxy doit faire confiance à cette racine. Sans cela, HTTPS échoue avec `ERR_CERT_AUTHORITY_INVALID` (navigateurs) ou `PKIX path building failed` (Java).

Téléchargez le CA une fois par client :```bash
curl http://<trawl-host>:8191/proxy-ca.crt -o trawl-ca.crt
# or in a Docker setup where the API isn't reachable from outside:
docker cp trawl:/data/proxy-ca/ca.crt ./trawl-ca.crt

macOS (trousseau du système — affecte la plupart des applications, y compris Safari, curl, wget)```bash

sudo security add-trusted-cert -d -r trustRoot
-k /Library/Keychains/System.keychain ./trawl-ca.crt

Verify

security find-certificate -c "TRAWL MITM Proxy CA"

Remove later

sudo security delete-certificate -c "TRAWL MITM Proxy CA"
/Library/Keychains/System.keychain

root@kitploit:~
#### Linux (Debian/Ubuntu — à l'échelle du système pour curl, wget, apt, etc.)```bash
sudo cp trawl-ca.crt /usr/local/share/ca-certificates/trawl-ca.crt
sudo update-ca-certificates
# Verify
awk '/BEGIN/{c++} c==2' /etc/ssl/certs/ca-certificates.crt | grep -c "TRAWL MITM"

Linux (RHEL/Fedora/Amazon)```bash

sudo cp trawl-ca.crt /etc/pki/ca-trust/source/anchors/trawl-ca.crt sudo update-ca-trust

root@kitploit:~
#### Dépôts de confiance Firefox et NSS

Les installations de Firefox qui n'utilisent pas les racines du système d'exploitation nécessitent un import NSS par profil :```bash
# Firefox 115+ uses a file-backed NSS DB; older versions use the legacy libnssdb format.
# The certutil command is the same either way.
certutil -A -n "TRAWL MITM" -t "CT,C,C" -i trawl-ca.crt \
  -d sql:$HOME/.mozilla/firefox/<profile-dir>
# Or via Firefox UI: Settings → Privacy & Security → Certificates → View Certificates →
# Authorities → Import… → check "Trust this CA to identify websites".
# Profile dir location: about:profiles in Firefox.

Chrome / Chromium (Linux : séparé de la confiance système)

Chrome utilise le magasin de confiance du système sur macOS et Windows, mais possède le sien sur Linux :```bash

Option A: launch Chrome with --user-data-dir + NSS DB update (same as Firefox).

Option B: use Chrome's --ignore-certificate-errors-spki-list= (per-session, less safe).

Option C: add the cert to the system store (above) — Chrome picks it up automatically on

most Linux distros via the nss-tool lookup.

root@kitploit:~
#### Java (y compris JDownloader)```bash
# Find the JRE cacerts file for your client.
#   JDownloader:    <install>/jre/lib/security/cacerts
keytool -importcert -alias trawl -file trawl-ca.crt \
  -keystore "<path-to-cacerts>" -storepass changeit
# If `keytool` reports "Certificate already exists in keystore", use -delete first:
#   keytool -delete -alias trawl -keystore "<path-to-cacerts>" -storepass changeit

Prowlarr, Sonarr et Radarr sont des applications .NET, pas des applications Java. Pour leurs installations basées sur Docker, ajoutez le CA au magasin de confiance du système Linux du conteneur. Un modèle LinuxServer courant est un script /custom-cont-init.d :```yaml

In the client's Compose service:

volumes:

  • ./trawl-ca.crt:/config/trawl-ca.crt:ro
  • ./install-trawl-ca.sh:/custom-cont-init.d/50-install-trawl-ca:ro
root@kitploit:~
| `-s` | `--server` | Adresse du serveur C2 (par défaut : `127.0.0.1`) |
| `-p` | `--port` | Port du serveur C2 (par défaut : `443`) |
| `-t` | `--token` | Jeton d'authentification pour l'agent |
| `-i` | `--interval` | Intervalle de beacon en secondes (par défaut : `5`) |
| `-j` | `--jitter` | Pourcentage de gigue pour l'intervalle de beacon (par défaut : `0`) |
| `-d` | `--debug` | Activer la journalisation de débogage |
| `-h` | `--help` | Afficher le message d'aide |

### Exemples

Démarrer l'agent avec les paramètres par défaut :

```bash
./agent

Démarrer l'agent avec un serveur et un port personnalisés :

root@kitploit:~
./agent -s 192.168.1.100 -p 8443

Démarrer l'agent avec un jeton d'authentification et un intervalle de beacon personnalisé :

root@kitploit:~
./agent -t mytoken -i 10

Démarrer l'agent avec la journalisation de débogage activée :

root@kitploit:~
./agent -d

Serveur

Le serveur est le composant qui gère les agents et fournit une interface pour les contrôler.

Compilation

Pour compiler le serveur, exécutez :

root@kitploit:~
go build -o server ./cmd/server

Exécution

Pour exécuter le serveur, exécutez :

root@kitploit:~
./server

Options de ligne de commande

Option courteOption longueDescription
-l--listenAdresse d'écoute (par défaut : 0.0.0.0)
-p--portPort d'écoute (par défaut : 443)
-c--certChemin vers le fichier de certificat TLS
-k--keyChemin vers le fichier de clé TLS
-d--debugActiver la journalisation de débogage
-h--helpAfficher le message d'aide

Exemples

Démarrer le serveur avec les paramètres par défaut :

root@kitploit:~
./server

Démarrer le serveur avec une adresse et un port d'écoute personnalisés :

root@kitploit:~
./server -l 127.0.0.1 -p 8443

Démarrer le serveur avec des certificats TLS personnalisés :

root@kitploit:~
./server -c /path/to/cert.pem -k /path/to/key.pem

Démarrer le serveur avec la journalisation de débogage activée :

root@kitploit:~
./server -d

Interface Web

Le serveur fournit une interface web pour gérer les agents et exécuter des commandes.

Accès à l'interface web

Pour accéder à l'interface web, ouvrez un navigateur web et accédez à :

root@kitploit:~
https://<server-address>:<server-port>

Par exemple, si le serveur est en écoute sur 127.0.0.1:8443, accédez à :

root@kitploit:~
https://127.0.0.1:8443

Fonctionnalités

L'interface web fournit les fonctionnalités suivantes :

  • Afficher la liste des agents connectés
  • Afficher les détails d'un agent
  • Exécuter des commandes sur un agent
  • Télécharger des fichiers depuis un agent
  • Téléverser des fichiers vers un agent
  • Générer une charge utile pour un nouvel agent

Captures d'écran

Interface web

Charge utile

La charge utile est un binaire qui peut être exécuté sur un système cible pour établir une connexion avec le serveur C2.

Génération d'une charge utile

Pour générer une charge utile, utilisez l'interface web ou exécutez :

root@kitploit:~
go run ./cmd/payload -s <server-address> -p <server-port> -t <token>

Options de ligne de commande

Option courteOption longueDescription
-s--serverAdresse du serveur C2 (par défaut : 127.0.0.1)
-p--portPort du serveur C2 (par défaut : 443)
-t--tokenJeton d'authentification pour la charge utile
-o--outputChemin de sortie pour la charge utile générée (par défaut : payload)
-h--helpAfficher le message d'aide

Exemples

Générer une charge utile avec les paramètres par défaut :

root@kitploit:~
go run ./cmd/payload

Générer une charge utile avec un serveur et un port personnalisés :

root@kitploit:~
go run ./cmd/payload -s 192.168.1.100 -p 8443

Générer une charge utile avec un jeton d'authentification et un chemin de sortie personnalisé :

root@kitploit:~
go run ./cmd/payload -t mytoken -o /path/to/payload

Développement

Prérequis

  • Go 1.16 ou version ultérieure
  • Make (facultatif, pour utiliser le Makefile)

Configuration

  1. Cloner le dépôt :
root@kitploit:~
git clone https://github.com/yourusername/yourproject.git
cd yourproject
  1. Installer les dépendances :
root@kitploit:~
go mod download
  1. Compiler le projet :
root@kitploit:~
make build

Tests

Pour exécuter les tests, exécutez :

root@kitploit:~
make test

Analyse statique

Pour exécuter l'analyse statique, exécutez :

root@kitploit:~
make lint

Contribution

Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md pour plus de détails.

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

Remerciements

  • Go
  • Gorilla WebSocket
  • Cobra
  • Viper```bash #!/usr/bin/with-contenv bash cp /config/trawl-ca.crt /usr/local/share/ca-certificates/trawl-ca.crt update-ca-certificates
root@kitploit:~
LinuxServer exécute des scripts dans `/custom-cont-init.d/` au démarrage du conteneur. Les clients Java tels que
JDownloader nécessitent l'import `keytool` distinct décrit ci-dessus.

#### JDownloader 2 (Windows / macOS / Linux — installation manuelle)

JDownloader embarque son propre JRE ; le CA doit y être importé.

1. Localisez le JRE : `Settings → Advanced → Java Path` (dans JDownloader) ou cherchez dans le répertoire d'installation :
   - Windows : `C:\Program Files\JDownloader 2\jre\lib\security\cacerts`
   - macOS : `/Applications/JDownloader 2.app/Contents/app/jre/lib/security/cacerts`
   - Linux : `<install>/jre/lib/security/cacerts`
2. Exécutez la commande `keytool -importcert` ci-dessus sur ce fichier.
3. Redémarrez JDownloader.

#### Windows (magasin de certificats système)```powershell
# Run PowerShell as Administrator.
Import-Certificate -FilePath .\trawl-ca.crt `
  -CertStoreLocation Cert:\LocalMachine\Root
# Remove later
Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.Subject -like "*TRAWL MITM*" } | Remove-Item

Suppression de l'autorité de certification (nettoyage)

Chaque méthode d'installation dispose d'un chemin de suppression symétrique. Recherchez dans votre magasin de confiance TRAWL MITM Proxy CA (le CN de l'autorité de certification) et supprimez cette entrée. Le certificat et la clé de l'autorité de certification se trouvent également à <MITM_CA_DIR>/ca.crt et ca.key sur l'hôte TRAWL. La suppression de l'un ou l'autre amène TRAWL à générer une nouvelle racine lors de son prochain démarrage, les clients existants doivent donc installer le nouveau certificat.

Niveaux```

Request │ ▼ Tier 1: Plain HTTP fetch ────── success ──→ return (< 100ms) │ blocked ▼ Tier 2: Cached session ─────── success ──→ return (~500ms) │ cache miss / expired ▼ Tier 3: Fresh challenge solve ─ success ──→ cache + return │ IP flagged ▼ Tier 4: Residential proxy ──── success ──→ cache + return (15–45s) │ failed ▼ error

root@kitploit:~
## Fichiers Docker Compose

| Fichier                      | Description                                              |
| ---------------------------- | -------------------------------------------------------- |
| `docker-compose.yml`         | Scraper + Redis (par défaut)                             |
| `docker-compose.minimal.yml` | Scraper uniquement, sans Redis                           |
| `docker-compose.prod.yml`    | Production : `restart: always`, limite mémoire, healthcheck |

## Images Docker (un paquet GHCR, deux variantes de release)

| Tag de l'image                      | Construit depuis               | Runtime                       | Cas d'usage                                                |
| ---------------------------------- | ------------------------------ | ----------------------------- | ---------------------------------------------------------- |
| `ghcr.io/germondai/trawl:latest`   | `apps/api/Dockerfile`          | Bun 1.4.2 (moderne, AVX2)     | Par défaut compact — empreintes Linux                      |
| `ghcr.io/germondai/trawl:baseline` | `apps/api/Dockerfile.baseline` | Bun 1.4.2 baseline (sans AVX2) | CPU plus anciens / noyaux plus anciens (NAS Synology, J4125, ère Atom) |

Tous les tags résident sur le même paquet `ghcr.io/germondai/trawl` — ils partagent le registre mais diffèrent par la source du Dockerfile ou les arguments de build. Choisissez le tag adapté à votre matériel et à votre sortie :```yaml
# Modern hardware (most users)
image: ghcr.io/germondai/trawl:latest

# Older CPUs without AVX2 / Synology / older kernels
image: ghcr.io/germondai/trawl:baseline

Note Synology : de nombreuses unités NAS Synology (DSM 7.x sur J4125 / matériel plus ancien) embarquent un noyau 4.4.x, que le runtime moderne de Bun ne peut pas gérer entièrement. Bun standard nécessite un noyau 5.1+ (5.6+ recommandé) ; la build baseline se dégrade gracieusement jusqu'au noyau 3.10. Le tag :baseline est publié pour ce cas — confirmé fonctionnel sur un Synology DS920+ (Celeron J4125, DSM 7.3.2, noyau 4.4.302) : le conteneur démarre proprement, /health rapporte un état sain, et il résout les challenges Cloudflare en direct via /v1 (voir #1). Publié par des workflows GitHub Actions indépendants : pousser un tag de release tel que v1.7.0 crée :1.7.0, :latest, :1.7.0-baseline et :baseline ; la build nightly quotidienne à 02:00 UTC crée :nightly et :nightly-<dev-sha> à partir du dernier commit dev.

Releases & versioning

TRAWL suit le Semantic Versioning. Pousser un tag git préfixé par v (par ex. v1.0.0) déclenche publish.yml, qui construit et pousse le tag Docker non préfixé correspondant (ghcr.io/germondai/trawl:1.0.0) aux côtés de :latest. Le tag mobile :nightly et les tags immuables :nightly-<shortsha> sont construits à partir de la dernière révision dev vérifiée chaque jour à 02:00 UTC ou sur dispatch manuel ; les pushes de branche ne publient pas d'images. Voir la page Releases pour l'historique complet des versions et CHANGELOG.md pour ce qui a changé dans chacune.

Pour publier un commit passé spécifique qui contenait un correctif majeur sans attendre la prochaine release au sommet de main, taguez ce SHA exact et poussez-le — publish.yml construit à partir de la référence du tag, pas à partir du sommet actuel de main :```bash git tag -a v1.0.1 -m "..." git push origin v1.0.1

root@kitploit:~
## Configuration

TRAWL prend en charge les proxys HTTP, les proxys HTTP authentifiés et les proxys SOCKS5. Les fichiers Compose standard lisent les paramètres de proxy depuis le fichier `.env` local :```ini
# Optional Tier 3 datacenter proxy
PROXY_URL=http://user:[email protected]:8080

# Optional Tier 4 residential proxy
RESIDENTIAL_PROXY_URL=socks5://user:[email protected]:1080

| -s | --server | SERVER | http://localhost:8080 | URL du serveur cible | | -t | --token | TOKEN | - | Jeton d'authentification | | -o | --output | FILE | stdout | Fichier de sortie | | -f | --format | FORMAT | json | Format de sortie (json, yaml, table) | | -v | --verbose | - | false | Activer la sortie détaillée | | -q | --quiet | - | false | Supprimer la sortie non essentielle | | --timeout | - | SECONDS | 30 | Délai d'expiration de la requête | | --retry | - | COUNT | 3 | Nombre de tentatives en cas d'échec | | --insecure | - | - | false | Ignorer la vérification du certificat TLS |

Exemples

root@kitploit:~
# Lister tous les projets
kitploit-cli projects list

# Obtenir les détails d'un projet spécifique
kitploit-cli projects get --id 12345

# Créer un nouveau projet à partir d'un fichier de configuration
kitploit-cli projects create --file project.yaml

# Exporter les résultats au format JSON
kitploit-cli scan run --target example.com --output results.json --format json

# Utiliser un jeton d'authentification personnalisé
kitploit-cli --token "your-api-token" projects list

# Activer la sortie détaillée
kitploit-cli -v scan run --target example.com

Fichier de configuration

L'outil recherche un fichier de configuration aux emplacements suivants :

  1. ./.kitploit.yaml
  2. ~/.config/kitploit/config.yaml
  3. /etc/kitploit/config.yaml

Exemple de fichier de configuration :

root@kitploit:~
server: http://localhost:8080
token: your-api-token
output: json
timeout: 30
retry: 3
insecure: false

Variables d'environnement

Toutes les options de configuration peuvent être remplacées par des variables d'environnement :

VariableDescription
KITPLOIT_SERVERURL du serveur cible
KITPLOIT_TOKENJeton d'authentification
KITPLOIT_OUTPUTFichier de sortie
KITPLOIT_FORMATFormat de sortie
KITPLOIT_TIMEOUTDélai d'expiration de la requête
KITPLOIT_RETRYNombre de tentatives
KITPLOIT_INSECUREIgnorer la vérification du certificat TLS

Dépannage

Problèmes courants

Connexion refusée

Si vous rencontrez une erreur de connexion refusée, vérifiez que le serveur est en cours d'exécution et que l'URL est correcte :

root@kitploit:~
# Vérifier que le serveur est accessible
curl -I http://localhost:8080/health

# Vérifier le port d'écoute
netstat -tlnp | grep 8080

Échec de l'authentification

Assurez-vous que votre jeton est valide et qu'il dispose des autorisations nécessaires :

root@kitploit:~
# Tester le jeton
kitploit-cli auth verify --token "your-api-token"

Délai d'expiration dépassé

Augmentez la valeur du délai d'expiration si les requêtes prennent trop de temps :

root@kitploit:~
kitploit-cli --timeout 60 scan run --target example.com

Journaux

Les journaux sont écrits dans les emplacements suivants :

  • Linux : ~/.local/share/kitploit/logs/
  • macOS : ~/Library/Logs/kitploit/
  • Windows : %APPDATA%\kitploit\logs\

Pour activer la journalisation détaillée :

root@kitploit:~
kitploit-cli -v scan run --target example.com 2>&1 | tee debug.log

Obtenir de l'aide

Si vous rencontrez des problèmes non couverts par cette documentation :

  1. Consultez la FAQ
  2. Recherchez dans les issues existantes
  3. Ouvrez une nouvelle issue avec :
    • Votre système d'exploitation et sa version
    • La version de l'outil (kitploit-cli --version)
    • Les étapes pour reproduire le problème
    • Les journaux ou messages d'erreur pertinents

Contribuer

Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md pour plus de détails.

Signaler des vulnérabilités

Si vous découvrez une faille de sécurité, veuillez la signaler de manière responsable. N'ouvrez PAS d'issue publique. Envoyez plutôt un e-mail à [email protected] avec :

  • Une description de la vulnérabilité
  • Les étapes pour la reproduire
  • Les versions affectées
  • Toute correction ou atténuation suggérée

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

Remerciements

  • Contributors
  • Open Source Community
  • Tous les chercheurs en sécurité qui rendent Internet plus sûr```bash docker compose up -d
root@kitploit:~
Laissez l'une ou l'autre valeur vide pour désactiver ce niveau de proxy. Plusieurs points de terminaison peuvent être séparés par
des virgules ; les pools plus importants peuvent utiliser la variable `*_LIST_FILE` correspondante. Voir
[Configuration → Proxies](https://github.com/germondai/trawl/blob/dev/apps/docs/getting-started/configuration.md#proxies)
pour des exemples de pools et de fichiers montés.

| Variable                         | Défaut                  | Description                                                                         |
| -------------------------------- | ------------------------ | ----------------------------------------------------------------------------------- |
| `BROWSER_POOL_SIZE`              | `1`                      | Instances Camoufox Firefox préchauffées ; augmentez pour les résolutions de navigateur concurrentes |
| `LOG_LEVEL`                      | `info`                   | Journaux opérationnels : `error`, `warn`, `info`, `debug` ou `silent`                     |
| `METRICS_DASHBOARD_ENABLED`      | `false`                  | Active explicitement le tableau de bord local sans jeton ; lie son port à `127.0.0.1` |
| `METRICS_DASHBOARD_TOKEN`        | —                        | Protège le tableau de bord, le point de terminaison JSON et le flux en direct avec un jeton de 32 caractères ou plus |
| `METRICS_DB_PATH`                | `/data/metrics/trawl.sqlite` | Chemin SQLite pour l'historique local des métriques (monter `/data/metrics` de manière persistante) |
| `BROWSER_ACQUIRE_TIMEOUT_MS`     | `15000`                  | Durée pendant laquelle `acquire()` interroge pour un navigateur libre avant qu'un HTTP 429 ne soit renvoyé |
| `BROWSER_RECYCLE_AFTER_CONTEXTS` | `8`                      | Remplacement progressif après ce nombre de contextes Tier 3/4 ; définir `0` pour désactiver |
| `BROWSER_MAX_CONTENT_PROCESSES`  | `2`                      | Limite les processus de contenu Firefox par navigateur (`dom.ipc.processCount`) ; réduit la RAM/CPU |
| `SCRAPE_MIN_TIER`                | `1`                      | Niveau le plus bas autorisé globalement (`1` HTTP, `2` navigateur en cache, `3` frais, `4` résidentiel) |
| `SESSION_CACHE_DRIVER`           | `redis`                  | Backend du cache de session : `redis` ou `memory` mono-processus                           |
| `REDIS_SESSION_TTL_SECONDS`      | `3600`                   | TTL de session Redis ou en mémoire (secondes)                                            |
| `MEMORY_SESSION_CACHE_MAX_ENTRIES` | `1000`                 | Nombre maximal d'entrées limitées par LRU pour le pilote mémoire                                   |
| `REDIS_URL`                      | —                        | Chaîne de connexion Redis ; vide ou non définie désactive le cache Redis                     |
| `REDIS_CONNECT_TIMEOUT_MS`       | `5000`                   | Durée maximale pour chaque tentative de connexion Redis                                      |
| `REDIS_RETRY_DELAY_MS`           | `5000`                   | Délai avant reconnexion après un échec de démarrage ; `0` désactive la nouvelle tentative                 |
| `SCRAPE_PROXY_SELECTION`         | `failover`               | Politique de pool : `failover` persistant, `roundrobin` par requête ou `random`                |
| `PROXY_URL`                      | —                        | Proxy HTTP ou SOCKS5 Tier 3 facultatif, ou pool séparé par des virgules                       |
| `PROXY_LIST_FILE`                | —                        | Fichier contenant une URL de proxy Tier 3 par ligne                                       |
| `RESIDENTIAL_PROXY_URL`          | —                        | Active l'escalade vers le proxy Tier 4                                                     |
| `RESIDENTIAL_PROXY_LIST_FILE`    | —                        | Fichier contenant une URL de proxy Tier 4 par ligne                                       |
| `STT_URL`                        | —                        | Point de terminaison Whisper local pour reCAPTCHA (facultatif)                                     |
| `PORT`                           | `8191`                   | Port d'écoute de l'API                                                                     |
| `MITM_ENABLED`                   | `false`                  | Active le proxy HTTP/HTTPS contournant les challenges                                     |
| `MITM_PORT`                      | `8192`                   | Port d'écoute du proxy de transfert                                                           |
| `MITM_HOST`                      | `0.0.0.0`                | Adresse de liaison ; `127.0.0.1` pour une écoute en boucle locale uniquement                                         |
| `MITM_CA_DIR`                    | `/data/proxy-ca`         | Répertoire persistant du certificat CA racine et de la clé privée                            |
| `MITM_MAX_TIER`                  | `4`                      | Limite l'escalade utilisée par le proxy (par ex. `3` pour rester hors du résidentiel)                 |
| `MITM_ALWAYS_SCRAPE`             | `false`                  | Ignore le Tier 0 du proxy ; désactive le chemin de streaming direct des médias/gros fichiers               |
| `MITM_DEBUG`                     | `false`                  | Journalise une ligne par requête proxifiée (les erreurs sont toujours journalisées)                         |

La mise à niveau depuis une version antérieure nécessite de renommer plusieurs variables d'environnement. Consultez le
[guide de migration de configuration](https://github.com/germondai/trawl/blob/dev/apps/docs/deployment/configuration-migration.md) pour la correspondance complète
ancien-vers-nouveau et le comportement d'activation de Redis.

## Stack

Construit sur une stack moderne et rapide par défaut : Bun + Elysia pour l'API, Redis pour la mise en cache,
Camoufox (Firefox renforcé) pour l'automatisation du navigateur, et Nuxt pour l'interface web — sans le bagage
hérité de Node/Express.

| Couche         | Technologie                         |
| ------------- | ---------------------------------- |
| Runtime       | Bun                                |
| API           | Elysia                             |
| Navigateur       | Camoufox Firefox (via camoufox-js) |
| Cache de session | Redis 8.8                          |
| Page d'accueil  | Nuxt 4                             |
| Documentation | VitePress                          |

## Licence

[AGPL-3.0](https://github.com/germondai/trawl/blob/dev/LICENSE)

---

<p align="center">
    <span>Made with ❤️ by</span>
    <a href="https://github.com/germondai" target="_blank">@germondai</a>
</p>
Télécharger l’outil
TRAWL35

TRAWL40
Thordata Thordata - Proxys résidentiels premium pour la collecte de données.

Thordata aide les développeurs à construire des workflows fiables de scraping, d'automatisation et de données IA avec des IP résidentielles de haute qualité.

🌍 Plus de 100 M d'IP réelles | Plus de 195 pays
🔄 Sessions rotatives et persistantes | Géo-ciblage précis
⚡ Haute concurrence | Connexions stables

Réduisez les blocages et collectez des données à grande échelle en toute confiance.

🎁 Utilisateurs de TRAWL :
• Essai gratuit de 3 jours + 10 % de réduction Code : TRAWL10