Spider Links Checker¶
El servicio Spider Links Checker está desarrollado en Python, en formato API, con el objetivo de poder analizar los enlaces que hay en una página web para ver si funcionan correctamente.
La forma más sencilla de desplegarlo es usando Docker, aunque también puede hacerse directamente en cualquier servidor que disponga de Python instalado.
Despliegue¶
Para desplegar el proyecto bastará con descargar el proyecto (solicitar acceso al equipo de SogetiLabs mediante la plataforma de contacto) y seguir los siguientes pasos:
Una vez tenemos la API desplegada, podemos hacer las peticiones de forma facil a través de Postman.
Uso básico¶
El endpoint para el análisis es [POST] /api/v1/scrap
, y requiere de una serie de parámetros para su uso, que deben ser pasados como "form-data":
Parámetro | Obligatorio | Descripción |
---|---|---|
base_domains |
Sí | Lista de URL base que se quieren analizar, separadas por comas (, ) y sin espacios. Ej: https://sogeti.es,https://capgemini.com |
accepted_domains |
No | Lista de dominios, separados por comas (, ), sin espacios ni protocolo. Ej: sogeti.com,sogeti.fr . Útil por si la web contiene otros dominios que se quieran tener en cuenta además del dominio base |
forbidden_domains |
No | Lista de dominios, separados por comas (, ), sin espacios ni protocolo. Ej: facebook.com,instagram.com . Útil por si se quieren obviar enlaces externos, como facebook o twitter |
depth |
No | Límite de profundidad que se quiere analizar, siendo 0 la página principal únicamente. Si no se indica ninguna profundidad se analizará la web completa |
forbidden_ext |
No | Lista de extensiones que no se quieren analizar, separadas por comas (, ) y sin espacios. Ej: css,aspx,js,mp4 Útil para obviar determinados tipos de ficheros. |
cookies_file * |
No | Ficheros de cookies en caso de que la web lo requiera. El nombre de cada fichero debe ser cookies-<nombredeldominio>.txt . Ej: cookies-sogeti.txt |
* Este parámetro está en una fase muy inicial, por lo que puede no funcionar correctamente.
El resultado de la ejecución será un JSON, que se guardará en la raíz del proyecto con el nombre de results.json
, con la siguiente estructura:
{
"execution_time": 665, //(9)!
"total_links_fail": 34, //(10)!
"total_links_pass": 355, //(11)!
"total_analyzed": 389, //(12)!
"total_cant_scan": 0, //(1)!
"data": [ //(2)!
{
"base_url": "http://sogeti.es", //(13)!
"links": 9, //(15)!
"links_fail": 4, //(16)!
"links_pass": 5, //(17)!
"cant_scan": 0, //(18)!
"results": [ //(14)!
{
"element": "https://sogeti.es", //(3)!
"link": "https://sogeti.es", //(4)!
"parent": "https://sogeti.es", //(5)!
"non_https": 0, //(20)!
"redirect": 1, //(21)!
"redirections": [ //(22)!
"https://www.sogeti.es/"
],
"status_code": 200, //(6)!
"status_message": "OK" //(7)!
},
{
"element": "/ofrecemos/sogetilabs/",
"link": "https://sogeti.es/ofrecemos/sogetilabs/",
"parent": "https://www.sogeti.es/sobre-sogeti/quienes-somos/",
"non_https": 0,
"redirect": 0,
"redirections": [],
"status_code": 404,
"status_message": "Not Found"
},
{
"element": "/soluciones/transformacion-digital/dynamics365/",
"link": "https://sogeti.es/soluciones/transformacion-digital/dynamics365/",
"parent": "https://www.sogeti.es/sobre-sogeti/quienes-somos/",
"non_https": 0,
"redirect": 0,
"redirections": [],
"status_code": 404,
"status_message": "Not Found"
},
... //(8)!
]
},
{
... //(19)!
}
]
}
- Número total de enlaces que no han podido ser analizados
- Array con la lista de resultados. 1 objeto por url base
- Contenido del "href" del elemento que no funciona
- Enlace completo que no funciona
- url donde se ha encontrado dicho elemento
- Código de respuesta del servidor
- Mensaje de respuesta del servidor
- Más elementos
- Tiempo total de escaneo (en segundos)
- Número total de enlaces fallados (status diferente de 200)
- Número total de enlaces correctos (status 200)
- Total de enlaces analizados (pasados + fallados)
- URL base analizada
- Lista de enlaces analizados de la URL base anterior
- Enlaces de la URL base analizados
- Enlaces de la URL base fallados
- Enlaces de la URL base pasados
- Enlaces de la URL base no analizados
- Siguiente elemento con otra URL analizada
- Indica si la página NO tiene https
- Indica si la página ha sido redirigida a otro sitio
- Lista de urls a las cuáles ha sido redirigido el link
Este fichero podrá ser procesado como mejor convenga, ya sea con PowerBI u otra herramienta de visualización de datos.
En caso de querer usar PowerBI, se puede usar esta plantilla