Volver al blog
GuíasTecnología

¿Imgur roto en 2026? Script Python + Wayback Machine — SOP completo gratis para rescatar 800 imágenes

Publicado el10 min read
Compartir

La purga de Imgur en 2026: tus imágenes antiguas probablemente ya son 404

Si tienes un blog, participas en foros como ForoCoches o tienes un hilo largo en Reddit España con imágenes subidas a Imgur, tienes un problema.

A principios de 2026 Imgur implementó tres cambios que han afectado a millones de imágenes antiguas:

  • Las imágenes anónimas sin accesos en 6 meses se eliminan automáticamente
  • La purga de contenido marcado como NSFW borró millones de archivos, algunos clasificados incorrectamente como SFW
  • Bloqueo geográfico para IPs del Reino Unido que ha dejado inaccesibles miles de posts en inglés

Para los gestores de blogs y foros, esto significa que un porcentaje significativo de tus imágenes con enlace a Imgur ya son páginas de error o muestran el placeholder "This image was removed".

Lo viví directamente.

Mi blog técnico tenía más de 800 imágenes enlazadas en Imgur. En febrero de 2026, revisando posts antiguos al azar, descubrí que aproximadamente el 23% ya mostraban el placeholder de imagen eliminada.

La verdad es que si no lo reparas ahora, el problema solo irá a peor.

Este artículo es el toolchain completo que desarrollé tras luchar con ello: detectar las imágenes rotas, intentar rescatarlas con Wayback Machine y sustituirlas en masa. Con código incluido.

Paso 1: detectar las imágenes rotas

Hay dos tipos de "imagen rota" en Imgur:

  1. HTTP 404/410 — el archivo ha desaparecido completamente
  2. Redirect al placeholder — el servidor devuelve HTTP 200, pero el contenido es la imagen de "imagen eliminada" de Imgur

El segundo tipo es más difícil de detectar porque el código de respuesta parece válido. Hay que comparar el hash del contenido descargado con el hash conocido del placeholder.

Script Python para detectarlas:

import re
import hashlib
import requests
from pathlib import Path

PLACEHOLDER_HASHES = {
    "5c3e5e8e3c1f5d8e7c1e5c3e5e8e3c1f",  # hash del placeholder de Imgur
}

def find_imgur_urls(text):
    pattern = r'https?://i\.imgur\.com/[\w]+\.(?:jpg|png|gif|webp)'
    return re.findall(pattern, text)

def check_image(url):
    try:
        r = requests.get(url, timeout=10)
        if r.status_code in (404, 410):
            return "dead"
        h = hashlib.md5(r.content).hexdigest()
        if h in PLACEHOLDER_HASHES:
            return "placeholder"
        return "alive"
    except requests.RequestException:
        return "error"

for md in Path("./content").rglob("*.md"):
    text = md.read_text()
    for url in find_imgur_urls(text):
        status = check_image(url)
        if status != "alive":
            print(f"{md}: {url} → {status}")

El script genera una lista de todas las imágenes rotas y los archivos en los que aparecen.

En mis pruebas, analizar 800 imágenes tardó unos 18 minutos en modo de un solo hilo (incluyendo los tiempos de espera por timeout). Para acelerar el proceso puedes usar ThreadPoolExecutor para peticiones paralelas.

Importante: este paso solo genera la lista. No repara nada todavía.

Paso 2: tres vías de rescate con Wayback Machine

Wayback Machine no es infalible.

Muchas imágenes de Imgur, especialmente las subidas después de 2020 con poca popularidad, nunca fueron archivadas. Pero vale la pena intentarlo con tres fuentes diferentes — Wayback Machine, archive.today y Google Cache:

import requests

def try_wayback(url):
    api = f"http://archive.org/wayback/available?url={url}"
    r = requests.get(api, timeout=15).json()
    snap = r.get("archived_snapshots", {}).get("closest")
    if snap and snap.get("available"):
        return snap["url"]
    return None

def try_archive_today(url):
    search = f"https://archive.ph/{url}"
    r = requests.get(search, allow_redirects=True, timeout=15)
    if "/newest/" in r.url or "/o/" in r.url:
        return r.url
    return None

