Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cweiske/phancap

Web service to create website screenshots. Mirror of http://git.cweiske.de/phancap.git
https://github.com/cweiske/phancap

Last synced: 29 days ago
JSON representation

Web service to create website screenshots. Mirror of http://git.cweiske.de/phancap.git

Awesome Lists containing this project

README

        

************************************
phancap - website screenshot service
************************************

Web service (API) to create website screenshots.

Self-hosted and written in PHP. Caching included.

*phancap* is useful for:

- Show screenshots for websites in your bookmarking application
- Archive a HTML page as PDF for later viewing

.. contents::

========
Features
========

* Configurable browser size
* Configurable screenshot size
* Clip and full page rendering (full height)
* JPG, PNG and PDF output (PDFs are searchable)
* Authentication
* Can run on a normal web server without GUI. See dependencies_.
* Generated images get meta data embedded:

* URL of captured page
* Capture settings

.. note::
*phancap* does not rely on a "real" browser.
Currently ``cutycapt`` is utilized, which uses a pretty bare webkit to render
the pages.
Do not expect pixel-for-pixel identical rendering as your desktop browser.

===============
Getting started
===============

Basic setup
===========
#. Download the ``.phar`` file and put it onto your web server
#. Open the phar file in your browser

If you only see text beginning with `` 'secret1',
'user2' => 'secret2',
)

The signature algorithm is as follows:

#. Parameters ``atimestamp`` (current unix timestamp) and
``atoken`` (username) have to be added to the URL parameters

#. URL parameters are normalized as described in
`OAuth Parameters Normalization`__:

#. Sort parameters list by name
#. Name and value are `raw-url-encoded`__
#. Name and value are concatenated with ``=`` as separator
#. The resulting strings are concatenated with ``&`` as separator

#. URL parameter string is used together with the secret key
to create a `HMAC-SHA1`__ digest

#. Digest is appended to the URL as ``asignature``

__ http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2
__ http://tools.ietf.org/html/rfc5849#section-3.6
__ http://tools.ietf.org/html/rfc5849#section-3.4.2

Example
=======

.. note::

The ``docs/`` directory contains an example PHP client implementation.

We want to create a screenshot of ``http://example.org/`` in size 400x300,
using the browser size of 1024x768::

http://example.org/phancap/get.php?swidth=400&sheight=300&url=http%3A%2F%2Fexample.org%2F&bwidth=1024&bheight=768

Phancap's config file contains::

$access = array(
'user' => 'secret'
);

Our parameters are thus:

============== =====
Name Value
============== =====
``swidth`` ``400``
``sheight`` ``300``
``url`` ``http://example.org/``
``bwidth`` ``1024``
``bheight`` ``768``
============== =====

At first, we need to add parameters ``atimestamp`` and ``atoken``.
``atimestamp`` is the current unix timestamp.
``atoken`` is our user name: ``user``.

Now the parameter list is sorted:

============== =====
Name Value
============== =====
``atimestamp`` ``1396353987``
``atoken`` ``user``
``bheight`` ``768``
``bwidth`` ``1024``
``sheight`` ``300``
``swidth`` ``400``
``url`` ``http://example.org/``
============== =====

The parameters are raw-url-encoded. The only value that changes is the url,
it becomes ``http%3A%2F%2Fexample.org%2F``.

Concatenating the name/value pairs leads to the following string::

atimestamp=1396353987&atoken=user&bheight=768&bwidth=1024&sheight=300&swidth=400&url=http%3A%2F%2Fexample.org%2F

Creating the HMAC digest with sha1, the calculated string and our key
``secret`` gives us the following string::

9a12eac5ff859f9306eaaf5a18b9a931fe10b89d

This is the signature; it gets appended to the URL as ``asignature`` parameter.

============
Dependencies
============
- External tools:

- `cutycapt `_
- `exiftool `_
- `imagemagick's `_ ``convert``
- ``xvfb-run``

- Libraries (already included in the ``.phar``):

- PEAR's ``System.php``

=============
About phancap
=============

License
=======
``phancap`` is licensed under the `AGPL v3`__ or later.

__ http://www.gnu.org/licenses/agpl.html

Homepage
========
Web site
http://cweiske.de/phancap.htm

Source code
http://git.cweiske.de/phancap.git

Mirror: https://github.com/cweiske/phancap

Author
======
Written by Christian Weiske, [email protected]

============
Alternatives
============
All of those are open source:

* http://code.google.com/p/browsershots/ (python)
* https://github.com/gre/screenshot-webservice (scala)

===========
Development
===========

Releasing a new version
=======================

#. Update ``ChangeLog``
#. Change version number in ``build.xml``
#. Run ``phing``
#. Deploy the new files in ``dist/``
#. Tag the new version in git