
Um script simples para capturar a tela de uma lista de sites.
Um script simples para capturar tela de uma lista de sites, baseado no script url-to-image do PhantomJS.
--ignore-certificate-errors não funciona e nunca mais funcionará: a solução é usar um webdriver adequado, mas até o momento o webscreenshot não pretende suportar este método bastante complexo que requer algumas ferramentas de terceiros.ImageMagick)Coloque seus alvos em um arquivo de texto e passe-o com a opção -i, ou como um argumento posicional se você tiver apenas uma única URL.
As capturas estarão disponíveis, por padrão, no seu diretório ./screenshots/ atual.
Os formatos de entrada aceitos são os seguintes:
http(s)://dominio_ou_ip:porta(/recurso)
dominio_ou_ip:porta(/recurso)
dominio_ou_ip(/recurso)
webscreenshot.py versão 2.96
uso: 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]
opções:
-h, --help mostra esta mensagem de ajuda e sai
Parâmetros principais:
URL Único URL alvo dado como argumento posicional
-i, --input-file INPUT_FILE
<INPUT_FILE> arquivo de texto contendo a lista de alvos. Ex: list.txt
-o, --output-directory OUTPUT_DIRECTORY
<OUTPUT_DIRECTORY> (opcional): diretório de saída das capturas (padrão './screenshots/')
-w, --workers WORKERS
<WORKERS> (opcional): número de workers de execução paralela (padrão 4)
-v, --verbosity <VERBOSITY> (opcional): nível de verbosidade, repita para aumentar o nível { -v INFO, -vv DEBUG } (verbosidade
padrão ERROR)
--no-error-file <NO_ERROR_FILE> (opcional): não escrever um arquivo com a lista de URLs de capturas com falha (padrão false)
-z, --single-output-file SINGLE_OUTPUT_FILE
<SINGLE_OUTPUT_FILE> (opcional): nome de um arquivo que será a única saída de todas as entradas. Ex. test.png
Parâmetros de processamento de entrada:
-p, --port PORT <PORT> (opcional): usar a porta especificada para cada alvo na lista de entrada. Ex: -p 80
-s, --ssl <SSL> (opcional): forçar SSL/TLS para toda conexão
-m, --multiprotocol <MULTIPROTOCOL> (opcional): realizar capturas sobre HTTP e HTTPS para cada alvo
Parâmetros do renderizador de captura:
-r, --renderer {phantomjs,chrome,chromium,edge,firefox}
<RENDERER> (opcional): renderizador a usar entre 'phantomjs' (legado, mas melhores resultados), 'chrome', 'chromium',
'edge', 'firefox' (versão > 57) (padrão 'phantomjs')
--renderer-binary RENDERER_BINARY
<RENDERER_BINARY> (opcional): caminho para o executável do renderizador se ele não for encontrado no $PATH
--no-xserver <NO_X_SERVER> (opcional): se você estiver executando sem um servidor X, usará xvfb-run para executar o renderizador
(por padrão, tenta detectar se a variável de ambiente DISPLAY existe)
Parâmetros da imagem de captura:
--window-size WINDOW_SIZE
<WINDOW_SIZE> (opcional): largura e altura da captura de tela (padrão '1200,800')
-f, --format {pdf,png,jpg,jpeg,bmp,ppm}
<FORMAT> (opcional, apenas phantomjs): especificar um formato de arquivo de imagem de saída, "pdf", "png", "jpg", "jpeg", "bmp"
ou "ppm" (padrão 'png')
-q, --quality [0-100]
<QUALITY> (opcional, apenas phantomjs): especificar a qualidade da imagem de saída, um inteiro entre 0 e 100 (padrão
75)
--ajax-max-timeouts AJAX_MAX_TIMEOUTS
<AJAX_MAX_TIMEOUTS> (opcional, apenas phantomjs): por requisição AJAX, e timeout máximo de URL em milissegundos
(padrão '1400,1800')
--crop CROP <CROP> (opcional, apenas phantomjs): retângulo <t,l,w,h> para recortar a captura de tela (padrão WINDOW_SIZE:
'0,0,w,h'), apenas números, l(argura) e a(ltura). Ex. "10,20,w,h"
--custom-js CUSTOM_JS
<CUSTOM_JS> (opcional, apenas phantomjs): caminho de um arquivo contendo código JavaScript a ser executado antes
de tirar a captura. Ex: js.txt
Parâmetros de rótulo da captura:
-l, --label <LABEL> (opcional): para cada captura, criar outra exibindo dentro a URL do alvo (requer
imagemagick)
--label-size LABEL_SIZE
<LABEL_SIZE> (opcional): tamanho da fonte para o rótulo (padrão 60)
--label-bg-color LABEL_BG_COLOR
<LABEL_BACKGROUND_COLOR> (opcional): cor de fundo do rótulo no imagemagick (padrão NavajoWhite)
--imagemagick-binary IMAGEMAGICK_BINARY
<LABEL_BINARY> (opcional): caminho para o binário do imagemagick (magick ou convert) se ele não for encontrado no $PATH
Parâmetros HTTP:
-c, --cookie COOKIE <COOKIE_STRING> (opcional): string de cookie a adicionar. Ex: -c "JSESSIONID=1234; YOLO=SWAG"
-a, --header HEADER <HEADER> (opcional): cabeçalho personalizado ou adicional. Repita esta opção para cada cabeçalho. Ex: -a "Host:
localhost" -a "Foo: bar"
-u, --http-username HTTP_USERNAME
<HTTP_USERNAME> (opcional): especificar um nome de usuário para Autenticação Básica HTTP.
-b, --http-password HTTP_PASSWORD
<HTTP_PASSWORD> (opcional): especificar uma senha para Autenticação Básica HTTP.
Parâmetros de conexão:
-P, --proxy PROXY <PROXY> (opcional): especificar um proxy. Ex: -P http://proxy.company.com:8080
-A, --proxy-auth PROXY_AUTH
<PROXY_AUTH> (opcional): fornece informações de autenticação para o proxy. Ex: -A user:password
-T, --proxy-type PROXY_TYPE
<PROXY_TYPE> (opcional): especifica o tipo de proxy, "http" (padrão), "none" (desabilitar completamente), ou
"socks5". Ex: -T socks
-t, --timeout TIMEOUT
<TIMEOUT> (opcional): timeout de execução do renderizador em segundos (padrão 30 seg)
list.txt
--------
http://google.fr
https://216.58.213.131
216.58.213.131
https://duckduckgo.com/robots.txt
Execução padrão com uma lista
-----------------------------
$ python webscreenshot.py -i list.txt
webscreenshot.py versão 2.3
[+] 4 URLs a serem capturadas
[+] 4 URLs reais capturadas
[+] 0 erro(s)
Execução padrão com uma única URL
-----------------------------------
$ python webscreenshot.py -v google.fr
webscreenshot.py versão 2.3
[INFO][General] 'google.fr' foi formatado como 'http://google.fr:80' com as opções de substituição fornecidas
[+] 1 URLs a serem capturadas
[INFO][http://google.fr:80] Captura OK
[+] 1 URLs reais capturadas
[+] 0 erro(s)
Execução com nível de verbosidade aumentado
-----------------------------------
$ python webscreenshot.py -i list.txt -v
webscreenshot.py versão 2.3
[INFO][General] 'http://google.fr' foi formatado como 'http://google.fr:80' com as opções de substituição fornecidas
[INFO][General] 'https://216.58.213.131' foi formatado como 'https://216.58.213.131:443' com as opções de substituição fornecidas
[INFO][General] '216.58.213.131' foi formatado como 'http://216.58.213.131:80' com as opções de substituição fornecidas
[INFO][General] 'https://duckduckgo.com/robots.txt' foi formatado como 'https://duckduckgo.com:443/robots.txt' com as opções de substituição fornecidas
[+] 4 URLs a serem capturadas
[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 reais capturadas
[+] 0 erro(s)
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
Opções não listadas abaixo são suportadas por todos os renderizadores atuais
pip install webscreenshot e depois usar diretamente $ webscreenshotpip install -r requirements.txt e depois python webscreenshot.pyxvfb se quiser executar webscreenshot em um sistema operacional sem interface gráfica: use a opção --no-xserver do webscreenshot para facilitar tudoImageMagick (magick ou convert) se quiser incorporar URL nas capturas com a opção --label: siga o webscreenshot é um software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior.
webscreenshot é distribuído na esperança de que seja útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO.
Consulte a Licença Pública Geral GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com o webscreenshot. Se não, veja http://www.gnu.org/licenses/.
| Categoria da opção | Opção | Renderizador PhantomJS | Renderizador Chromium / Chrome / Edge Chromium | Renderizador Firefox |
|---|
| Parâmetros de captura | ||||
format (-f) | Sim | Não | Não | |
quality (-q) | Sim | Não | Não | |
ajax e request timeouts (--ajax-max-timeouts) | Sim | Não | Não | |
crop (--crop) | Sim | Não | Não | |
JavaScript personalizado (--custom-js) | Sim | Não | Não | |
| Parâmetros HTTP | ||||
cookie (-c) | Sim | Não | Não | |
header (-a) | Sim | Não | Não | |
http_username (-u) | Sim | Não | Não | |
http_password (-b) | Sim | Não | Não | |
| Parâmetros de conexão | ||||
proxy (-P) | Sim | Sim | Não | |
proxy_auth (-A) | Sim | Não | Não | |
proxy_type (-T) | Sim | Sim | Não | |
| Capacidade de capturar um site HTTPS com um certificado não assinado publicamente | Sim | Não | Não |