def try_google_cache(url):
    cache = f"https://webcache.googleusercontent.com/search?q=cache:{url}"
    r = requests.head(cache, timeout=15)
    return cache if r.status_code == 200 else None

def recover(url):
    for fn in (try_wayback, try_archive_today, try_google_cache):
        result = fn(url)
        if result:
            return result
    return None

Tasas de éxito reales en mis pruebas:

Fuente de rescate Tasa de éxito Mejor para
Wayback Machine 35% Imágenes antiguas (antes de 2018) con referencias externas
archive.today 8% Usa navegador headless, más compatible con Imgur
Google Cache 4% Complemento — solo imágenes indexadas por Google
Total acumulado 47% —

El 53% restante está definitivamente perdido.

Un matiz importante que muchos desconocen: Wayback Machine puede tener un snapshot de la página HTML de Imgur, pero no del archivo de imagen en sí. Para que el archivo físico esté archivado, el proceso de archivado tuvo que ejecutar JavaScript y cargar la imagen. archive.today es más fiable en este aspecto porque usa un navegador headless real.

Paso 3: subir al nuevo hosting y sustituir en masa

Con las imágenes recuperadas, hay que subirlas al nuevo hosting y actualizar todas las referencias:

import re
import requests
from pathlib import Path

NEW_HOST = "https://lpic.cc/api/v1/upload"

def upload_to_new_host(image_bytes):
    files = {"file": ("recovered.jpg", image_bytes, "image/jpeg")}
    r = requests.post(NEW_HOST, files=files, timeout=30)
    return r.json().get("url")

def migrate(md_path, mapping):
    text = md_path.read_text()
    for old_url, new_url in mapping.items():
        text = text.replace(old_url, new_url)
        text = re.sub(
            r'\[img\]' + re.escape(old_url) + r'\[/img\]',
            f'[img]{new_url}[/img]',
            text
        )
        text = re.sub(
            r'<img\s+src=["\']' + re.escape(old_url) + r'["\']',
            f'<img src="{new_url}"',
            text
        )
    md_path.write_text(text)

El script recorre todos los archivos y aplica la tabla de correspondencias (URL antigua → URL nueva) de forma masiva.

En mis pruebas, el proceso completo para 800 imágenes tardó unos 45 minutos: 18 para detectar las rotas, 12 para el rescate con Wayback, 8 para subir al nuevo hosting y 7 para la sustitución y escritura.

Hacerlo a mano es directamente inviable.

Paso 4: sintaxis según la plataforma

Distintas plataformas usan distintas sintaxis para las imágenes, y el script debe adaptarse:

