There is only one true thing: instantly paint what you see. When you've got it, you've got it. When you haven't, you begin again. All the rest is humbug. docker-Manet is the docker format of Manet REST API server which allows capturing screenshots of websites using various parameters. It is a good way to make sure that your websites are responsive or to make thumbnails.
docker-Manet could use PhantomJs engines to work.
- PhantomJS runs on top of WebKit and JavaScriptCore. docker-Manet exposed port is 8891
REST API is available on "<$your docker ip>:<$your docker port>/" using:
- GET method
- POST method with
Content-Type
:- application/json
- or application/x-www-form-urlencoded
Few rules:
- The
"url"
parameter must be specified. - Query parameters will be used in priority and override others.
- url
- Website address (URL). This is the only required parameter for the HTTP request. It is unnecessary for the most cases to configure scheme. Example: "github.com".
- width
- This property allows to change the width of the viewport, e.g., the size of the window where the webpage is displayed (default: 1024)
- height
- This property allows to change the height of the viewport. If width is defined and height is not defined, than full page will be captured.
- clipRect
- This property defines the rectangular area of the web page to be rasterized. Format: "top,left,width,height", example: "20,20,640,480".
- zoom
- Zoom factor of the webpage display. Setting a value to this property decreases or increases the size of the web page rendering. A value between 0 and 1 decreases the size of the page, and a value higher than 1 increases its size. 1 means no zoom (normal size). (default: 1).
- quality
- The compression quality. A number between 0 and 1 (default value: 1). Quality parameter doesn't work for PNG file format.
- delay
- Do a pause during the given amount of time (in milliseconds) after page opening (default: 100).
- format
- Indicate the file format for output image (default is "png"). Possible values: jpg, jpeg, png, gif, pdf
- agent
- String to define the "User-Agent" in HTTP requests. By default, it is something like:
- PhantomJS: Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 (development) Safari/534.34
- SlimerJS: Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 SlimerJS/0.7
- headers
- This property specifies additional HTTP request headers that will be sent to the server for every request issued (for pages and resources). Format: "key1=value1;key2=value2;..." Headers names and values get encoded in US-ASCII before being sent. Please note that setting the 'User-Agent' will overwrite the value set via "agent" parameter.
- user
- User name to give to HTTP Basic authentication.
- password
- Password to give to HTTP Basic authentication.
- js
- false to deactivate javascript in web pages (default is true).
- images
- false to deactivate the loading of images (default is true).
- force
- Use the force reloading of web page without using cache (default is false).
- callback
- Return an empty response immediately (HTTP 200 OK), then send a POST request to the callback URL when the screenshot is ready (with image in the body).
For a quick test with the command line (using curl
), type:
curl http://<$your docker ip>:<$your docker port>/?url=github.com > github.png
curl -H "Content-Type: application/json" -d '{"url":"github.com"}' http://<$your docker ip>:<$your docker port>/ > github.png
curl -H "Content-Type: application/x-www-form-urlencoded" -d 'url=github.com' http://<$your docker ip>:<$your docker port>/ > github.png
or (using wget
)
wget http://<$your docker ip>:<$your docker port>/?url=github.com -O github.png
Here are some query examples that could be executed by any REST API client:
# Take a screenshot of the github.com.
GET /?url=github.com
# Custom viewport size. Return a 800x600 PNG screenshot of the github.com homepage.
GET /?url=github.com&width=800&height=600
# Clipping Rectangle. Return a screenshot clipped at [top=20, left=30, width=90, height=80]
GET /?url=github.com&clipRect=20%2C30%2C90%2C80
# Zoom rendered page in 2 times.
GET /?url=github.com&zoom=2
# Specify image output format.
GET /?url=github.com&format=jpeg
# Disable JavaScript. Return a screenshot with no JavaScript executed.
GET /?url=github.com&js=false
# Disable images. Return a screenshot without images.
GET /?url=github.com&images=false
# Custom User Agent.
GET /?url=github.com&agent=Mozilla%2F5.0+(X11%3B+Linux+x86_64)+AppleWebKit%2F537.36+(KHTML%2C+like+Gecko)+Chrome%2F34.0.1847.132+Safari%2F537.36
# HTTP Basic Authentication. Return a screenshot of a website requiring basic authentication.
GET /?url=mysite.com&user=john&password=smith
# Screenshot delay. Return a screenshot of the github.com homepage 1 second after it's loaded.
GET /?url=github.com&delay=1000
# Force page reloading. Return a screenshot without using file cache.
GET /?url=github.com&force=true
# Specify custom HTTP headers.
GET /?url=google.com&headers=User-Agent=Firefox;Accept-Charset=utf-8
# Asynchronous call.
GET /?url=github.com&callback=http://localhost:8891
Sandbox UI is available on "/" by direct GET request without "url"
query parameter.
It is a simple playground to build HTTP requests and try them.
Demo instance is available on Heroku: https://manet.herokuapp.com
docker-Manet is prodly dockerized by
https://earlyclaim.com RESERVE YOUR FAVORITE USERNAME IN NEW STARTUPS
the man behind it is Walter Franchetti https://twitter.com/frnwtr