dead-cdn-dns-bypass

Par divinevideo · divine-mobile

Récupère du contenu depuis des CDN « morts » où le DNS ne résout plus mais les serveurs répondent encore. Utilise quand : (1) un service a fermé mais tu disposes d'URLs vers son CDN, (2) les résolutions DNS échouent mais tu soupçonnes que le fournisseur CDN (Fastly, CloudFront, Akamai) possède encore le contenu, (3) tu archives du contenu de services disparus comme Vine, Tumblr, etc. L'insight clé : les fournisseurs CDN continuent souvent à servir le contenu longtemps après la mort du DNS — interroge l'IP directement avec le header `Host` d'origine.

npx skills add https://github.com/divinevideo/divine-mobile --skill dead-cdn-dns-bypass

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

  1. Vérifier la réponse HTTP 200 (pas 403 ou 404)
  2. Vérifier que l'en-tête content-type correspond au type attendu
  3. 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

Skills similaires