
Un script sencillo para capturar pantallas de una lista de sitios web.
Un script sencillo para capturar pantallas de una lista de sitios web, basado en el script url-to-image de PhantomJS.
--ignore-certificate-errors no funciona y nunca volverá a funcionar: la solución es usar un webdriver adecuado, pero hasta la fecha webscreenshot no tiene como objetivo soportar este método bastante complejo que requiere herramientas de terceros.ImageMagick)Coloca tus objetivos en un archivo de texto y pásalo con la opción -i, o como argumento posicional si solo tienes una URL.
Las capturas de pantalla estarán disponibles, por defecto, en tu directorio actual ./screenshots/.
Los formatos de entrada aceptados son los siguientes:
http(s)://dominio_o_ip:puerto(/recurso)
dominio_o_ip:puerto(/recurso)
dominio_o_ip(/recurso)
webscreenshot.py version 2.96
usage: webscreenshot [-h] [-i INPUT_FILE] [-o OUTPUT_DIRECTORY] [-w WORKERS] [-v] [--no-error-file] [-z SINGLE_OUTPUT_FILE] [-p PORT]
[-s] [-m] [-r {phantomjs,chrome,chromium,edge,firefox}] [--renderer-binary RENDERER_BINARY] [--no-xserver]
[--window-size WINDOW_SIZE] [-f {pdf,png,jpg,jpeg,bmp,ppm}] [-q [0-100]] [--ajax-max-timeouts AJAX_MAX_TIMEOUTS]
[--crop CROP] [--custom-js CUSTOM_JS] [-l] [--label-size LABEL_SIZE] [--label-bg-color LABEL_BG_COLOR]
[--imagemagick-binary IMAGEMAGICK_BINARY] [-c COOKIE] [-a HEADER] [-u HTTP_USERNAME] [-b HTTP_PASSWORD]
[-P PROXY] [-A PROXY_AUTH] [-T PROXY_TYPE] [-t TIMEOUT]
[URL]
options:
-h, --help muestra este mensaje de ayuda y sale
Parámetros principales:
URL URL objetivo única dada como argumento posicional
-i, --input-file INPUT_FILE
<INPUT_FILE> archivo de texto que contiene la lista de objetivos. Ej: list.txt
-o, --output-directory OUTPUT_DIRECTORY
<OUTPUT_DIRECTORY> (opcional): directorio de salida de las capturas (por defecto './screenshots/')
-w, --workers WORKERS
<WORKERS> (opcional): número de trabajadores de ejecución en paralelo (por defecto 4)
-v, --verbosity <VERBOSITY> (opcional): nivel de verbosidad, repítelo para aumentar el nivel { -v INFO, -vv DEBUG } (por defecto
verbosidad ERROR)
--no-error-file <NO_ERROR_FILE> (opcional): no escribir un archivo con la lista de URL de capturas fallidas (por defecto falso)
-z, --single-output-file SINGLE_OUTPUT_FILE
<SINGLE_OUTPUT_FILE> (opcional): nombre de un archivo que será la salida única de todas las entradas. Ej. test.png
Parámetros de procesamiento de entrada:
-p, --port PORT <PORT> (opcional): usar el puerto especificado para cada objetivo en la lista de entrada. Ej: -p 80
-s, --ssl <SSL> (opcional): forzar SSL/TLS para cada conexión
-m, --multiprotocol <MULTIPROTOCOL> (opcional): realizar capturas sobre HTTP y HTTPS para cada objetivo
Parámetros del renderizador de capturas:
-r, --renderer {phantomjs,chrome,chromium,edge,firefox}
<RENDERER> (opcional): renderizador a usar entre 'phantomjs' (heredado pero mejores resultados), 'chrome', 'chromium',
'edge', 'firefox' (versión > 57) (por defecto 'phantomjs')
--renderer-binary RENDERER_BINARY
<RENDERER_BINARY> (opcional): ruta al ejecutable del renderizador si no se encuentra en $PATH
--no-xserver <NO_X_SERVER> (opcional): si estás ejecutando sin un servidor X, usará xvfb-run para ejecutar el renderizador
(por defecto, intenta detectar si existe la variable de entorno DISPLAY)
Parámetros de imagen de captura:
--window-size WINDOW_SIZE
<WINDOW_SIZE> (opcional): ancho y alto de la captura de pantalla (por defecto '1200,800')
-f, --format {pdf,png,jpg,jpeg,bmp,ppm}
<FORMAT> (opcional, solo phantomjs): especificar un formato de archivo de imagen de salida, "pdf", "png", "jpg", "jpeg", "bmp"
o "ppm" (por defecto 'png')
-q, --quality [0-100]
<QUALITY> (opcional, solo phantomjs): especificar la calidad de la imagen de salida, un entero entre 0 y 100 (por defecto
75)
--ajax-max-timeouts AJAX_MAX_TIMEOUTS
<AJAX_MAX_TIMEOUTS> (opcional, solo phantomjs): por cada solicitud AJAX, y tiempo máximo de espera de URL en milisegundos
(por defecto '1400,1800')
--crop CROP <CROP> (opcional, solo phantomjs): rectángulo <t,l,w,h> para recortar la captura de pantalla (por defecto WINDOW_SIZE:
'0,0,w,h'), solo números, a(ncho) y a(lto). Ej. "10,20,w,h"
--custom-js CUSTOM_JS
<CUSTOM_JS> (opcional, solo phantomjs): ruta de un archivo que contiene código JavaScript a ejecutar antes
de tomar la captura. Ej: js.txt
Parámetros de etiqueta de captura:
-l, --label <LABEL> (opcional): para cada captura, crear otra que muestre dentro la URL objetivo (requiere
imagemagick)
--label-size LABEL_SIZE
<LABEL_SIZE> (opcional): tamaño de fuente para la etiqueta (por defecto 60)
--label-bg-color LABEL_BG_COLOR
<LABEL_BACKGROUND_COLOR> (opcional): color de fondo de la etiqueta de imagemagick (por defecto NavajoWhite)
--imagemagick-binary IMAGEMAGICK_BINARY
<LABEL_BINARY> (opcional): ruta al binario de imagemagick (magick o convert) si no se encuentra en $PATH
Parámetros HTTP:
-c, --cookie COOKIE <COOKIE_STRING> (opcional): cadena de cookie a añadir. Ej: -c "JSESSIONID=1234; YOLO=SWAG"
-a, --header HEADER <HEADER> (opcional): cabecera personalizada o adicional. Repite esta opción para cada cabecera. Ej: -a "Host:
localhost" -a "Foo: bar"
-u, --http-username HTTP_USERNAME
<HTTP_USERNAME> (opcional): especificar un nombre de usuario para Autenticación Básica HTTP.
-b, --http-password HTTP_PASSWORD
<HTTP_PASSWORD> (opcional): especificar una contraseña para Autenticación Básica HTTP.
Parámetros de conexión:
-P, --proxy PROXY <PROXY> (opcional): especificar un proxy. Ej: -P http://proxy.company.com:8080
-A, --proxy-auth PROXY_AUTH
<PROXY_AUTH> (opcional): proporciona información de autenticación para el proxy. Ej: -A user:password
-T, --proxy-type PROXY_TYPE
<PROXY_TYPE> (opcional): especifica el tipo de proxy, "http" (por defecto), "none" (deshabilitar completamente), o
"socks5". Ej: -T socks
-t, --timeout TIMEOUT
<TIMEOUT> (opcional): tiempo de espera de ejecución del renderizador en segundos (por defecto 30 seg)
list.txt
--------
http://google.fr
https://216.58.213.131
216.58.213.131
https://duckduckgo.com/robots.txt
Ejecución por defecto con una lista
-----------------------------
$ python webscreenshot.py -i list.txt
webscreenshot.py version 2.3
[+] 4 URLs a capturar
[+] 4 URLs reales capturadas
[+] 0 error(es)
Ejecución por defecto con una única URL
-----------------------------------
$ python webscreenshot.py -v google.fr
webscreenshot.py version 2.3
[INFO][General] 'google.fr' ha sido formateada como 'http://google.fr:80' con las opciones de anulación proporcionadas
[+] 1 URLs a capturar
[INFO][http://google.fr:80] Captura OK
[+] 1 URLs reales capturadas
[+] 0 error(es)
Ejecución con nivel de verbosidad aumentado
-----------------------------------
$ python webscreenshot.py -i list.txt -v
webscreenshot.py version 2.3
[INFO][General] 'http://google.fr' ha sido formateada como 'http://google.fr:80' con las opciones de anulación proporcionadas
[INFO][General] 'https://216.58.213.131' ha sido formateada como 'https://216.58.213.131:443' con las opciones de anulación proporcionadas
[INFO][General] '216.58.213.131' ha sido formateada como 'http://216.58.213.131:80' con las opciones de anulación proporcionadas
[INFO][General] 'https://duckduckgo.com/robots.txt' ha sido formateada como 'https://duckduckgo.com:443/robots.txt' con las opciones de anulación proporcionadas
[+] 4 URLs a capturar
[INFO][https://duckduckgo.com:443/robots.txt] Captura OK
[INFO][http://216.58.213.131:80] Captura OK
[INFO][https://216.58.213.131:443] Captura OK
[INFO][http://google.fr:80] Captura OK
[+] 4 URLs reales capturadas
[+] 0 error(es)
Resultados
-------
$ ls -l screenshots/
total 187
-rwxrwxrwx 1 root root 53805 May 19 16:04 http_216.58.213.131_80.png
-rwxrwxrwx 1 root root 53805 May 19 16:05 http_google.fr_80.png
-rwxrwxrwx 1 root root 53805 May 19 16:04 https_216.58.213.131_443.png
-rwxrwxrwx 1 root root 27864 May 19 16:04 https_duckduckgo.com_443_robots.txt.png
Las opciones no listadas aquí abajo son soportadas por todos los renderizadores actuales
pip install webscreenshot y luego usar directamente $ webscreenshotpip install -r requirements.txt y luego python webscreenshot.pyxvfb si quieres ejecutar webscreenshot en un sistema operativo sin interfaz gráfica: usa la opción --no-xserver de webscreenshot para facilitar todoImageMagick (magick o convert) si deseas incrustar la URL en las capturas con la opción : sigue la webscreenshot es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la GNU General Public License publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.
webscreenshot se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR.
Consulta la GNU General Public License para más detalles.
Deberías haber recibido una copia de la GNU General Public License junto con webscreenshot. Si no es así, visita http://www.gnu.org/licenses/.
| Categoría de opción | Opción | Renderizador PhantomJS | Renderizador Chromium / Chrome / Edge Chromium | Renderizador Firefox |
|---|
| Parámetros de captura | ||||
formato (-f) | Sí | No | No | |
calidad (-q) | Sí | No | No | |
tiempos de espera de ajax y solicitudes (--ajax-max-timeouts) | Sí | No | No | |
recorte (--crop) | Sí | No | No | |
JavaScript personalizado (--custom-js) | Sí | No | No | |
| Parámetros HTTP | ||||
cookie (-c) | Sí | No | No | |
cabecera (-a) | Sí | No | No | |
http_username (-u) | Sí | No | No | |
http_password (-b) | Sí | No | No | |
| Parámetros de conexión | ||||
proxy (-P) | Sí | Sí | No | |
proxy_auth (-A) | Sí | No | No | |
proxy_type (-T) | Sí | Sí | No | |
| Capacidad de capturar un sitio web HTTPS con un certificado no firmado públicamente | Sí | No | No |
--label