
Un semplice script per fare screenshot di una lista di siti web.
Un semplice script per fare screenshot di una lista di siti web, basato sullo script PhantomJS url-to-image.
--ignore-certificate-errors non funziona e non funzionerà mai più: la soluzione è utilizzare un webdriver appropriato, ma ad oggi webscreenshot non punta a supportare questo metodo piuttosto complesso che richiede strumenti di terze parti.ImageMagick)Inserisci i tuoi target in un file di testo e passalo con l'opzione -i, o come argomento posizionale se hai un singolo URL.
Gli screenshot saranno disponibili, per impostazione predefinita, nella directory corrente ./screenshots/.
I formati di input accettati sono i seguenti:
http(s)://dominio_o_ip:porta(/risorsa)
dominio_o_ip:porta(/risorsa)
dominio_o_ip(/risorsa)
webscreenshot.py versione 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 mostra questo messaggio di aiuto ed esce
Parametri principali:
URL Singolo URL target dato come argomento posizionale
-i, --input-file INPUT_FILE
<INPUT_FILE> file di testo contenente la lista dei target. Es: list.txt
-o, --output-directory OUTPUT_DIRECTORY
<OUTPUT_DIRECTORY> (opzionale): directory di output degli screenshot (default './screenshots/')
-w, --workers WORKERS
<WORKERS> (opzionale): numero di worker in esecuzione parallela (default 4)
-v, --verbosity <VERBOSITY> (opzionale): livello di verbosità, ripetere per aumentare il livello { -v INFO, -vv DEBUG } (default
verbosity ERROR)
--no-error-file <NO_ERROR_FILE> (opzionale): non scrivere un file con la lista degli URL degli screenshot falliti (default false)
-z, --single-output-file SINGLE_OUTPUT_FILE
<SINGLE_OUTPUT_FILE> (opzionale): nome di un file che sarà il singolo output di tutti gli input. Es. test.png
Parametri di elaborazione dell'input:
-p, --port PORT <PORT> (opzionale): usa la porta specificata per ogni target nella lista di input. Es: -p 80
-s, --ssl <SSL> (opzionale): forza SSL/TLS per ogni connessione
-m, --multiprotocol <MULTIPROTOCOL> (opzionale): esegue screenshot su HTTP e HTTPS per ogni target
Parametri del renderer degli screenshot:
-r, --renderer {phantomjs,chrome,chromium,edge,firefox}
<RENDERER> (opzionale): renderer da usare tra 'phantomjs' (legacy ma migliori risultati), 'chrome', 'chromium',
'edge', 'firefox' (versione > 57) (default 'phantomjs')
--renderer-binary RENDERER_BINARY
<RENDERER_BINARY> (opzionale): percorso dell'eseguibile del renderer se non può essere trovato in $PATH
--no-xserver <NO_X_SERVER> (opzionale): se stai eseguendo senza un server X, userà xvfb-run per eseguire il renderer
(per impostazione predefinita, prova a rilevare se la variabile d'ambiente DISPLAY esiste
Parametri dell'immagine dello screenshot:
--window-size WINDOW_SIZE
<WINDOW_SIZE> (opzionale): larghezza e altezza della cattura dello schermo (default '1200,800')
-f, --format {pdf,png,jpg,jpeg,bmp,ppm}
<FORMAT> (opzionale, solo phantomjs): specifica un formato file immagine di output, "pdf", "png", "jpg", "jpeg", "bmp"
o "ppm" (default 'png')
-q, --quality [0-100]
<QUALITY> (opzionale, solo phantomjs): specifica la qualità dell'immagine di output, un intero tra 0 e 100 (default
75)
--ajax-max-timeouts AJAX_MAX_TIMEOUTS
<AJAX_MAX_TIMEOUTS> (opzionale, solo phantomjs): per richiesta AJAX, e timeout massimo URL in millisecondi
(default '1400,1800')
--crop CROP <CROP> (opzionale, solo phantomjs): rettangolo <t,l,w,h> per ritagliare la cattura dello schermo (default a WINDOW_SIZE:
'0,0,w,h'), solo numeri, w(idt) e h(eight). Es. "10,20,w,h"
--custom-js CUSTOM_JS
<CUSTOM_JS> (opzionale, solo phantomjs): percorso di un file contenente codice JavaScript da eseguire prima
di scattare lo screenshot. Es: js.txt
Parametri dell'etichetta dello screenshot:
-l, --label <LABEL> (opzionale): per ogni screenshot, crearne un altro che mostra all'interno l'URL target (richiede
imagemagick)
--label-size LABEL_SIZE
<LABEL_SIZE> (opzionale): dimensione del carattere per l'etichetta (default 60)
--label-bg-color LABEL_BG_COLOR
<LABEL_BACKGROUND_COLOR> (opzionale): colore di sfondo dell'etichetta per imagemagick (default NavajoWhite)
--imagemagick-binary IMAGEMAGICK_BINARY
<LABEL_BINARY> (opzionale): percorso del binario imagemagick (magick o convert) se non può essere trovato in $PATH
Parametri HTTP:
-c, --cookie COOKIE <COOKIE_STRING> (opzionale): stringa di cookie da aggiungere. Es: -c "JSESSIONID=1234; YOLO=SWAG"
-a, --header HEADER <HEADER> (opzionale): intestazione personalizzata o aggiuntiva. Ripeti questa opzione per ogni intestazione. Es: -a "Host:
localhost" -a "Foo: bar"
-u, --http-username HTTP_USERNAME
<HTTP_USERNAME> (opzionale): specifica un nome utente per l'autenticazione HTTP Basic.
-b, --http-password HTTP_PASSWORD
<HTTP_PASSWORD> (opzionale): specifica una password per l'autenticazione HTTP Basic.
Parametri di connessione:
-P, --proxy PROXY <PROXY> (opzionale): specifica un proxy. Es: -P http://proxy.company.com:8080
-A, --proxy-auth PROXY_AUTH
<PROXY_AUTH> (opzionale): fornisce informazioni di autenticazione per il proxy. Es: -A user:password
-T, --proxy-type PROXY_TYPE
<PROXY_TYPE> (opzionale): specifica il tipo di proxy, "http" (default), "none" (disabilita completamente), o
"socks5". Es: -T socks
-t, --timeout TIMEOUT
<TIMEOUT> (opzionale): timeout di esecuzione del renderer in secondi (default 30 sec)
list.txt
--------
http://google.fr
https://216.58.213.131
216.58.213.131
https://duckduckgo.com/robots.txt
Esecuzione predefinita con una lista
-----------------------------
$ python webscreenshot.py -i list.txt
webscreenshot.py versione 2.3
[+] 4 URL da screenshotare
[+] 4 screenshot URL effettivi
[+] 0 errore(i)
Esecuzione predefinita con un singolo URL
-----------------------------------
$ python webscreenshot.py -v google.fr
webscreenshot.py versione 2.3
[INFO][Generale] 'google.fr' è stato formattato come 'http://google.fr:80' con le opzioni di overriding fornite
[+] 1 URL da screenshotare
[INFO][http://google.fr:80] Screenshot OK
[+] 1 screenshot URL effettivo
[+] 0 errore(i)
Esecuzione con livello di verbosità aumentato
-----------------------------------
$ python webscreenshot.py -i list.txt -v
webscreenshot.py versione 2.3
[INFO][Generale] 'http://google.fr' è stato formattato come 'http://google.fr:80' con le opzioni di overriding fornite
[INFO][Generale] 'https://216.58.213.131' è stato formattato come 'https://216.58.213.131:443' con le opzioni di overriding fornite
[INFO][Generale] '216.58.213.131' è stato formattato come 'http://216.58.213.131:80' con le opzioni di overriding fornite
[INFO][Generale] 'https://duckduckgo.com/robots.txt' è stato formattato come 'https://duckduckgo.com:443/robots.txt' con le opzioni di overriding fornite
[+] 4 URL da screenshotare
[INFO][https://duckduckgo.com:443/robots.txt] Screenshot OK
[INFO][http://216.58.213.131:80] Screenshot OK
[INFO][https://216.58.213.131:443] Screenshot OK
[INFO][http://google.fr:80] Screenshot OK
[+] 4 screenshot URL effettivi
[+] 0 errore(i)
Risultati
-------
$ ls -l screenshots/
totale 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
Le opzioni non elencate qui sotto sono supportate da tutti i renderer attuali
pip install webscreenshot e poi usa direttamente $ webscreenshotpip install -r requirements.txt e poi python webscreenshot.pyxvfb se vuoi eseguire webscreenshot in un OS headless: usa l'opzione --no-xserver di webscreenshot per semplificare tuttoImageMagick (magick o convert) se vuoi incorporare l'URL negli screenshot con l'opzione --label: segui la webscreenshot è software libero: puoi ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License come pubblicata dalla Free Software Foundation, versione 3 della Licenza, o (a tua scelta) qualsiasi versione successiva.
webscreenshot è distribuito nella speranza che possa essere utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO.
Vedere la GNU General Public License per maggiori dettagli.
Dovresti aver ricevuto una copia della GNU General Public License insieme a webscreenshot. In caso contrario, visita http://www.gnu.org/licenses/.
| Categoria opzione | Opzione | Renderer PhantomJS | Renderer Chromium / Chrome / Edge Chromium | Renderer Firefox |
|---|
| Parametri screenshot | ||||
formato (-f) | Sì | No | No | |
qualità (-q) | Sì | No | No | |
timeout ajax e richieste (--ajax-max-timeouts) | Sì | No | No | |
ritaglio (--crop) | Sì | No | No | |
JavaScript personalizzato (--custom-js) | Sì | No | No | |
| Parametri HTTP | ||||
cookie (-c) | Sì | No | No | |
intestazione (-a) | Sì | No | No | |
http_username (-u) | Sì | No | No | |
http_password (-b) | Sì | No | No | |
| Parametri di connessione | ||||
proxy (-P) | Sì | Sì | No | |
proxy_auth (-A) | Sì | No | No | |
proxy_type (-T) | Sì | Sì | No | |
| Capacità di screenshotare un sito HTTPS con un certificato non firmato pubblicamente | Sì | No | No |