De forma periódica, necesito comprobar si mis sitios web contienen "rotura de enlaces". El plural ya indica, este es un trabajo que no se puede hacer manualmente (a muchos sitios e incluso más enlaces para verificar), así que quiero una herramienta que me ayude.
Debe tener:
- Debe ejecutarse en Linux
- Debe permitir definir filtros (para URL / nombres de servidor / dominios no para verificar; la expresión regular Sea genial, una simple "subcadena" aún está bien)
- Debe permitir filtrar la salida (al menos para "mostrar solo errores y advertencias"; cuanto más granular, mejor)
Muy preferido:
- GUI y interfaces CLI (para que pueda ejecutarlo manualmente con un interfaz agradable, y también automáticamente desde Cron - en cuyo caso, si es posible, la GUI debería poder cargar los "resultados")
- Algunas estadísticas
- Eficiente:
- No debería comprobar la misma URL varias veces (pero, por supuesto, si no funciona, infórmelo para cada página en la que se encuentre)
- no debería analizar la misma página varias veces 1
- Exacto (tan pocos "falsos negativos" como sea posible)
Es bueno tener:
- poder especificar qué parámetros de URL ignorar 2
- enviar informes (formateados) por correo (si se ejecuta desde Cron) 3
- Capaz de escanear sitios con requisitos de autenticación 4
- Posibilidad de excluir tipos de archivos del análisis 5
Ya probé:
- gUrlChecker: Al ver la GUI, parece cumplir con todos los requisitos. Pero ignoró todas las configuraciones de filtro (para que los hosts / URL se omitan; si se incluye un ejemplo de cómo hacerlo, esa respuesta es bienvenida; tal vez hice algo mal o la versión de gUrlChecker que estaba usando tiene un error)
- LinkChecker: lejos de muchos "falsos negativos" (p. ej., informa que A redirecciona a A, es decir, a sí mismo; comprueba la misma página varias veces e informa de sus errores varias veces también, informa "páginas inalcanzables "(301, 401) que fueron claramente accesibles (sin" autorización "), sin filtrado de salida (aunque la visualización de" solo errores y advertencias "es aceptable, me gustaría que se mostrara, por ejemplo," solo errores "). Una vez más, esto podría ser un error mientras tanto resuelto: como gUrlChecker , lo instalé desde los repositorios de Ubuntu, que no siempre tienen las últimas versiones (ay, de hecho: 7.x en el repositorio 9.3 en el sitio del proyecto; se probará nuevamente con la última versión)
1: Si, por ejemplo, en el sitio escaneado, las páginas A, B y C enlazan a Z (todavía en el servidor escaneado, es decir, sin enlaces externos), Z debería escanearse solo una vez, no 3 veces como lo he experimentado, por ejemplo, con LinkChecker
2: Si el sitio, por ejemplo, sirve el sa contenido en varios idiomas, no tiene sentido escanear todas las variantes de idioma (siempre que los enlaces sean idénticos) Entonces puedo, p. Ej. desea ignorar el parámetro lang = XX
y que el verificador de enlaces considere a.php
, a.php? lang = en
y a.php? lang = de
la misma página. Esto, por supuesto, podría ser cubierto por el filtro imprescindible con RegEx, siempre que el parámetro lang
sea opcional;)
3: Seguro que con Cron se captura STDERR
, por lo que el foco de ese correo se encuentra en "formateado". Eso podría, por ejemplo, ser hojas de cálculo ODF (que luego se pueden "filtrar" usando OpenOffice / LibreOffice).
4: es decir, aquellos sitios que solicitan acceso al nombre de usuario / contraseña (código de respuesta HTTP 401); Acabo de notar que LinkChecker agregó que con v7.9, gUrlChecker también es capaz de hacer eso. Esto se relaciona principalmente con el sitio que se va a escanear , no necesariamente con los enlaces externos (si ambos son compatibles, debe configurarse por separado)
5: si el verificador de enlaces es, por ejemplo, capaz de escanear el contenido de PDF, MSWord, cualquier documento, debería ser posible desactivarlo: un sitio web puede contener "versiones de documentos más antiguos" como referencia, donde los "enlaces obsoletos" se consideran "normales". La exclusión puede tener lugar por tipo mime o extensión de archivo.