Votre scanner peut maintenant:
- Récupérer automatiquement tous les domaines .ch depuis crt.sh (Certificate Transparency logs)
- Contrôler les jobs depuis l'interface web (3 boutons)
- Voir le statut en temps réel (idle / fetching / scanning)
cd /opt/oldsite-scanner
git pull# Si vous utilisez systemd
sudo systemctl restart oldsites-api
# Ou manuellement
cd /opt/oldsite-scanner
source venv/bin/activate
uvicorn backend.api:app --host 0.0.0.0 --port 8000Ouvrez votre navigateur sur http://IP_SERVEUR:8000
Vous verrez maintenant une nouvelle section "⚙️ Contrôle des jobs" avec 3 boutons.
-
Cliquez sur "1. 🌐 Récupérer les domaines (.ch)"
- Lance la récupération depuis crt.sh
- Peut prendre 2-5 minutes
- Le statut affiche "fetching"
- Crée le fichier
domains_final.txt
-
Attendez que le statut passe à "idle"
- Le bouton "2. Scanner" devient actif
- Le nombre de domaines s'affiche
-
Cliquez sur "2. 🔍 Scanner"
- Lance le scan de 800 domaines (configurable)
- Le statut affiche "scanning"
- Les résultats apparaissent progressivement dans le tableau
-
Si besoin, cliquez sur "⏹️ Arrêter"
- Arrête le job en cours
- Retour à l'état "idle"
| État | Description | Boutons actifs |
|---|---|---|
| idle | Aucun job en cours | Récupérer, Scanner |
| fetching | Récupération des domaines | Arrêter |
| scanning | Scan en cours | Arrêter |
cd /opt/oldsite-scanner
source venv/bin/activate
python -m backend.fetch_crtshVous verrez:
================================================================================
🌐 Récupération des domaines .ch depuis crt.sh
================================================================================
📅 Années interrogées: 2020 à 2025
📁 Fichier de sortie: /opt/oldsite-scanner/domains_final.txt
🔍 Interrogation crt.sh pour l'année 2020...
✅ 2020: 15234 domaines trouvés
🔍 Interrogation crt.sh pour l'année 2021...
✅ 2021: 18456 domaines trouvés
...
# Voir le nombre de domaines
wc -l domains_final.txt
# Voir les premiers domaines
head -20 domains_final.txt
# Voir les derniers domaines
tail -20 domains_final.txt# Scanner 100 domaines
python -m backend.scan_ch_sites --domains-file domains_final.txt --limit 100
# Scanner 500 domaines
python -m backend.scan_ch_sites --domains-file domains_final.txt --limit 500Retourne l'état actuel:
{
"state": "idle",
"pid": null,
"started_at": null,
"last_exit_code": 0,
"last_job": "scan",
"domains_file_exists": true,
"domains_count": 45678
}Lance la récupération des domaines:
curl -X POST http://localhost:8000/api/fetch/startRéponse:
{
"status": "fetch_started",
"pid": 12345,
"started_at": "2025-10-31T15:30:00Z"
}Lance le scan:
curl -X POST http://localhost:8000/api/scan/startRéponse:
{
"status": "scan_started",
"pid": 12346,
"started_at": "2025-10-31T15:35:00Z"
}Arrête le job en cours:
curl -X POST http://localhost:8000/api/job/stopRéponse:
{
"status": "stopped",
"pid": 12345,
"job_type": "fetching",
"message": "Job fetching arrêté"
}Éditez backend/api.py, ligne 182:
cmd = f"{PYTHON_BIN} -m backend.scan_ch_sites --domains-file {DOMAINS_FILE} --limit 1500"Puis redémarrez l'API.
Éditez backend/fetch_crtsh.py, ligne 15:
YEARS = list(range(2018, 2026)) # 2018 à 2025Éditez backend/fetch_crtsh.py, ligne 229:
domains = await fetch_all_domains(verify_dns=True) # Active la vérificationcrt.sh est un moteur de recherche pour les Certificate Transparency logs. Il contient tous les certificats SSL/TLS émis publiquement.
- ✅ Gratuit et public
- ✅ Très complet (tous les domaines avec HTTPS)
- ✅ Mis à jour en temps réel
- ✅ Pas besoin d'authentification
⚠️ Seulement les domaines avec certificats SSL⚠️ Peut contenir des sous-domaines⚠️ Peut contenir des domaines expirés⚠️ Rate limiting possible si trop de requêtes
Le script interroge crt.sh par année pour éviter les timeouts:
- 2020: tous les certificats émis en 2020
- 2021: tous les certificats émis en 2021
- etc.
Puis il nettoie et déduplique les résultats.
- Durée: 2-5 minutes (dépend de crt.sh)
- Domaines trouvés: 50'000 - 150'000 (selon les années)
- Fichier généré: 2-5 MB
- Vitesse: ~100 domaines/minute (concurrence 30)
- 800 domaines: ~8 minutes
- 5000 domaines: ~50 minutes
# Tester manuellement
curl "https://crt.sh/?q=%.ch&output=json&minNotBefore=2024-01-01&maxNotBefore=2024-12-31" | headSi timeout, réessayez plus tard (crt.sh peut être surchargé).
Vérifiez les logs:
cd /opt/oldsite-scanner
source venv/bin/activate
python -m backend.fetch_crtshLe fichier domains_final.txt n'existe pas. Lancez d'abord la récupération.
# Trouver le PID
ps aux | grep fetch_crtsh
ps aux | grep scan_ch_sites
# Tuer manuellement
kill -9 <PID>- Récupérez les domaines (50k-150k domaines)
- Scannez par lots:
- Jour 1: 1000 domaines
- Jour 2: 1000 domaines
- etc.
Ou modifiez la limite dans l'API pour scanner plus:
--limit 5000 # Au lieu de 800Après la récupération, filtrez domains_final.txt:
# Garder seulement les domaines courts (potentiellement plus vieux)
grep -E '^[a-z]{3,8}\.ch$' domains_final.txt > domains_short.txt
# Scanner ce fichier
python -m backend.scan_ch_sites --domains-file domains_short.txt --limit 500Créez un cron job:
crontab -eAjoutez:
# Récupérer les domaines tous les lundis à 2h
0 2 * * 1 cd /opt/oldsite-scanner && /opt/oldsite-scanner/venv/bin/python -m backend.fetch_crtsh
# Scanner 1000 domaines tous les jours à 3h
0 3 * * * cd /opt/oldsite-scanner && /opt/oldsite-scanner/venv/bin/python -m backend.scan_ch_sites --domains-file domains_final.txt --limit 1000
Vous avez maintenant un système complet pour:
- ✅ Récupérer automatiquement les domaines .ch depuis crt.sh
- ✅ Contrôler les jobs depuis l'interface web
- ✅ Scanner les domaines et détecter les vieux sites
- ✅ Voir les résultats en temps réel
Profitez-en! 🚀