{"id":13393381,"url":"https://github.com/zenato/puppeteer-renderer","last_synced_at":"2026-03-09T12:31:28.315Z","repository":{"id":37768241,"uuid":"100601857","full_name":"zenato/puppeteer-renderer","owner":"zenato","description":"Puppeteer(Chrome headless node API) based web page renderer","archived":false,"fork":false,"pushed_at":"2024-09-30T04:33:41.000Z","size":847,"stargazers_count":311,"open_issues_count":0,"forks_count":93,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-26T18:29:56.853Z","etag":null,"topics":["chrome-headless","puppeteer","server-side-rendering"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zenato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-17T12:36:46.000Z","updated_at":"2024-10-08T23:46:16.000Z","dependencies_parsed_at":"2024-01-06T01:12:35.101Z","dependency_job_id":"54aa85d2-3e4c-4c31-9856-f22fd21c12ae","html_url":"https://github.com/zenato/puppeteer-renderer","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenato%2Fpuppeteer-renderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenato%2Fpuppeteer-renderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenato%2Fpuppeteer-renderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenato%2Fpuppeteer-renderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zenato","download_url":"https://codeload.github.com/zenato/puppeteer-renderer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243469162,"owners_count":20295699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-headless","puppeteer","server-side-rendering"],"created_at":"2024-07-30T17:00:51.459Z","updated_at":"2026-03-09T12:31:28.266Z","avatar_url":"https://github.com/zenato.png","language":"TypeScript","funding_links":[],"categories":["Opensource projects","TypeScript","渲染和网页抓取","Rendering and web scraping"],"sub_categories":["贡献"],"readme":"# Puppeteer(Chrome headless node API) based web page renderer\n\n[Puppeteer](https://github.com/GoogleChrome/puppeteer) (Chrome headless node API) based web page renderer.\n\nUseful server side rendering through proxy. Outputs HTML, PDF and screenshots as PNG.\n\n## Requirements\nYou can run Chromium or docker.\n\n## Getting Started\n\n### Start server using docker (If you can not run Chromium and installed docker)\n\n```bash\ndocker run -d --name renderer -p 8080:3000 ghcr.io/zenato/puppeteer-renderer:latest\n```\n\n### Local (git clone)\n\n`pnpm install`\n\n#### Start server (If you can run Chromium)\n`pnpm dev`\n(service port: 3000)\n\n#### Locally build the image\n\n```bash\ndocker build . --file ./Dockerfile --tag local/puppeteer-renderer --build-arg SCOPE=puppeteer-renderer\n```\ndocker run -d --name renderer -p 8080:3000 local/puppeteer-renderer\n```\n\n### Test on your browser\nInput url `http://localhost:{port}/{html|pdf|screenshot}?url=https://www.google.com`\n\nIf you can see html code, server works fine.\n\n### Puppeteer customization\n\nWhen starting `pnpm {dev|start}` or docker container you can customize puppeteer using environment variables.\n\n- `IGNORE_HTTPS_ERRORS=true` - Ignores HTTPS errors\n- `PUPPETEER_ARGS='--host-rules=MAP localhost yourproxy'` - Ads additional args that will be passed to puppeteer. Supports multiple arguments.\n\n## Integration with existing service.\n\nIf you have active service, set proxy configuration with middleware.\nSee [puppeteer-renderer-middleware](packages/middleware/README.md) for express.\n\n```ts\nimport express from 'express'\nimport renderer from 'puppeteer-renderer-middleware'\n\nconst app = express()\n\napp.use('/render-proxy', renderer({\n  url: 'http://installed-your-puppeteer-renderer-url',\n  // userAgentPattern: /My-Custom-Agent/i,\n  // excludeUrlPattern: /*.html$/i\n  // timeout: 30 * 1000,\n}));\n\n// your service logics..\n\napp.listen(8080);\n```\n\n## API\n\nEndpoint: `/{html|pdf|screenshot}`\n\n| Name               | Required |          Value          | Description                                                                                                               | Usage                                                                                  |\n| ------------------ | :------: | :---------------------: | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |\n| `url`              |   yes    |                         | Target URL                                                                                                                | `http://puppeteer-renderer/html?url=http://www.google.com`                             |\n| `animationTimeout` |          | Timeout in milliseconds | Waits for animations to finish before taking the screenshot. Only applicable to `type` `screenshot`                       | `http://puppeteer-renderer/screenshot?url=http://www.google.com\u0026animationTimeout=3000` |\n| (Extra options)    |          |                         | Extra options (see [puppeteer API doc](https://github.com/GoogleChrome/puppeteer/blob/v1.1.0/docs/api.md#pagepdfoptions)) | `http://puppeteer-renderer/pdf?url=http://www.google.com\u0026scale=2`                      |\n\n## PDF File Name Convention\n\nGenerated PDFs are returned with a `Content-disposition` header requesting the browser to download the file instead of showing it.\nThe file name is generated from the URL rendered:\n\n| URL                                            | Filename              |\n| ---------------------------------------------- | --------------------- |\n| `https://www.example.com/`                     | `www.example.com.pdf` |\n| `https://www.example.com:80/`                  | `www.example.com.pdf` |\n| `https://www.example.com/resource`             | `resource.pdf`        |\n| `https://www.example.com/resource.extension`   | `resource.pdf`        |\n| `https://www.example.com/path/`                | `path.pdf`            |\n| `https://www.example.com/path/to/`             | `pathto.pdf`          |\n| `https://www.example.com/path/to/resource`     | `resource.pdf`        |\n| `https://www.example.com/path/to/resource.ext` | `resource.pdf`        |\n\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2017-present, Yeongjin Lee\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenato%2Fpuppeteer-renderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenato%2Fpuppeteer-renderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenato%2Fpuppeteer-renderer/lists"}