2008-09-15 28 views
39

¿Qué técnicas o herramientas se recomiendan para encontrar enlaces rotos en un sitio web?Cómo encontrar enlaces rotos en un sitio web

Tengo acceso a los archivos de registro, por lo que podría analizar estos buscando errores 404, pero me gustaría algo automatizado que seguirá (o tratará de seguir) todos los enlaces en un sitio.

+1

También hay [HTTrack] (http://www.httrack.com/) que puede hacer el trabajo bastante bien. –

+0

Si le interesa encontrar enlaces inactivos, incluida la consideración de si el identificador de fragmento está activo, considere https://github.com/gajus/deadlink. – Gajus

+0

@DaviddCeFreitas: ¿Te importa crear una respuesta para que podamos ver exactamente cómo podemos usar httrack para encontrar enlaces muertos? –

Respuesta

35

Ver LinkChecker para Firefox.

Para Mac OS hay una herramienta Integrity que puede verificar las URL de enlaces rotos.

Para Windows hay Xenu's Link Sleuth.

+3

Link Sleuth Xenu se ve sólo el billete. –

+0

¡La integridad es asombrosa! Gracias por compartir. –

+0

Estoy detrás de http://checkerr.org – zupa

0

La mejor manera es crear un bot pequeño que se ejecute en todo el sitio y registre el resultado. Hice esto para probar mis sitios antes de la implementación y funciona muy bien.

+1

puede darme el pequeño bot o el algoritmo que puedo probar yo mismo para mi sitio. gracias de antemano – gmhk

+0

... alguna referencia al menos sería bienvenida. Bot no suena muchas campanas. Eliminaré mi voto negativo de inmediato si esta publicación se hace más accesible -1, ahora huele a estímulo. – hhh

+0

Esto tomaría varias semanas de trabajo. Vea mi comentario en contra de la respuesta de ConroyP. – NickG

2

O bien utilizar una herramienta que analiza los archivos de registro y le da un informe de 'enlaces rotos' (por ejemplo AnalogWebmaster Tools o Google), o ejecutar una herramienta que las arañas enlaces a su sitio web y los informes rotos (por ejemplo W3C Link Checker).

10

Me gusta el W3C Link Checker.

+1

Yo también. Si marca 'Comprobar documentos vinculados recursivamente' y deja el campo' recursión profundidad' vacío, parece recurrir infinitamente en el dominio especificado. – mb21

7

Ver linkchecker herramienta:

LinkChecker es un país libre, con licencia GPL validador sitio web. LinkChecker comprueba los enlaces en documentos web o sitios web completos.

+0

Esto es bueno porque se ejecuta localmente y muestra tanto el origen como el destino de intentos de enlaces rotos. –

+0

Buena herramienta de hecho. Tiene una GUI, una versión CLI y una versión web. – Geert

0

Su mejor opción es golpear juntos su propia araña en su lenguaje de script de elección, que se podía hacer de forma recursiva a lo largo de las líneas de:

// Pseudo-code to recursively check for broken links 
// logging all errors centrally 
function check_links($page) 
{ 
    $html = fetch_page($page); 
    if(!$html) 
    { 
     // Log page to failures log 
     ... 
    } 
    else 
    { 
     // Find all html, img, etc links on page 
     $links = find_links_on_page($html); 
     foreach($links as $link) 
     { 
      check_links($link); 
     } 
    } 
} 

vez que su sitio ha conseguido un cierto nivel de atención de Google, sus webmaster tools son invaluables para mostrar enlaces rotos que los usuarios pueden encontrar, pero esto es bastante reaccionario: los enlaces muertos pueden estar disponibles varias semanas antes de que los indexe y registre el 404 en su panel de webmaster.

Escribir su propio script como el anterior le mostrará todos los enlaces rotos posibles, sin tener que esperar a que google (herramienta de webmaster) o sus usuarios (404 en los registros de acceso) tropiecen con ellos.

+1

Ya no tengo tiempo para tales desafíos intelectuales (aunque suena divertido), ¡y estaba esperando que alguien ya hubiera escrito una araña como esa!:-) –

+0

Si alguien escribe un práctico seudocódigo -> convertidor PHP/Perl, ¡entonces estaríamos en el negocio! – ConroyP

+0

información +1 siempre es algo bueno, más información: P – hhh

-1

Hay una aplicación de Windows llamada CheckWeb. Ya no está desarrollado, pero funciona bien, y el código está abierto (C++ creo).

que acaba de dar una dirección URL, y va a rastrear su sitio (y enlaces externos si lo desea), reportar cualquier errores, imagen/página "peso", etc.

http://www.algonet.se/~hubbabub/how-to/checkweben.html

1

En una. La aplicación NET puede configurar IIS para pasar todas las solicitudes a ASP.NET y luego en su controlador global de errores puede detectar y registrar errores 404. Esto es algo que haría además de filtrar su sitio para verificar si hay enlaces internos faltantes. Hacer esto puede ayudar a encontrar enlaces rotos de OTROS sitios y luego puede solucionarlos con 301 redireccionamientos a la página correcta.

Para ayudar a probar su sitio internamente, también está el kit de herramientas de Microsoft SEO.

Por supuesto, la mejor técnica es evitar el problema en tiempo de compilación! En ASP.NET puede acercarse a esto requiriendo que todos los enlaces se generen a partir de métodos estáticos en cada página, por lo que solo hay una ubicación donde se genera una URL determinada. p.ej. http://www.codeproject.com/KB/aspnet/StronglyTypedPages.aspx

Si desea una completa C# rastreador, hay uno aquí: - http://blog.abodit.com/2010/03/a-simple-web-crawler-in-c-using-htmlagilitypack/

0

LinkTiger parece un servicio muy pulida (aunque no libre) para hacer esto. No lo estoy usando, solo quería agregar porque aún no se mencionó.

1

Nuestro producto comercial DeepTrawl hace esto y se puede utilizar en Windows/Mac.

Disclosure: Soy el desarrollador principal detrás DeepTrawl.

20

acaba de encontrar una secuencia de comandos wget que hace lo que está pidiendo.

wget --spider -o wget.log -e robots=off --wait 1 -r -p http://www.example.com 

Crédito para esto va al .

+2

Una versión de 32 bits de ** wget ** para Windows se puede encontrar en SourceForge [aquí] (http://gnuwin32.sourceforge.net/packages/wget.htm). * (Los enlaces para otros binarios de GNU para Windows se pueden encontrar [aquí] (http://gnuwin32.sourceforge.net/packages.html)) *. La página ** man ** para ** wget ** se puede encontrar [aquí] (https://www.gnu.org/software/wget/manual/wget.html). – DavidRR

+1

El problema con este método es que la interpretación del registro no es la más fácil. Puedes grep para '404' y para' broken link', pero está claro dónde se encuentra el enlace. – Flimm

Cuestiones relacionadas