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
ladder — Alternative auto-hébergée à 12ft.io. et 1ft.io. Proxy pour supprimer les en-têtes CORS et modifier le HTML. | Kitploit
Outils/GitHubGitHub/everywall/ladder
Proxies Web et InterceptionSécurité WebSécurité des APIAnti-Bot
GitHubeverywall/ladder

ladder

Alternative auto-hébergée à 12ft.io. et 1ft.io. Proxy pour supprimer les en-têtes CORS et modifier le HTML.

Voir le dépôt
8.8k51123il y a 1 moisVé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 →
Partager
<p align="center">
    <img src="https://raw.githubusercontent.com/everywall/ladder/HEAD/assets/pigeon.svg" width="100px">
</p>

<h1 align="center">Ladder</h1>
<div><img alt="License" src="https://img.shields.io/github/license/everywall/ladder"> <img alt="go.mod Go version " src="https://img.shields.io/github/go-mod/go-version/everywall/ladder"> <img alt="GitHub tag (with filter)" src="https://img.shields.io/github/v/tag/everywall/ladder"> <img alt="GitHub (Pre-)Release Date" src="https://img.shields.io/github/release-date-pre/everywall/ladder"> <img alt="GitHub Downloads all releases" src="https://img.shields.io/github/downloads/everywall/ladder/total"> <img alt="GitHub Build Status (with event)" src="https://img.shields.io/github/actions/workflow/status/everywall/ladder/release-binaries.yaml"></div>


*Ladder est un proxy web HTTP.* 