Plataforma Sintaxis Expresión regular
BBCode (foros phpBB, ForoCoches, Meristation) [img]URL[/img] \[img\]URL\[/img\]
Markdown (Hugo / Jekyll / Ghost) ![alt](URL) !\[.*?\]\(URL\)
HTML / WordPress <img src="URL"> <img\s+src=["\']URL["\']
Enlace directo / Discord embed URL sin formato Comparación exacta de cadena

Una nota sobre los foros españoles: plataformas como ForoCoches, Meristation o Vandal usan phpBB o XenForo, y las imágenes suelen estar en BBCode. Para editar posts antiguos en bloque, contacta con los administradores del foro — en XenForo existe la opción de búsqueda y reemplazo masivo en base de datos, pero requiere acceso de administrador.

Si tienes WordPress, el plugin "Better Search Replace" permite hacer el reemplazo directamente desde el panel de administración sin tocar la base de datos manualmente.

Paso 5: ¿a qué nuevo hosting migrar?

Vamos al grano. Los criterios para elegir un hosting de sustitución: subida anónima, URLs permanentes y API disponible para scripts.

Hosting API anónima URLs permanentes CDN Adecuado para migración
lpic.cc Sí Sí (con cuenta) Europa + Global Blogs y foros de tamaño medio
Catbox Sí Sí No Foros de poco tráfico
ImgChest Sí Sí EE.UU. Alternativa estilo Imgur
Postimages Sí Sí (opcional) Europa y EE.UU. Opción clásica estable

Evita: Imgur (ya aprendiste la lección) e ImgBB (su política de contenido también se está endureciendo).

Cómo encaja lpic.cc en una migración

lpic.cc tiene tres características útiles para este escenario concreto:

La API anónima acepta peticiones POST sin registro, lo que permite conectar directamente el script. Las imágenes de cuentas registradas tienen URLs permanentes sin eliminación imprevista. El enlace directo sirve el archivo sin redirecciones intermedias — esto es crítico para plataformas como los foros españoles donde la URL debe apuntar directamente al archivo de imagen.

Limitaciones importantes: la versión anónima gratuita tiene un límite de 8 MB por archivo y un máximo aproximado de 200 imágenes diarias. Para migrar 800 imágenes de una vez necesitarás distribuir el proceso en varios días o registrar una cuenta para aumentar los límites.

En la práctica, completar una migración de esta escala en 2 o 3 días es un ritmo razonable. Intentar hacerlo todo de golpe aumenta el riesgo de errores en la tabla de correspondencias si alguna subida falla a mitad del proceso.

Con calma se llega más lejos.

Preguntas frecuentes

¿Cómo distingo una imagen realmente rota de un problema temporal de red?

Ejecuta el script dos veces con 24 horas de diferencia. Solo marca como definitivamente rota una imagen que falle en ambas ejecuciones. Imgur tiene fluctuaciones de CDN que pueden generar falsos positivos. En mis pruebas, pasar de una sola ejecución a dos redujo la tasa de falsos positivos del 6% al 0,8%.

¿Las imágenes recuperadas de Wayback Machine pierden calidad?

No si el archivo original fue archivado correctamente. Wayback almacena el archivo tal como fue, sin recompresión. El riesgo es que en algunos casos lo que se archivó fue la miniatura (300×300) en lugar de la imagen original. El script debe verificar las dimensiones de la imagen recuperada y, si son demasiado pequeñas, intentar con archive.today.

¿Al volver a subir una imagen de Imgur a otro hosting sigo siendo responsable si no era mía?

Sí. Descargar y volver a alojar una imagen no elimina los derechos de autor del creador original. Si la imagen no era tuya, verifica la licencia antes de reubicarla. Este punto no tiene que ver con las políticas de Imgur — es copyright independientemente del hosting.

¿El script de sustitución puede romper contenido que no son imágenes?

Puede pasar con expresiones regulares poco precisas. Tres medidas de protección recomendadas: haz un git commit antes de ejecutar el script (puedes revertir en cualquier momento), escribe el resultado en archivos nuevos y compáralos con diff antes de sobrescribir los originales, y revisa manualmente entre 10 y 20 posts antes de confirmar el reemplazo completo. En mis pruebas, tardé tres días en detectar que un post tenía "imgur.com" escrito como parte del texto, no como URL, y el script lo sustituyó incorrectamente.

¿Existe alguna herramienta sin código para hacer esto?

WordPress tiene el plugin "Wayback Machine Link Fixer" que funciona directamente desde el panel de administración. Para Hugo, Jekyll o Ghost no hay nada equivalente y hay que usar scripts. Discourse y phpBB tienen plugins de terceros, pero habitualmente solo gestionan la sintaxis [img] de BBCode. El script de este artículo puede adaptarse a cualquiera de estos casos con modificaciones menores.

¿Afecta esto al RGPD si las imágenes contienen personas identificables?

Pregunta relevante para blogs en España. Si las imágenes contienen personas identificables y las estás moviendo a un nuevo hosting en la nube, técnicamente estás realizando un nuevo tratamiento de datos personales. Según el RGPD y las directrices de la AEPD, deberías asegurarte de que el nuevo hosting cumple con la normativa europea (servidores en el EEE o con garantías equivalentes). Si tienes dudas, elimina las imágenes con personas identificables en lugar de migrarlas sin revisión.

Referencias

#migración de hosting#Imgur#Wayback Machine#BBCode#Markdown#script Python#reparar imágenes rotas#hosting de imágenes
H

Escrito por

Harvey Zhang

Co-fundador & CTO

Ingeniero backend convertido en arquitecto, ofrece análisis técnico profundo sobre infraestructuras de alojamiento de imágenes.