Contournement DNS CDN mort - Récupération de contenu depuis des services défunts
Problème
Quand un service ferme, ses enregistrements DNS cessent de se résoudre, rendant les URLs complètement inaccessibles. Cependant, le contenu réel existe souvent toujours sur les serveurs CDN (Fastly, CloudFront, Akamai, etc.) qui continuent à le servir - les serveurs ne sont tout simplement pas accessibles via la résolution DNS normale.
Contexte / Conditions de déclenchement
- Le service a fermé (Vine, startups défuntes, etc.)
- Les URLs CDN d'origine retournent des erreurs de résolution DNS
- Le contenu était hébergé chez un fournisseur CDN majeur
- Vous avez besoin de récupérer/archiver du contenu historique
- Wayback Machine n'a pas le contenu spécifique
Solution
Étape 1 : Identifier le fournisseur CDN
Observez le nom d'hôte de l'URL d'origine pour identifier le CDN :
*.cdn.vine.co→ Fastly*.cloudfront.net→ AWS CloudFront*.akamaized.net→ Akamai*.fastly.net→ Fastly
Étape 2 : Trouver les adresses IP du CDN
Pour Fastly (courant pour beaucoup de services défunts) :
# IPs anycast de Fastly
151.101.1.6
151.101.65.6
151.101.129.6
151.101.193.6
Pour d'autres CDNs, consultez leur documentation ou essayez les plages IP connues.
Étape 3 : Tester avec l'en-tête Host
# Tester si le contenu est toujours servi
curl -sI \
-H "Host: original-cdn-hostname.com" \
"http://FASTLY_IP/path/to/content"
# Exemple pour Vine :
curl -sI \
-H "Host: mtc.cdn.vine.co" \
"http://151.101.1.6/r/videos/ABC123.mp4"
Étape 4 : Télécharger le contenu
import requests
def download_via_cdn_ip(original_url: str, cdn_ip: str) -> bytes:
"""Télécharger le contenu en contournant le DNS mort."""
import re
# Extraire l'hôte et le chemin de l'URL
match = re.match(r'https?://([^/]+)(/.+)', original_url)
if not match:
return None
host = match.group(1)
path = match.group(2)
# Accéder directement à l'IP avec l'en-tête Host
response = requests.get(
f"http://{cdn_ip}{path}",
headers={"Host": host},
timeout=30
)
if response.status_code == 200:
return response.content
return None
# Exemple d'utilisation
content = download_via_cdn_ip(
"http://mtc.cdn.vine.co/r/videos/ABC123.mp4",
"151.101.1.6"
)
Vérification
- Vérifier la réponse HTTP 200 (pas 403 ou 404)
- Vérifier que l'en-tête content-type correspond au type attendu
- Valider l'intégrité du fichier (vérifier les magic bytes, taille du fichier > 0)
Exemple : Récupération CDN Vine
Le CDN de Vine a fermé avec DNS en 2017, mais à partir de 2026, Fastly sert toujours les fichiers vidéo :
# Hôtes CDN Vine et leurs IPs Fastly
VINE_CDN_HOSTS = {
"mtc.cdn.vine.co": "151.101.1.6",
"v.cdn.vine.co": "151.101.1.6",
}
# URL d'origine depuis les métadonnées archivées
video_url = "http://mtc.cdn.vine.co/r/videos/ABC123.mp4?versionId=xyz"
# Télécharger via contournement IP
import requests
import re
match = re.match(r'https?://([^/]+)(/.+)', video_url)
host, path = match.groups()
response = requests.get(
f"http://151.101.1.6{path}",
headers={"Host": host}
)
# Sauvegarder la vidéo récupérée
with open("recovered_video.mp4", "wb") as f:
f.write(response.content)
Résultat : 121 149 vidéos Vine récupérées que Wayback Machine n'avait pas archivées.
Notes
- Comportement de mise en cache CDN : Le contenu peut être mis en cache indéfiniment sur les serveurs edge du CDN même après la disparition du serveur d'origine
- IDs de version : Certains CDNs (comme ceux basés sur S3) utilisent des paramètres versionId - conservez-les dans vos requêtes
- Limitation de débit : Les CDNs peuvent toujours imposer des limites de débit même pour les domaines « morts »
- HTTPS : Vous devrez peut-être utiliser HTTP au lieu de HTTPS car les certificats SSL ont expiré
- Sensible au temps : Cela ne fonctionnera pas indéfiniment - les CDNs purgent finalement l'ancien contenu
- Considérations légales : Assurez-vous que vous avez le droit d'archiver le contenu
Plages d'adresses IP CDN courantes
| CDN | Plage IP | Notes |
|---|---|---|
| Fastly | 151.101.0.0/16 | Anycast, essayez .1.6, .65.6, .129.6, .193.6 |
| CloudFront | Variable | Vérifiez le JSON des plages IP AWS |
| Akamai | Variable | Utilisez les outils de lookup GTM |
Techniques connexes
- Utiliser l'API CDX de Wayback Machine pour trouver les métadonnées archivées avec les URLs CDN
- Combiner avec web.archive.org pour le contenu qu'ils ont capturé
- Vérifier la « Save Page Now » de Internet Archive pour déclencher l'archivage