一个基于 url-to-image PhantomJS 脚本的简单工具,用于对网站列表进行截图。
--ignore-certificate-errors 选项不起作用,而且将来也不起作用:解决方法是使用合适的 webdriver,但到目前为止,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 }(默认详细程度 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>(可选):如果无法在 $PATH 中找到 ImageMagick 二进制文件(magick 或 convert),则指定其路径
HTTP 参数:
-c, --cookie COOKIE <COOKIE_STRING>(可选):添加的 Cookie 字符串。例如:-c "JSESSIONID=1234; YOLO=SWAG"
-a, --header HEADER <HEADER>(可选):自定义或额外的 HTTP 头。每个头重复此选项。例如:-a "Host: localhost" -a "Foo: bar"
-u, --http-username HTTP_USERNAME
<HTTP_USERNAME>(可选):指定 HTTP 基本认证的用户名。
-b, --http-password HTTP_PASSWORD
<HTTP_PASSWORD>(可选):指定 HTTP 基本认证的密码。
连接参数:
-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.pywebscreenshot,则需要 xvfb:使用 --no-xserver 选项可以简化操作--label 选项在截图中嵌入 URL,需要 ImageMagick 二进制文件(magick 或 convert):请遵循安装指南webscreenshot 是自由软件:你可以根据自由软件基金会发布的 GNU 通用公共许可证(许可证版本 3 或(根据你的选择)任何更高版本)的条款重新分发和/或修改它。
webscreenshot 的分发是希望它有用,但没有任何担保;甚至没有适销性或针对特定用途的暗示担保。
更多详细信息请参阅 GNU 通用公共许可证。
你应该已经随 webscreenshot 收到了一份 GNU 通用公共许可证的副本。 如果没有,请访问 http://www.gnu.org/licenses/。
| 选项类别 | 选项 | PhantomJS 渲染器 | Chromium / Chrome / Edge Chromium 渲染器 | Firefox 渲染器 |
|---|
| 截图参数 | ||||
format (-f) | 是 | 否 | 否 | |
quality (-q) | 是 | 否 | 否 | |
ajax 和请求超时 (--ajax-max-timeouts) | 是 | 否 | 否 | |
crop (--crop) | 是 | 否 | 否 | |
自定义 JavaScript (--custom-js) | 是 | 否 | 否 | |
| HTTP 参数 | ||||
cookie (-c) | 是 | 否 | 否 | |
header (-a) | 是 | 否 | 否 | |
http_username (-u) | 是 | 否 | 否 | |
http_password (-b) | 是 | 否 | 否 | |
| 连接参数 | ||||
proxy (-P) | 是 | 是 | 否 | |
proxy_auth (-A) | 是 | 否 | 否 | |
proxy_type (-T) | 是 | 是 | 否 | |
| 能够截取使用非公开签名证书的 HTTPS 网站截图 | 是 | 否 | 否 |