Un script bash para araña un sitio, seguir enlaces y obtener URL (con filtrado incorporado) en un archivo de texto generado.
Descargue el script y guarde en la ubicación deseada en su máquina.
Necesitará wget instalado en su máquina.
Para verificar si ya está instalado, intente ejecutar el comando wget solo.
Si está en una Mac o en ejecución de Linux, es probable que ya tenga WGET instalado; Sin embargo, si el comando wget no funciona, es posible que no se agregue correctamente a su variable de ruta.
Si está ejecutando Windows:
Descargue el último binario wget para Windows de https://eternallybored.org/misc/wget/
La descarga está disponible como una cremallera con documentación, o simplemente un exe. Recomendaría solo el exe.
Si descargó el zip, extraiga todo (si las ventanas incorporadas en la utilidad ZIP ofrecen un error, use 7-ZIP). Además, si descargó la versión de 64 bits, cambie el nombre del archivo wget64.exe a wget.exe
Mover wget.exe a C:WindowsSystem32
Asegúrese de que la versión de grep en su computadora sea compatible con -E, --extended-regexp . Para verificar si hay soporte, ejecute grep --help y busque la bandera. Para verificar la versión instalada, ejecute grep -V .
Abra Git Bash, terminal, etc. y establezca permisos de ejecución para el script fetchurls.sh :
chmod +x /path/to/script/fetchurls.shIngrese lo siguiente para ejecutar el script:
./fetchurls.sh [OPTIONS]...Alternativamente, puede ejecutar con cualquiera de los siguientes:
sh ./fetchurls.sh [OPTIONS]...
# -- OR -- #
bash ./fetchurls.sh [OPTIONS]...Si no pasa ninguna opción, el script se ejecutará en modo interactivo.
Si la URL de dominio requiere autenticación, debe pasar el nombre de usuario y la contraseña como banderas; No se le solicita estos valores en modo interactivo.
Puede pasar opciones (como banderas) directamente al script, o no pasar nada para ejecutar el script en modo interactivo.
-d , --domainhttps://example.comLa URL de dominio totalmente calificada (con protocolo) le gustaría gatear.
Asegúrese de ingresar el protocolo correcto (por ejemplo, https ) y el subdominio para la URL o el archivo generado puede estar vacío o incompleto. El script intentará automáticamente seguir la primera redirección HTTP, si se encuentra. Por ejemplo, si ingresa el protocolo incorrecto ( http://... ) para https://www.adamdehaven.com , el script seguirá automáticamente la redirección y obtendrá todas las URL para el protocolo HTTPS correcto.
Las URL del dominio se dispararán con éxito siempre que la URL objetivo (o la primera redirección) devuelva un estado de HTTP 200 OK .
-l , --location~/Desktop/c/Users/username/DesktopLa ubicación (directorio) donde desea guardar los resultados generados.
Si el directorio no existe en la ubicación especificada, siempre que el resto de la ruta sea válido, el nuevo directorio se creará automáticamente.
-f , --filenamedomain-topleveldomainexample-comEl nombre deseado del archivo generado, sin espacios o extensión del archivo.
-e , --exclude"css|js|map"Lista de extensiones de archivos para excluir los resultados.
Para evitar excluir archivos que coinciden con la lista predeterminada de extensiones de archivos, simplemente pase una cadena vacía ""
-s , --sleep02El número de segundos para esperar entre las recuperaciones.
-u , --usernamemarty_mcflySi la URL de dominio requiere autenticación, el nombre de usuario pasará al comando wget.
Si el nombre de usuario contiene caracteres espaciales, debe pasar citas dentro. Este valor solo se puede configurar con una bandera; No hay un aviso en el modo interactivo.
-p , --passwordthats_heavySi la URL de dominio requiere autenticación, la contraseña para pasar al comando wget.
Si la contraseña contiene caracteres espaciales, debe pasar cotizaciones dentro. Este valor solo se puede configurar con una bandera; No hay un aviso en el modo interactivo.
-n , --non-interactivePermite que el script se ejecute con éxito en una carcasa no interactiva.
El script utilizará la configuración predeterminada --location y --filename a menos que las banderas respectivas se establezcan explícitamente.
-i , --ignore-robotsIgnorar robots.txt para el dominio.
-w , --wgetMostrar instrucciones de instalación de WGet. Las instrucciones de instalación pueden variar según la configuración de su computadora.
-v , -V , --versionMostrar información de la versión.
-t , --troubleshootingSalidas recibió indicadores de opciones con sus valores asociados en tiempo de ejecución para la resolución de problemas.
-h , -? , --helpMuestre el contenido de ayuda.
Si no pasa el indicador --domain, el script se ejecutará en modo interactivo y se le solicitará las opciones no establecidas.
Primero, se le solicitará que ingrese la URL completa (incluido el protocolo HTTPS/HTTP) del sitio que desea gatear:
Fetch a list of unique URLs for a domain.
Enter the full domain URL ( http://example.com )
Domain URL:Luego se le solicitará que ingrese la ubicación (directorio) de dónde desea que se guarden los resultados generados (predeterminados en el escritorio en Windows):
Save file to directory
Directory: /c/Users/username/DesktopA continuación, se le solicitará que cambie/acepte el nombre del archivo generado (simplemente presione ENTER para aceptar el nombre de archivo predeterminado):
Save file as
Filename (no file extension, and no spaces): example-comFinalmente, se le solicitará que cambie/acepte la lista predeterminada de extensiones de archivo excluidas (presione ENTER para aceptar la lista predeterminada):
Exclude files with matching extensions
Excluded extensions: bmp | css | doc | docx | gif | jpeg | jpg | JPG | js | map | pdf | PDF | png | ppt | pptx | svg | ts | txt | xls | xlsx | xmlEl script rastreará el sitio y compilará una lista de URL válidas en un nuevo archivo de texto. Cuando se complete, el script mostrará un mensaje y la ubicación del archivo generado:
Fetching URLs for example.com
Finished with 1 result !
File Location:
/c/Users/username/Desktop/example-com.txtSi ya existe un archivo del mismo nombre en la ubicación (por ejemplo, si ejecutó previamente el script para la misma URL), el archivo original se sobrescribirá .
El script, por defecto, filtra muchas extensiones de archivos que comúnmente no son necesarias.
La lista de extensiones de archivos se puede pasar a través del indicador --exclude o proporcionada a través del modo interactivo.
.bmp.css.doc.docx.gif.jpeg.jpg.JPG.js.map.pdf.PDF.png.ppt.pptx.svg.ts.txt.xls.xlsx.xmlAdemás, también se ignoran los archivos y directorios del sitio específico (incluidos WordPress).
/wp-content/uploads//feed//category//tag//page//widgets.php//wp-json/xmlrpc El script debe filtrar la mayoría de los tipos y directorios de archivos no deseados; Sin embargo, puede editar las expresiones regulares que filtran ciertas páginas, directorios y tipos de archivos editando la función fetchUrlsForDomain() dentro del archivo fetchurls.sh .
Advertencia : si no está familiarizado con GREP o expresiones regulares, puede romper fácilmente el guión.