[简体中文](https://github.com/everywall/ladder/blob/main/README.zh-CN.md)

Ladder est un outil pour développeurs permettant de tester et d'analyser les implémentations de paywall et le comportement de distribution de contenu sur les sites web modernes.

Il permet aux développeurs, chercheurs et éditeurs de simuler différents environnements clients (tels que les navigateurs et les robots d'exploration) et d'observer comment le contenu est servi dans des conditions variées. Il est donc utile pour déboguer les configurations de paywall, vérifier les contrôles d'accès, les en-têtes HTTP et garantir un comportement cohérent entre différents agents utilisateur.

Ladder est destiné uniquement à des fins légitimes de test, de recherche et d'assurance qualité. Il ne doit être utilisé qu'en conformité avec les lois applicables et les conditions d'utilisation du site web cible.

![screenshot](https://assets.kitploit.com/production/public/readmes/43336/3002b002c6fb6a92722c4bfc86471341080d8f30a0842c4688474dfcc78ef4e7.png)

### Comment ça fonctionne

```mermaid
sequenceDiagram
    client->>+ladder: GET
    ladder-->>ladder: apply RequestModifications
    ladder->>+website: GET
    website->>-ladder: 200 OK
    ladder-->>ladder: apply ResultModifications
    ladder->>-client: 200 OK
```

### Fonctionnalités
- [x] Supprimer/modifier les en-têtes CORS des réponses, ressources et images ...
- [x] Supprimer/modifier d'autres en-têtes (par ex. Content-Security-Policy)
- [x] Supprimer/injecter du code personnalisé (HTML, CSS, JavaScript) dans la page
- [x] Appliquer un ensemble de règles/code basé sur le domaine pour modifier la réponse / l'URL demandée
- [x] Garder le site navigable
- [x] API
- [x] Récupérer le HTML brut
- [x] User-Agent personnalisé
- [x] IP X-Forwarded-For personnalisée
- [x] [Conteneur Docker](https://github.com/everywall/ladder/pkgs/container/ladder) (amd64, arm64)
- [x] Binaire Linux
- [x] Binaire Mac OS
- [x] Binaire Windows (non testé)
- [x] Authentification de base
- [x] Journaux d'accès
- [x] Peut casser le suivi, les publicités et autres contenus tiers
- [x] Limiter le proxy à une liste de domaines
- [x] Exposer le ruleset à d'autres instances de Ladder
- [ ] Test de robots.txt
- [ ] Proxy TOR optionnel
- [ ] Une clé pour partager une URL proxifiée

### Limites
Certains sites web fournissent un contenu différent (cloaking) selon le type de client qui y accède (par exemple, les robots de moteurs de recherche par rapport aux navigateurs web standard). Ladder peut être configuré pour émuler différents types de clients afin de récupérer du contenu accessible au public à des fins de test, d'automatisation ou de recherche.

Cependant, de nombreux sites web mettent en œuvre des mécanismes avancés pour restreindre l'accès automatisé, tels que l'empreinte numérique (fingerprinting), la limitation de débit (rate limiting) ou l'analyse comportementale. Ladder ne contourne pas ces protections et peut ne pas fonctionner correctement sur les services qui restreignent ou contrôlent activement l'accès.

Des outils tiers tels que FlareSolverr existent et peuvent être utilisés indépendamment pour restituer des pages web dans un environnement de navigateur sans tête (headless browser). Ces outils ne font pas partie de Ladder et leur utilisation peut être soumise à des restrictions légales et contractuelles. Les utilisateurs sont seuls responsables de veiller à ce que leur utilisation respecte toutes les réglementations applicables.

## Installation

> **Avertissement :** Si votre instance est accessible publiquement, assurez-vous d'activer l'authentification de base. Cela empêchera les utilisateurs non autorisés d'utiliser votre proxy. Si vous n'activez pas l'authentification de base, n'importe qui peut utiliser votre proxy pour naviguer sur des contenus choquants/illégaux. Et vous en serez tenu responsable.

### Binaire
1) Téléchargez le binaire [ici](https://github.com/everywall/ladder/releases/latest)
2) Décompressez et exécutez le binaire `./ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml`
3) Ouvrez le navigateur (par défaut : http://localhost:8080)

### Docker
```bash
docker run -p 8080:8080 -d --env RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml --name ladder ghcr.io/everywall/ladder:latest
```

### Docker Compose
```bash
curl https://raw.githubusercontent.com/everywall/ladder/main/docker-compose.yaml --output docker-compose.yaml
docker-compose up -d
```

### Helm
Voir [README.md](https://github.com/everywall/ladder/blob/main/helm-chart/README.md) dans le sous-répertoire helm-chart pour plus d'informations.

## Utilisation

### Navigateur
1) Ouvrez le navigateur (par défaut : http://localhost:8080)
2) Saisissez l'URL
3) Appuyez sur Entrée

Ou directement en ajoutant l'URL à la fin de l'URL du proxy :
http://localhost:8080/https://www.example.com

Ou créez un favori avec l'URL suivante :
```javascript
javascript:window.location.href="http://localhost:8080/"+location.href
```

### API
```bash
curl -X GET "http://localhost:8080/api/https://www.example.com"
```

### RAW
http://localhost:8080/raw/https://www.example.com


### Exécution du ruleset
http://localhost:8080/ruleset

## Configuration

### Variables d'environnement

| Variable | Description | Valeur |
| --- | --- | --- |
| `PORT` | Port à écouter | `8080` |
| `PREFORK` | Générer plusieurs instances du serveur | `false` |
| `USER_AGENT` | User agent à émuler | `Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)` |
| `X_FORWARDED_FOR` | Adresse IP de transfert | `66.249.66.1` |
| `USERPASS` | Active l'authentification de base, format `admin:123456` | `` |
| `LOG_URLS` | Journalise les URL récupérées | `true` |
| `DISABLE_FORM` | Désactive le formulaire d'URL sur la page d'accueil | `false` |
| `FORM_PATH` | Chemin vers le HTML du formulaire personnalisé | `` |
| `RULESET` | Chemin ou URL vers un fichier de règles, accepte les répertoires locaux | `https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml` ou `/path/to/my/rules.yaml` ou `/path/to/my/rules/` |
| `EXPOSE_RULESET` | Rendre votre ruleset disponible aux autres instances de Ladder | `true` |
| `ALLOWED_DOMAINS` | Liste de domaines autorisés séparés par des virgules. Vide = aucune limitation | `` |
| `ALLOWED_DOMAINS_RULESET` | Autoriser les domaines du ruleset. false = aucune limitation | `false` |
| `FLARESOLVERR_HOST` | URL du service FlareSolverr pour contourner Cloudflare (optionnel) | `http://localhost:8191` |

`ALLOWED_DOMAINS` et `ALLOWED_DOMAINS_RULESET` sont combinés. Si les deux sont vides, aucune limitation n'est appliquée.
| `BASE_PATH` | Chemin de base du proxy, utile si vous souhaitez exécuter le proxy sur un sous-chemin (par ex. http://localhost:8080/proxy/) | `` |

### Ruleset

Il est possible d'appliquer des règles personnalisées pour modifier la réponse ou l'URL demandée. Cela peut être utilisé pour supprimer ou modifier des éléments indésirables de la page. Le ruleset est un fichier YAML, un répertoire contenant des fichiers YAML, ou une URL vers un fichier YAML qui contient une liste de règles pour chaque domaine. Ces règles sont chargées au démarrage.

Un ruleset de base est disponible dans un dépôt séparé [ruleset.yaml](https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml). N'hésitez pas à ajouter vos propres règles et à créer une pull request.


```yaml
- domain: example.com          # Includes all subdomains
  domains:                     # Additional domains to apply the rule
    - www.example.de
    - www.beispiel.de
  headers:
    x-forwarded-for: none      # override X-Forwarded-For header or delete with none
    referer: none              # override Referer header or delete with none
    user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
    content-security-policy: script-src 'self'; # override response header
    cookie: privacy=1
  regexRules:
    - match: <script\s+([^>]*\s+)?src="(/)([^"]*)"
      replace: <script $1 script="/https://www.example.com/$3"
  injections:
    - position: head # Position where to inject the code
      append: |      # possible keys: append, prepend, replace
        <script>
          window.localStorage.clear();
          console.log("test");
          alert("Hello!");
        </script>
- domain: www.anotherdomain.com # Domain where the rule applies
  useFlareSolverr: false        # Use FlareSolverr for Cloudflare bypass (optional, default: false)
  paths:                        # Paths where the rule applies
    - /article
  googleCache: false            # Use Google Cache to fetch the content
  regexRules:                   # Regex rules to apply
    - match: <script\s+([^>]*\s+)?src="(/)([^"]*)"
      replace: <script $1 script="/https://www.example.com/$3"
  injections:
    - position: .left-content article .post-title # Position where to inject the code into DOM
      replace: | 
        <h1>My Custom Title</h1>
    - position: .left-content article # Position where to inject the code into DOM
      prepend: | 
        <h2>Subtitle</h2>
- domain: demo.com
  headers:
    content-security-policy: script-src 'self';
    user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
  urlMods:              # Modify the URL
    query:              
      - key: amp        # (this will append ?amp=1 to the URL)
        value: 1 
    domain:             
      - match: www      # regex to match part of domain
        replace: amp    # (this would modify the domain from www.demo.de to amp.demo.de)
    path:               
      - match: ^        # regex to match part of path
        replace: /amp/  # (modify the url from https://www.demo.com/article/ to https://www.demo.de/amp/article/)
```

## Intégration de FlareSolverr

Ladder prend désormais en charge l'intégration avec [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) pour contourner la protection Cloudflare et d'autres défis anti-bot. Cela est particulièrement utile pour les sites qui utilisent des mécanismes sophistiqués de détection de robots.

### Configuration de FlareSolverr

1. **Utilisation de Docker Compose (recommandé) :**
   ```yaml
   # docker-compose.yaml
   services:
     ladder:
       image: ghcr.io/everywall/ladder:latest
       ports:
         - "8080:8080"
       environment:
         - RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml
         # - FLARESOLVERR_HOST=http://flaresolverr:8191
       depends_on:
         - flaresolverr
     
     flaresolverr:
       image: ghcr.io/flaresolverr/flaresolverr:latest
       ports:
         - "8191:8191"
       environment:
         - LOG_LEVEL=info
   ```

2. **Exécution de FlareSolverr séparément :**
   ```bash
   docker run -d \
     --name flaresolverr \
     -p 8191:8191 \
     ghcr.io/flaresolverr/flaresolverr:latest
   ```

   Ensuite, démarrez Ladder avec l'URL de FlareSolverr :
   ```bash
   FLARESOLVERR_HOST=http://localhost:8191 ./ladder
   ```

### Configuration des règles pour FlareSolverr

Pour utiliser FlareSolverr pour des domaines spécifiques, ajoutez l'option `useFlareSolverr: true` dans votre ruleset :

```yaml
# Example ruleset with FlareSolverr
- domain: cloudflare-protected-site.com
  useFlareSolverr: true  # Enable FlareSolverr for this domain
  headers:
    user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"

# Regular site without FlareSolverr
- domain: regular-site.com
  headers:
    user-agent: "Custom User Agent 1.0"
```

### Cas d'utilisation

L'intégration de FlareSolverr est particulièrement utile pour :
- **Sites protégés par Cloudflare** : sites utilisant les défis anti-bot de Cloudflare
- **Sites avec défis JavaScript** : pages nécessitant l'exécution de JavaScript pour accéder au contenu
- **Chargement dynamique de contenu** : sites qui chargent le contenu dynamiquement via JavaScript
- **Détection avancée de robots** : sites utilisant des techniques sophistiquées d'empreinte numérique et de détection de robots

### Notes importantes

- FlareSolverr ajoute une latence supplémentaire aux requêtes car il doit résoudre les défis
- N'activez `useFlareSolverr` que pour les domaines qui en ont réellement besoin afin de préserver les performances
- FlareSolverr nécessite plus de ressources car il exécute un navigateur sans tête
- Assurez-vous que FlareSolverr est en cours d'exécution et accessible avant de l'activer dans votre ruleset

## Développement

Pour exécuter un serveur de développement sur http://localhost:8080 :

```bash
echo "dev" > handlers/VERSION
RULESET="./ruleset.yaml" go run cmd/main.go
```

### Optionnel : serveur de développement avec rechargement à chaud avec [cosmtrek/air](https://github.com/cosmtrek/air)

Installez air conformément aux [instructions d'installation](https://github.com/cosmtrek/air#installation). 

Exécutez un serveur de développement sur http://localhost:8080 :

```bash
air # or the path to air if you haven't added a path alias to your .bashrc or .zshrc
```

Ce projet utilise [pnpm](https://pnpm.io/) pour générer une feuille de style avec les classes [Tailwind CSS](https://tailwindcss.com/). Pour le développement local, si vous modifiez les styles dans `form.html`, exécutez `pnpm build` pour générer une nouvelle feuille de style.
Télécharger l’outil