webscreenshot


Namewebscreenshot JSON
Version 2.96 PyPI version JSON
download
home_pageNone
SummaryA simple script to screenshot a list of websites
upload_time2025-10-19 11:36:57
maintainerNone
docs_urlNone
authorNone
requires_python>=3
licenseNone
keywords webscreenshot web screenshot phantomjs chrome edge chromium firefox lazy rendering cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            webscreenshot
=============

Description
-----------
A simple script to screenshot a list of websites, based on the [`url-to-image`](https://github.com/kimmobrunfeldt/url-to-image/) PhantomJS script.

Features
--------
* Integrating url-to-image *'lazy-rendering'* for AJAX resources
* Fully functional on Windows and Linux systems
* Cookie and custom HTTP header definition support for the PhantomJS renderer
* Multiprocessing and killing of unresponding processes after a user-definable timeout
* Accepting several formats as input target
* Customizing screenshot size (width, height), format and quality
* Mapping useful options of PhantomJS such as ignoring ssl error, proxy definition and proxy authentication, HTTP Basic Authentication
* Supports multiple renderers: 
  * **PhantomJS**, which is legacy and [abandoned](https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE) but the one still producing the best results
  * **Chromium, Chrome and Edge Chromium**, which will replace PhantomJS but currently have some limitations: screenshoting an HTTPS website not having a valid certificate, for instance a self-signed one, will produce an empty screenshot.  
    The reason is that the [`--ignore-certificate-errors`](https://groups.google.com/a/chromium.org/forum/#!topic/headless-dev/eiudRsYdc3A) option doesn't work and will never work anymore: the solution is to use a [proper webdriver](https://bugs.chromium.org/p/chromium/issues/detail?id=697721), but to date `webscreenshot` doesn't aim to support this _rather complex_ method requiring some third-party tools.
  * **Firefox** can also be used as a renderer but has some serious limitations (_so don't use it for the moment_):
    * Impossibility to perform multiple screenshots at the time: no multi-instance of the firefox process
    * No incognito mode, using webscreenshot will pollute your browsing history
* Embedding screenshot URL in image (requires `ImageMagick`) 

Usage
-----
Put your targets in a text file and pass it with the `-i` option, or as a positional argument if you have just a single URL.  
Screenshots will be available, by default, in your current ```./screenshots/``` directory.  
Accepted input formats are the following:
```
http(s)://domain_or_ip:port(/resource)
domain_or_ip:port(/resource)
domain_or_ip(/resource)
```

### Options
```
webscreenshot.py version 2.94

usage: webscreenshot.py [-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,edgechromium,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]

optional arguments:
  -h, --help            show this help message and exit

Main parameters:
  URL                   Single URL target given as a positional argument
  -i INPUT_FILE, --input-file INPUT_FILE
                        <INPUT_FILE> text file containing the target list. Ex: list.txt
  -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
                        <OUTPUT_DIRECTORY> (optional): screenshots output directory (default './screenshots/')
  -w WORKERS, --workers WORKERS
                        <WORKERS> (optional): number of parallel execution workers (default 4)
  -v, --verbosity       <VERBOSITY> (optional): verbosity level, repeat it to increase the level { -v INFO, -vv DEBUG } (default verbosity ERROR)
  --no-error-file       <NO_ERROR_FILE> (optional): do not write a file with the list of URL of failed screenshots (default false)
  -z SINGLE_OUTPUT_FILE, --single-output-file SINGLE_OUTPUT_FILE
                        <SINGLE_OUTPUT_FILE> (optional): name of a file which will be the single output of all inputs. Ex. test.png

Input processing parameters:
  -p PORT, --port PORT  <PORT> (optional): use the specified port for each target in the input list. Ex: -p 80
  -s, --ssl             <SSL> (optional): enforce SSL/TLS for every connection
  -m, --multiprotocol   <MULTIPROTOCOL> (optional): perform screenshots over HTTP and HTTPS for each target

Screenshot renderer parameters:
  -r {phantomjs,chrome,chromium,edgechromium,firefox}, --renderer {phantomjs,chrome,chromium,edgechromium,firefox}
                        <RENDERER> (optional): renderer to use among 'phantomjs' (legacy but best results), 'chrome', 'chromium', 'edgechromium', 'firefox'
                        (version > 57) (default 'phantomjs')
  --renderer-binary RENDERER_BINARY
                        <RENDERER_BINARY> (optional): path to the renderer executable if it cannot be found in $PATH
  --no-xserver          <NO_X_SERVER> (optional): if you are running without an X server, will use xvfb-run to execute the renderer (by default, trying to
                        detect if DISPLAY environment variable exists

Screenshot image parameters:
  --window-size WINDOW_SIZE
                        <WINDOW_SIZE> (optional): width and height of the screen capture (default '1200,800')
  -f {pdf,png,jpg,jpeg,bmp,ppm}, --format {pdf,png,jpg,jpeg,bmp,ppm}
                        <FORMAT> (optional, phantomjs only): specify an output image file format, "pdf", "png", "jpg", "jpeg", "bmp" or "ppm" (default
                        'png')
  -q [0-100], --quality [0-100]
                        <QUALITY> (optional, phantomjs only): specify the output image quality, an integer between 0 and 100 (default 75)
  --ajax-max-timeouts AJAX_MAX_TIMEOUTS
                        <AJAX_MAX_TIMEOUTS> (optional, phantomjs only): per AJAX request, and max URL timeout in milliseconds (default '1400,1800')
  --crop CROP           <CROP> (optional, phantomjs only): rectangle <t,l,w,h> to crop the screen capture to (default to WINDOW_SIZE: '0,0,w,h'), only
                        numbers, w(idth) and h(eight). Ex. "10,20,w,h"
  --custom-js CUSTOM_JS
                        <CUSTOM_JS> (optional, phantomjs only): path of a file containing JavaScript code to be executed before taking the screenshot. Ex:
                        js.txt

Screenshot label parameters:
  -l, --label           <LABEL> (optional): for each screenshot, create another one displaying inside the target URL (requires imagemagick)
  --label-size LABEL_SIZE
                        <LABEL_SIZE> (optional): font size for the label (default 60)
  --label-bg-color LABEL_BG_COLOR
                        <LABEL_BACKGROUND_COLOR> (optional): label imagemagick background color (default NavajoWhite)
  --imagemagick-binary IMAGEMAGICK_BINARY
                        <LABEL_BINARY> (optional): path to the imagemagick binary (magick or convert) if it cannot be found in $PATH

HTTP parameters:
  -c COOKIE, --cookie COOKIE
                        <COOKIE_STRING> (optional): cookie string to add. Ex: -c "JSESSIONID=1234; YOLO=SWAG"
  -a HEADER, --header HEADER
                        <HEADER> (optional): custom or additional header. Repeat this option for every header. Ex: -a "Host: localhost" -a "Foo: bar"
  -u HTTP_USERNAME, --http-username HTTP_USERNAME
                        <HTTP_USERNAME> (optional): specify a username for HTTP Basic Authentication.
  -b HTTP_PASSWORD, --http-password HTTP_PASSWORD
                        <HTTP_PASSWORD> (optional): specify a password for HTTP Basic Authentication.

Connection parameters:
  -P PROXY, --proxy PROXY
                        <PROXY> (optional): specify a proxy. Ex: -P http://proxy.company.com:8080
  -A PROXY_AUTH, --proxy-auth PROXY_AUTH
                        <PROXY_AUTH> (optional): provides authentication information for the proxy. Ex: -A user:password
  -T PROXY_TYPE, --proxy-type PROXY_TYPE
                        <PROXY_TYPE> (optional): specifies the proxy type, "http" (default), "none" (disable completely), or "socks5". Ex: -T socks
  -t TIMEOUT, --timeout TIMEOUT
                        <TIMEOUT> (optional): renderer execution timeout in seconds (default 30 sec)
```

### Examples
```
list.txt
--------
http://google.fr
https://216.58.213.131
216.58.213.131
https://duckduckgo.com/robots.txt


Default execution with a list
-----------------------------
$ python webscreenshot.py -i list.txt
webscreenshot.py version 2.3

[+] 4 URLs to be screenshot
[+] 4 actual URLs screenshot
[+] 0 error(s)


Default execution with a single 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)


Increasing verbosity level execution
-----------------------------------
$ 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)


Results
-------
$ 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
```
  

### Supported options by renderers
Options not listed here below are supported by every current renderer  

| **Option category**   | **Option**                                                                   | **PhantomJS renderer** | **Chromium / Chrome / Edge Chromium renderer** | **Firefox renderer** |
|:---------------------:|------------------------------------------------------------------------------|:----------------------:|:------------------------------:|:--------------------:|
| **Screenshot parameters**   |                                                                              |                        |                                |                      |
|                       | format (`-f`)                                                                  | [**Yes**](https://web.archive.org/web/20200111184123/https://phantomjs.org/api/webpage/method/render.html)                    | No                             | No                   |
|                       | quality (`-q`)                                                                  | [**Yes**](https://web.archive.org/web/20200111184123/https://phantomjs.org/api/webpage/method/render.html)                    | No                             | No                   
|                       | ajax and request timeouts (`--ajax-max-timeouts`)                                         | **Yes**                    | No                             | No                   
|                       | crop (`--crop`)                                                                  | [**Yes**](https://web.archive.org/web/20200111184050/https://phantomjs.org/api/webpage/property/clip-rect.html)                    | No                             | No                   
|                       | custom JavaScript (`--custom-js`)                                                                  | [**Yes**](https://web.archive.org/web/20200823123026/https://phantomjs.org/api/webpage/method/evaluate-java-script.html)                    | No                             | No                   
|                       |                                                                              |                        |                                |                      |
| **HTTP parameters**   |                                                                              |                        |                                |                      |
|                       | cookie (`-c`)                                                                  | **Yes**                    | No                             | No                   |
|                       | header (`-a`)                                                                  | **Yes**                    | No                             | No                   |
|                       | http_username (`-u`)                                                           | **Yes**                    | No                             | No                   |
|                       | http_password (`-b`)                                                           | **Yes**                    | No                             | No                   |
|                       |                                                                              |                        |                                |                      |
| **Connection parameters** |                                                                              |                        |                                |                      |
|                       | proxy (`-P`)                                                                   | **Yes**                    | **Yes**                            | No                   |
|                       | proxy_auth (`-A`)                                                              | **Yes**                    | No                             | No                   |
|                       | proxy_type (`-T`)                                                              | **Yes**                    | [**Yes**](https://github.com/maaaaz/webscreenshot/pull/51)                             | No                   |
|                       |                                                                              |                        |                                |                      |
|                       | Ability to screenshot a HTTPS website with a non-publicly-signed certificate | **Yes**                    | No                             | No                   |
  
  
Requirements
------------
* A Python interpreter with version 2.7 or 3.X
* The webscreenshot python script: 
  * The **easiest way** to setup it: `pip install webscreenshot` and then directly use `$ webscreenshot` 
  * Or git clone that repository and `pip install -r requirements.txt` and then `python webscreenshot.py`
* The PhantomJS tool with at least version 2: follow the [installation guide](https://github.com/maaaaz/webscreenshot/wiki/Phantomjs-installation) and check the [FAQ](https://github.com/maaaaz/webscreenshot/wiki/FAQ) if necessary
* Chrome, Chromium or Firefox > 57 if you want to use one of these renderers
* `xvfb` if you want to run `webscreenshot` in an headless OS: use the `--no-xserver` webscreenshot option to ease everything
* `ImageMagick` binary (`magick` or `convert`) if you want to embed URL in screenshots with the `--label` option: follow the [installation guide](https://github.com/maaaaz/webscreenshot/wiki/ImageMagick-installation)
* Check the [FAQ](https://github.com/maaaaz/webscreenshot/wiki/FAQ) before reporting issues
  

Changelog
---------
* version 2.96 - 10/19/2025: Dropping Python v2
* version 2.95 - 10/18/2025: Fixing phantomjs bug when not finding OpenSSL configuration
* version 2.94 - 08/23/2020: Added custom-js and single output file options
* version 2.93 - 08/16/2020: Added support of Python 3.8 and Microsoft Edge Chromium ; file output for failed webscreenshots ; filename length limitation for long URL 
* version 2.92 - 06/21/2020: no_xserver option autodetection
* version 2.91 - 05/08/2020: Multiprotocol mode fix
* version 2.9 - 01/26/2020: Few fixes
* version 2.8 - 01/11/2020: Few fixes, ajax timeouts + crop + label size + label font options added, default values for ajaxTimeout and maxTimeout changed 
* version 2.7 - 01/04/2020: URL embedding in screenshot option added
* version 2.6 - 12/27/2019: Few fixes
* version 2.5 - 09/22/2019: Image quality and format options added, PhantomJS useragent updated, modern TLD support
* version 2.4 - 05/30/2019: Few fixes for Windows support
* version 2.3 - 05/19/2019: Python 3 compatibility, Firefox renderer added, no-xserver option added
* version 2.2 - 08/13/2018: Chrome and Chromium renderers support and single URL support
* version 2.1 - 01/14/2018: Multiprotocol option addition and PyPI packaging
* version 2.0 - 03/08/2017: Adding proxy-type option
* version 1.9 - 01/10/2017: Using ALL SSL/TLS ciphers
* version 1.8 - 07/05/2015: Option groups definition
* version 1.7 - 06/28/2015: HTTP basic authentication support + loglevel option changed to verbosity
* version 1.6 - 04/23/2015: Transparent background fix
* version 1.5 - 01/11/2015: Cookie and custom HTTP header support
* version 1.4 - 10/12/2014: url-to-image PhantomJS script integration + few bugs corrected
* version 1.3 - 08/05/2014: Windows support + few bugs corrected
* version 1.2 - 04/27/2014: Few bugs corrected
* version 1.1 - 04/21/2014: Changed the script to use PhantomJS instead of the buggy wkhtml binary 
* version 1.0 - 01/12/2014: Initial commit

Copyright and license
---------------------
webscreenshot is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

webscreenshot is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with webscreenshot. 
If not, see http://www.gnu.org/licenses/.

Contact
-------
* Thomas Debize < tdebize at mail d0t com >

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "webscreenshot",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3",
    "maintainer_email": null,
    "keywords": "webscreenshot, web, screenshot, phantomjs, chrome, edge, chromium, firefox, lazy, rendering, cli",
    "author": null,
    "author_email": "tdebize@mail.com",
    "download_url": "https://files.pythonhosted.org/packages/68/99/b9faa4844da2b83c6762a87264a9479114fb20a882dba74b2e9b4b6f64e3/webscreenshot-2.96.tar.gz",
    "platform": null,
    "description": "webscreenshot\n=============\n\nDescription\n-----------\nA simple script to screenshot a list of websites, based on the [`url-to-image`](https://github.com/kimmobrunfeldt/url-to-image/) PhantomJS script.\n\nFeatures\n--------\n* Integrating url-to-image *'lazy-rendering'* for AJAX resources\n* Fully functional on Windows and Linux systems\n* Cookie and custom HTTP header definition support for the PhantomJS renderer\n* Multiprocessing and killing of unresponding processes after a user-definable timeout\n* Accepting several formats as input target\n* Customizing screenshot size (width, height), format and quality\n* Mapping useful options of PhantomJS such as ignoring ssl error, proxy definition and proxy authentication, HTTP Basic Authentication\n* Supports multiple renderers: \n  * **PhantomJS**, which is legacy and [abandoned](https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE) but the one still producing the best results\n  * **Chromium, Chrome and Edge Chromium**, which will replace PhantomJS but currently have some limitations: screenshoting an HTTPS website not having a valid certificate, for instance a self-signed one, will produce an empty screenshot.  \n    The reason is that the [`--ignore-certificate-errors`](https://groups.google.com/a/chromium.org/forum/#!topic/headless-dev/eiudRsYdc3A) option doesn't work and will never work anymore: the solution is to use a [proper webdriver](https://bugs.chromium.org/p/chromium/issues/detail?id=697721), but to date `webscreenshot` doesn't aim to support this _rather complex_ method requiring some third-party tools.\n  * **Firefox** can also be used as a renderer but has some serious limitations (_so don't use it for the moment_):\n    * Impossibility to perform multiple screenshots at the time: no multi-instance of the firefox process\n    * No incognito mode, using webscreenshot will pollute your browsing history\n* Embedding screenshot URL in image (requires `ImageMagick`) \n\nUsage\n-----\nPut your targets in a text file and pass it with the `-i` option, or as a positional argument if you have just a single URL.  \nScreenshots will be available, by default, in your current ```./screenshots/``` directory.  \nAccepted input formats are the following:\n```\nhttp(s)://domain_or_ip:port(/resource)\ndomain_or_ip:port(/resource)\ndomain_or_ip(/resource)\n```\n\n### Options\n```\nwebscreenshot.py version 2.94\n\nusage: webscreenshot.py [-h] [-i INPUT_FILE] [-o OUTPUT_DIRECTORY] [-w WORKERS] [-v] [--no-error-file] [-z SINGLE_OUTPUT_FILE] [-p PORT] [-s] [-m]\n                        [-r {phantomjs,chrome,chromium,edgechromium,firefox}] [--renderer-binary RENDERER_BINARY] [--no-xserver] [--window-size WINDOW_SIZE]\n                        [-f {pdf,png,jpg,jpeg,bmp,ppm}] [-q [0-100]] [--ajax-max-timeouts AJAX_MAX_TIMEOUTS] [--crop CROP] [--custom-js CUSTOM_JS] [-l]\n                        [--label-size LABEL_SIZE] [--label-bg-color LABEL_BG_COLOR] [--imagemagick-binary IMAGEMAGICK_BINARY] [-c COOKIE] [-a HEADER]\n                        [-u HTTP_USERNAME] [-b HTTP_PASSWORD] [-P PROXY] [-A PROXY_AUTH] [-T PROXY_TYPE] [-t TIMEOUT]\n                        [URL]\n\noptional arguments:\n  -h, --help            show this help message and exit\n\nMain parameters:\n  URL                   Single URL target given as a positional argument\n  -i INPUT_FILE, --input-file INPUT_FILE\n                        <INPUT_FILE> text file containing the target list. Ex: list.txt\n  -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY\n                        <OUTPUT_DIRECTORY> (optional): screenshots output directory (default './screenshots/')\n  -w WORKERS, --workers WORKERS\n                        <WORKERS> (optional): number of parallel execution workers (default 4)\n  -v, --verbosity       <VERBOSITY> (optional): verbosity level, repeat it to increase the level { -v INFO, -vv DEBUG } (default verbosity ERROR)\n  --no-error-file       <NO_ERROR_FILE> (optional): do not write a file with the list of URL of failed screenshots (default false)\n  -z SINGLE_OUTPUT_FILE, --single-output-file SINGLE_OUTPUT_FILE\n                        <SINGLE_OUTPUT_FILE> (optional): name of a file which will be the single output of all inputs. Ex. test.png\n\nInput processing parameters:\n  -p PORT, --port PORT  <PORT> (optional): use the specified port for each target in the input list. Ex: -p 80\n  -s, --ssl             <SSL> (optional): enforce SSL/TLS for every connection\n  -m, --multiprotocol   <MULTIPROTOCOL> (optional): perform screenshots over HTTP and HTTPS for each target\n\nScreenshot renderer parameters:\n  -r {phantomjs,chrome,chromium,edgechromium,firefox}, --renderer {phantomjs,chrome,chromium,edgechromium,firefox}\n                        <RENDERER> (optional): renderer to use among 'phantomjs' (legacy but best results), 'chrome', 'chromium', 'edgechromium', 'firefox'\n                        (version > 57) (default 'phantomjs')\n  --renderer-binary RENDERER_BINARY\n                        <RENDERER_BINARY> (optional): path to the renderer executable if it cannot be found in $PATH\n  --no-xserver          <NO_X_SERVER> (optional): if you are running without an X server, will use xvfb-run to execute the renderer (by default, trying to\n                        detect if DISPLAY environment variable exists\n\nScreenshot image parameters:\n  --window-size WINDOW_SIZE\n                        <WINDOW_SIZE> (optional): width and height of the screen capture (default '1200,800')\n  -f {pdf,png,jpg,jpeg,bmp,ppm}, --format {pdf,png,jpg,jpeg,bmp,ppm}\n                        <FORMAT> (optional, phantomjs only): specify an output image file format, \"pdf\", \"png\", \"jpg\", \"jpeg\", \"bmp\" or \"ppm\" (default\n                        'png')\n  -q [0-100], --quality [0-100]\n                        <QUALITY> (optional, phantomjs only): specify the output image quality, an integer between 0 and 100 (default 75)\n  --ajax-max-timeouts AJAX_MAX_TIMEOUTS\n                        <AJAX_MAX_TIMEOUTS> (optional, phantomjs only): per AJAX request, and max URL timeout in milliseconds (default '1400,1800')\n  --crop CROP           <CROP> (optional, phantomjs only): rectangle <t,l,w,h> to crop the screen capture to (default to WINDOW_SIZE: '0,0,w,h'), only\n                        numbers, w(idth) and h(eight). Ex. \"10,20,w,h\"\n  --custom-js CUSTOM_JS\n                        <CUSTOM_JS> (optional, phantomjs only): path of a file containing JavaScript code to be executed before taking the screenshot. Ex:\n                        js.txt\n\nScreenshot label parameters:\n  -l, --label           <LABEL> (optional): for each screenshot, create another one displaying inside the target URL (requires imagemagick)\n  --label-size LABEL_SIZE\n                        <LABEL_SIZE> (optional): font size for the label (default 60)\n  --label-bg-color LABEL_BG_COLOR\n                        <LABEL_BACKGROUND_COLOR> (optional): label imagemagick background color (default NavajoWhite)\n  --imagemagick-binary IMAGEMAGICK_BINARY\n                        <LABEL_BINARY> (optional): path to the imagemagick binary (magick or convert) if it cannot be found in $PATH\n\nHTTP parameters:\n  -c COOKIE, --cookie COOKIE\n                        <COOKIE_STRING> (optional): cookie string to add. Ex: -c \"JSESSIONID=1234; YOLO=SWAG\"\n  -a HEADER, --header HEADER\n                        <HEADER> (optional): custom or additional header. Repeat this option for every header. Ex: -a \"Host: localhost\" -a \"Foo: bar\"\n  -u HTTP_USERNAME, --http-username HTTP_USERNAME\n                        <HTTP_USERNAME> (optional): specify a username for HTTP Basic Authentication.\n  -b HTTP_PASSWORD, --http-password HTTP_PASSWORD\n                        <HTTP_PASSWORD> (optional): specify a password for HTTP Basic Authentication.\n\nConnection parameters:\n  -P PROXY, --proxy PROXY\n                        <PROXY> (optional): specify a proxy. Ex: -P http://proxy.company.com:8080\n  -A PROXY_AUTH, --proxy-auth PROXY_AUTH\n                        <PROXY_AUTH> (optional): provides authentication information for the proxy. Ex: -A user:password\n  -T PROXY_TYPE, --proxy-type PROXY_TYPE\n                        <PROXY_TYPE> (optional): specifies the proxy type, \"http\" (default), \"none\" (disable completely), or \"socks5\". Ex: -T socks\n  -t TIMEOUT, --timeout TIMEOUT\n                        <TIMEOUT> (optional): renderer execution timeout in seconds (default 30 sec)\n```\n\n### Examples\n```\nlist.txt\n--------\nhttp://google.fr\nhttps://216.58.213.131\n216.58.213.131\nhttps://duckduckgo.com/robots.txt\n\n\nDefault execution with a list\n-----------------------------\n$ python webscreenshot.py -i list.txt\nwebscreenshot.py version 2.3\n\n[+] 4 URLs to be screenshot\n[+] 4 actual URLs screenshot\n[+] 0 error(s)\n\n\nDefault execution with a single URL\n-----------------------------------\n$ python webscreenshot.py -v google.fr\nwebscreenshot.py version 2.3\n\n[INFO][General] 'google.fr' has been formatted as 'http://google.fr:80' with supplied overriding options\n[+] 1 URLs to be screenshot\n[INFO][http://google.fr:80] Screenshot OK\n\n[+] 1 actual URLs screenshot\n[+] 0 error(s)\n\n\nIncreasing verbosity level execution\n-----------------------------------\n$ python webscreenshot.py -i list.txt -v\nwebscreenshot.py version 2.3\n\n[INFO][General] 'http://google.fr' has been formatted as 'http://google.fr:80' with supplied overriding options\n[INFO][General] 'https://216.58.213.131' has been formatted as 'https://216.58.213.131:443' with supplied overriding options\n[INFO][General] '216.58.213.131' has been formatted as 'http://216.58.213.131:80' with supplied overriding options\n[INFO][General] 'https://duckduckgo.com/robots.txt' has been formatted as 'https://duckduckgo.com:443/robots.txt' with supplied overriding options\n[+] 4 URLs to be screenshot\n[INFO][https://duckduckgo.com:443/robots.txt] Screenshot OK\n\n[INFO][http://216.58.213.131:80] Screenshot OK\n\n[INFO][https://216.58.213.131:443] Screenshot OK\n\n[INFO][http://google.fr:80] Screenshot OK\n\n[+] 4 actual URLs screenshot\n[+] 0 error(s)\n\n\nResults\n-------\n$ ls -l screenshots/\ntotal 187\n-rwxrwxrwx 1 root root 53805 May 19 16:04 http_216.58.213.131_80.png\n-rwxrwxrwx 1 root root 53805 May 19 16:05 http_google.fr_80.png\n-rwxrwxrwx 1 root root 53805 May 19 16:04 https_216.58.213.131_443.png\n-rwxrwxrwx 1 root root 27864 May 19 16:04 https_duckduckgo.com_443_robots.txt.png\n```\n  \n\n### Supported options by renderers\nOptions not listed here below are supported by every current renderer  \n\n| **Option category**   | **Option**                                                                   | **PhantomJS renderer** | **Chromium / Chrome / Edge Chromium renderer** | **Firefox renderer** |\n|:---------------------:|------------------------------------------------------------------------------|:----------------------:|:------------------------------:|:--------------------:|\n| **Screenshot parameters**   |                                                                              |                        |                                |                      |\n|                       | format (`-f`)                                                                  | [**Yes**](https://web.archive.org/web/20200111184123/https://phantomjs.org/api/webpage/method/render.html)                    | No                             | No                   |\n|                       | quality (`-q`)                                                                  | [**Yes**](https://web.archive.org/web/20200111184123/https://phantomjs.org/api/webpage/method/render.html)                    | No                             | No                   \n|                       | ajax and request timeouts (`--ajax-max-timeouts`)                                         | **Yes**                    | No                             | No                   \n|                       | crop (`--crop`)                                                                  | [**Yes**](https://web.archive.org/web/20200111184050/https://phantomjs.org/api/webpage/property/clip-rect.html)                    | No                             | No                   \n|                       | custom JavaScript (`--custom-js`)                                                                  | [**Yes**](https://web.archive.org/web/20200823123026/https://phantomjs.org/api/webpage/method/evaluate-java-script.html)                    | No                             | No                   \n|                       |                                                                              |                        |                                |                      |\n| **HTTP parameters**   |                                                                              |                        |                                |                      |\n|                       | cookie (`-c`)                                                                  | **Yes**                    | No                             | No                   |\n|                       | header (`-a`)                                                                  | **Yes**                    | No                             | No                   |\n|                       | http_username (`-u`)                                                           | **Yes**                    | No                             | No                   |\n|                       | http_password (`-b`)                                                           | **Yes**                    | No                             | No                   |\n|                       |                                                                              |                        |                                |                      |\n| **Connection parameters** |                                                                              |                        |                                |                      |\n|                       | proxy (`-P`)                                                                   | **Yes**                    | **Yes**                            | No                   |\n|                       | proxy_auth (`-A`)                                                              | **Yes**                    | No                             | No                   |\n|                       | proxy_type (`-T`)                                                              | **Yes**                    | [**Yes**](https://github.com/maaaaz/webscreenshot/pull/51)                             | No                   |\n|                       |                                                                              |                        |                                |                      |\n|                       | Ability to screenshot a HTTPS website with a non-publicly-signed certificate | **Yes**                    | No                             | No                   |\n  \n  \nRequirements\n------------\n* A Python interpreter with version 2.7 or 3.X\n* The webscreenshot python script: \n  * The **easiest way** to setup it: `pip install webscreenshot` and then directly use `$ webscreenshot` \n  * Or git clone that repository and `pip install -r requirements.txt` and then `python webscreenshot.py`\n* The PhantomJS tool with at least version 2: follow the [installation guide](https://github.com/maaaaz/webscreenshot/wiki/Phantomjs-installation) and check the [FAQ](https://github.com/maaaaz/webscreenshot/wiki/FAQ) if necessary\n* Chrome, Chromium or Firefox > 57 if you want to use one of these renderers\n* `xvfb` if you want to run `webscreenshot` in an headless OS: use the `--no-xserver` webscreenshot option to ease everything\n* `ImageMagick` binary (`magick` or `convert`) if you want to embed URL in screenshots with the `--label` option: follow the [installation guide](https://github.com/maaaaz/webscreenshot/wiki/ImageMagick-installation)\n* Check the [FAQ](https://github.com/maaaaz/webscreenshot/wiki/FAQ) before reporting issues\n  \n\nChangelog\n---------\n* version 2.96 - 10/19/2025: Dropping Python v2\n* version 2.95 - 10/18/2025: Fixing phantomjs bug when not finding OpenSSL configuration\n* version 2.94 - 08/23/2020: Added custom-js and single output file options\n* version 2.93 - 08/16/2020: Added support of Python 3.8 and Microsoft Edge Chromium ; file output for failed webscreenshots ; filename length limitation for long URL \n* version 2.92 - 06/21/2020: no_xserver option autodetection\n* version 2.91 - 05/08/2020: Multiprotocol mode fix\n* version 2.9 - 01/26/2020: Few fixes\n* version 2.8 - 01/11/2020: Few fixes, ajax timeouts + crop + label size + label font options added, default values for ajaxTimeout and maxTimeout changed \n* version 2.7 - 01/04/2020: URL embedding in screenshot option added\n* version 2.6 - 12/27/2019: Few fixes\n* version 2.5 - 09/22/2019: Image quality and format options added, PhantomJS useragent updated, modern TLD support\n* version 2.4 - 05/30/2019: Few fixes for Windows support\n* version 2.3 - 05/19/2019: Python 3 compatibility, Firefox renderer added, no-xserver option added\n* version 2.2 - 08/13/2018: Chrome and Chromium renderers support and single URL support\n* version 2.1 - 01/14/2018: Multiprotocol option addition and PyPI packaging\n* version 2.0 - 03/08/2017: Adding proxy-type option\n* version 1.9 - 01/10/2017: Using ALL SSL/TLS ciphers\n* version 1.8 - 07/05/2015: Option groups definition\n* version 1.7 - 06/28/2015: HTTP basic authentication support + loglevel option changed to verbosity\n* version 1.6 - 04/23/2015: Transparent background fix\n* version 1.5 - 01/11/2015: Cookie and custom HTTP header support\n* version 1.4 - 10/12/2014: url-to-image PhantomJS script integration + few bugs corrected\n* version 1.3 - 08/05/2014: Windows support + few bugs corrected\n* version 1.2 - 04/27/2014: Few bugs corrected\n* version 1.1 - 04/21/2014: Changed the script to use PhantomJS instead of the buggy wkhtml binary \n* version 1.0 - 01/12/2014: Initial commit\n\nCopyright and license\n---------------------\nwebscreenshot is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nwebscreenshot is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  \n\nSee the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with webscreenshot. \nIf not, see http://www.gnu.org/licenses/.\n\nContact\n-------\n* Thomas Debize < tdebize at mail d0t com >\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A simple script to screenshot a list of websites",
    "version": "2.96",
    "project_urls": {
        "Homepage": "https://github.com/maaaaz/webscreenshot"
    },
    "split_keywords": [
        "webscreenshot",
        " web",
        " screenshot",
        " phantomjs",
        " chrome",
        " edge",
        " chromium",
        " firefox",
        " lazy",
        " rendering",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e77d01f50e7be86f34300d628cd0c39969505559e9e6da151c194ddb57ab137a",
                "md5": "846360a07714eaf635b44dd70e1c71e8",
                "sha256": "0289eaa190ebde11936f4210c02f606199d5869f601d2021feaddf93c771a779"
            },
            "downloads": -1,
            "filename": "webscreenshot-2.96-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "846360a07714eaf635b44dd70e1c71e8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3",
            "size": 21121,
            "upload_time": "2025-10-19T11:36:56",
            "upload_time_iso_8601": "2025-10-19T11:36:56.053315Z",
            "url": "https://files.pythonhosted.org/packages/e7/7d/01f50e7be86f34300d628cd0c39969505559e9e6da151c194ddb57ab137a/webscreenshot-2.96-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6899b9faa4844da2b83c6762a87264a9479114fb20a882dba74b2e9b4b6f64e3",
                "md5": "4ba25b0b4e579715ced3978581a823a5",
                "sha256": "caddf91abe092098bf84866c582ed55fe8f67d7e05ef2b8a2e8d8090bbc12123"
            },
            "downloads": -1,
            "filename": "webscreenshot-2.96.tar.gz",
            "has_sig": false,
            "md5_digest": "4ba25b0b4e579715ced3978581a823a5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3",
            "size": 24477,
            "upload_time": "2025-10-19T11:36:57",
            "upload_time_iso_8601": "2025-10-19T11:36:57.680174Z",
            "url": "https://files.pythonhosted.org/packages/68/99/b9faa4844da2b83c6762a87264a9479114fb20a882dba74b2e9b4b6f64e3/webscreenshot-2.96.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-19 11:36:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "maaaaz",
    "github_project": "webscreenshot",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "webscreenshot"
}
        
Elapsed time: 0.52549s