Skip to main content

Render JavaScript-rendered page as HTML using headless Chrome

Project description

# prerender

Render JavaScript-rendered page as HTML/PDF/mhtml/png/jpeg using headless Chrome

## Install Chrome

Headless mode is supported in Chrome unstable/dev channel, you should be able to install it via:

https://www.google.com/chrome/browser/beta.html?platform=linux

## Start Chrome Headless

```bash
$ google-chrome-unstable --headless --remote-debugging-port=9222 --disable-gpu "about:blank"
```

## Install Prerender

```bash
$ pip install -U prerender
```

## Start Prerender

As standalone application:

```bash
$ prerender
```

To run it under gunicorn:

```bash
$ gunicorn --bind 0.0.0.0:3000 --worker-class sanic.worker.GunicornWorker prerender.app:app
```

## How does it work

Say you deployed Prerender under `http://prerender.example.com:8000`, to render `http://example.com` you can do:

```bash
$ # render HTML
$ curl http://prerender.example.com:8000/http://example.com
$ curl http://prerender.example.com:8000/html/http://example.com
$ # render mhtml
$ curl http://prerender.example.com:8000/mhtml/http://example.com
$ # render PDF
$ curl http://prerender.example.com:8000/pdf/http://example.com
$ # render png
$ curl http://prerender.example.com:8000/png/http://example.com
$ # render jpeg
$ curl http://prerender.example.com:8000/jpeg/http://example.com
```

## Configuration

Settings are mostly configured by environment variables.

| ENV | default value | description |
|----------------------------|------------------|-----------------------------------------------------|
| HOST | 0.0.0.0 | Prerender listen host |
| PORT | 8000 | Prerender listen port |
| DEBUG | false | Toggle debug mode |
| PRERENDER_TIMEOUT | 30 | renderring timeout |
| CONCURRENCY | 2 * CPU count | Chrome pages count |
| MAX_ITERATIONS | 200 | Restart Chrome page after rendering this many pages |
| CHROME_HOST | localhost | Chrome remote debugging host |
| CHROME_PORT | 9222 | Chrome remote debugging port |
| USER_AGENT | | Chrome User Agent |
| ALLOWED_DOMAINS | | Domains allowed for renderring, comma seperated |
| CACHE_BACKEND | dummy | Cache backend, `dummy`, `disk`, `s3` |
| CACHE_LIVE_TIME | 3600 | Disk cache live seconds |
| CACHE_ROOT_DIR | /tmp/prerender | Disk cache root directory |
| S3_SERVER | s3.amazonaws.com | S3 server address |
| S3_ACCESS_KEY | | S3 access key |
| S3_SECRET_KEY | | S3 secret key |
| S3_REGION | | S3 region |
| S3_BUCKET | prerender | S3 bucket name |
| SENTRY_DSN | | Sentry DSN, for exception monitoring |

## Configure client

Please view the original NodeJs version [prerender](https://github.com/prerender/prerender#official-middleware) README.

## License

MIT


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prerender-0.7.5.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

prerender-0.7.5-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file prerender-0.7.5.tar.gz.

File metadata

  • Download URL: prerender-0.7.5.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for prerender-0.7.5.tar.gz
Algorithm Hash digest
SHA256 e82c1b5fa505bb1cdf94a2af6b82cfdc31b070469b48fa07a203a5a0aa4e630b
MD5 5e8717983ac413a2b154bd7e1333e57f
BLAKE2b-256 59a31fe1789084acc8f88379add41362ce7fa485fdafefdc2b5dfc460d4451fe

See more details on using hashes here.

File details

Details for the file prerender-0.7.5-py3-none-any.whl.

File metadata

File hashes

Hashes for prerender-0.7.5-py3-none-any.whl
Algorithm Hash digest
SHA256 26d9455f1e9f55e0321cc5465568e15af45a1268c38e72a8cefcfdbea25e5fe8
MD5 be64464357add23779d0fdd8ad20613d
BLAKE2b-256 abd95bc306b7993184ef550871bff48a733a54a9eb328ec9e36737cd2ff43bcb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page