
Простой скрипт для создания скриншотов списка веб-сайтов
Простой скрипт для создания скриншотов списка веб-сайтов, основанный на скрипте PhantomJS url-to-image.
--ignore-certificate-errors не работает и больше никогда не будет работать: решение — использовать подходящий веб-драйвер, но на данный момент webscreenshot не ставит целью поддержку этого довольно сложного метода, требующего сторонних инструментов.ImageMagick)Поместите цели в текстовый файл и передайте его с опцией -i, или как позиционный аргумент, если у вас только один URL.
Скриншоты по умолчанию будут сохранены в текущую директорию ./screenshots/.
Принимаются следующие форматы входных данных:
http(s)://domain_or_ip:port(/resource)
domain_or_ip:port(/resource)
domain_or_ip(/resource)
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 показать это справочное сообщение и выйти
Основные параметры:
URL Одиночный URL-адрес цели, задаваемый как позиционный аргумент
-i, --input-file INPUT_FILE
<INPUT_FILE> текстовый файл, содержащий список целей. Пример: list.txt
-o, --output-directory OUTPUT_DIRECTORY
<OUTPUT_DIRECTORY> (необязательно): директория для вывода скриншотов (по умолчанию './screenshots/')
-w, --workers WORKERS
<WORKERS> (необязательно): количество параллельных рабочих процессов (по умолчанию 4)
-v, --verbosity <VERBOSITY> (необязательно): уровень подробности, повторите для повышения уровня { -v INFO, -vv DEBUG } (по умолчанию
verbosity ERROR)
--no-error-file <NO_ERROR_FILE> (необязательно): не записывать файл со списком URL-адресов, для которых скриншот не удался (по умолчанию false)
-z, --single-output-file SINGLE_OUTPUT_FILE
<SINGLE_OUTPUT_FILE> (необязательно): имя файла, который будет единым выходным файлом для всех входных данных. Пример: test.png
Параметры обработки ввода:
-p, --port PORT <PORT> (необязательно): использовать указанный порт для каждой цели в списке ввода. Пример: -p 80
-s, --ssl <SSL> (необязательно): принудительно включить SSL/TLS для каждого соединения
-m, --multiprotocol <MULTIPROTOCOL> (необязательно): создавать скриншоты по HTTP и HTTPS для каждой цели
Параметры рендерера скриншотов:
-r, --renderer {phantomjs,chrome,chromium,edge,firefox}
<RENDERER> (необязательно): используемый рендерер: 'phantomjs' (устаревший, но лучшие результаты), 'chrome', 'chromium',
'edge', 'firefox' (версия > 57) (по умолчанию 'phantomjs')
--renderer-binary RENDERER_BINARY
<RENDERER_BINARY> (необязательно): путь к исполняемому файлу рендерера, если он не найден в $PATH
--no-xserver <NO_X_SERVER> (необязательно): если вы работаете без X-сервера, будет использоваться xvfb-run для выполнения рендерера
(по умолчанию пытается определить, существует ли переменная окружения DISPLAY
Параметры изображения скриншота:
--window-size WINDOW_SIZE
<WINDOW_SIZE> (необязательно): ширина и высота захвата экрана (по умолчанию '1200,800')
-f, --format {pdf,png,jpg,jpeg,bmp,ppm}
<FORMAT> (необязательно, только phantomjs): указать формат выходного файла изображения: "pdf", "png", "jpg", "jpeg", "bmp"
или "ppm" (по умолчанию 'png')
-q, --quality [0-100]
<QUALITY> (необязательно, только phantomjs): указать качество выходного изображения, целое число от 0 до 100 (по умолчанию
75)
--ajax-max-timeouts AJAX_MAX_TIMEOUTS
<AJAX_MAX_TIMEOUTS> (необязательно, только phantomjs): тайм-аут на каждый AJAX-запрос и максимальный тайм-аут URL в миллисекундах
(по умолчанию '1400,1800')
--crop CROP <CROP> (необязательно, только phantomjs): прямоугольник <t,l,w,h> для обрезки захваченного экрана (по умолчанию соответствует WINDOW_SIZE:
'0,0,w,h'), только числа, w(idth) и h(eight). Пример: "10,20,w,h"
--custom-js CUSTOM_JS
<CUSTOM_JS> (необязательно, только phantomjs): путь к файлу, содержащему JavaScript-код для выполнения перед
созданием скриншота. Пример: js.txt
Параметры меток скриншотов:
-l, --label <LABEL> (необязательно): для каждого скриншота создать дополнительный с отображённым внутри URL-адресом цели (требуется
imagemagick)
--label-size LABEL_SIZE
<LABEL_SIZE> (необязательно): размер шрифта для метки (по умолчанию 60)
--label-bg-color LABEL_BG_COLOR
<LABEL_BACKGROUND_COLOR> (необязательно): цвет фона метки в imagemagick (по умолчанию NavajoWhite)
--imagemagick-binary IMAGEMAGICK_BINARY
<LABEL_BINARY> (необязательно): путь к исполняемому файлу imagemagick (magick или convert), если он не найден в $PATH
Параметры HTTP:
-c, --cookie COOKIE <COOKIE_STRING> (необязательно): строка cookie для добавления. Пример: -c "JSESSIONID=1234; YOLO=SWAG"
-a, --header HEADER <HEADER> (необязательно): пользовательский или дополнительный заголовок. Повторите эту опцию для каждого заголовка. Пример: -a "Host:
localhost" -a "Foo: bar"
-u, --http-username HTTP_USERNAME
<HTTP_USERNAME> (необязательно): указать имя пользователя для HTTP Basic Authentication.
-b, --http-password HTTP_PASSWORD
<HTTP_PASSWORD> (необязательно): указать пароль для HTTP Basic Authentication.
Параметры соединения:
-P, --proxy PROXY <PROXY> (необязательно): указать прокси. Пример: -P http://proxy.company.com:8080
-A, --proxy-auth PROXY_AUTH
<PROXY_AUTH> (необязательно): предоставляет информацию для аутентификации на прокси. Пример: -A user:password
-T, --proxy-type PROXY_TYPE
<PROXY_TYPE> (необязательно): указывает тип прокси: "http" (по умолчанию), "none" (полное отключение) или
"socks5". Пример: -T socks
-t, --timeout TIMEOUT
<TIMEOUT> (необязательно): тайм-аут выполнения рендерера в секундах (по умолчанию 30 сек)
list.txt
--------
http://google.fr
https://216.58.213.131
216.58.213.131
https://duckduckgo.com/robots.txt
Обычный запуск со списком
-----------------------------
$ python webscreenshot.py -i list.txt
webscreenshot.py version 2.3
[+] 4 URLs to be screenshot
[+] 4 actual URLs screenshot
[+] 0 error(s)
Обычный запуск с одним URL
-----------------------------------
$ python webscreenshot.py -v google.fr
webscreenshot.py version 2.3
[INFO][General] 'google.fr' has been formatted as 'http://google.fr:80' with supplied overriding options
[+] 1 URLs to be screenshot
[INFO][http://google.fr:80] Screenshot OK
[+] 1 actual URLs screenshot
[+] 0 error(s)
Запуск с повышенным уровнем подробности
-----------------------------------
$ python webscreenshot.py -i list.txt -v
webscreenshot.py version 2.3
[INFO][General] 'http://google.fr' has been formatted as 'http://google.fr:80' with supplied overriding options
[INFO][General] 'https://216.58.213.131' has been formatted as 'https://216.58.213.131:443' with supplied overriding options
[INFO][General] '216.58.213.131' has been formatted as 'http://216.58.213.131:80' with supplied overriding options
[INFO][General] 'https://duckduckgo.com/robots.txt' has been formatted as 'https://duckduckgo.com:443/robots.txt' with supplied overriding options
[+] 4 URLs to be screenshot
[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 actual URLs screenshot
[+] 0 error(s)
Результаты
-------
$ 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
Опции, не перечисленные ниже, поддерживаются всеми текущими рендерерами
pip install webscreenshot, затем сразу используйте $ webscreenshotpip install -r requirements.txt, затем python webscreenshot.pyxvfb, если вы хотите запускать webscreenshot в безголовой ОС: используйте опцию --no-xserver в webscreenshot для упрощенияImageMagick (magick или convert), если вы хотите встраивать URL в скриншоты с помощью опции --label: следуйте webscreenshot является свободным программным обеспечением: вы можете распространять и/или изменять его в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения, либо версии 3 этой лицензии, либо (по вашему выбору) любой более поздней версии.
webscreenshot распространяется в надежде, что он будет полезен, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ.
См. Стандартную общественную лицензию GNU для более подробной информации.
Вы должны были получить копию Стандартной общественной лицензии GNU вместе с webscreenshot. Если нет, см. http://www.gnu.org/licenses/.
| Категория опции | Опция | Рендерер PhantomJS | Рендерер Chromium / Chrome / Edge Chromium | Рендерер Firefox |
|---|
| Параметры скриншота | ||||
format (-f) | Да | Нет | Нет | |
quality (-q) | Да | Нет | Нет | |
ajax и тайм-ауты запросов (--ajax-max-timeouts) | Да | Нет | Нет | |
обрезка (--crop) | Да | Нет | Нет | |
пользовательский JavaScript (--custom-js) | Да | Нет | Нет | |
| Параметры HTTP | ||||
cookie (-c) | Да | Нет | Нет | |
заголовок (-a) | Да | Нет | Нет | |
http_username (-u) | Да | Нет | Нет | |
http_password (-b) | Да | Нет | Нет | |
| Параметры соединения | ||||
прокси (-P) | Да | Да | Нет | |
proxy_auth (-A) | Да | Нет | Нет | |
proxy_type (-T) | Да | Да | Нет | |
| Возможность создания скриншота HTTPS-сайта с сертификатом, не подписанным общедоступным центром сертификации | Да | Нет | Нет |