{"id":13447601,"url":"https://github.com/berstend/puppeteer-extra","last_synced_at":"2025-05-13T21:03:41.576Z","repository":{"id":37246049,"uuid":"133567063","full_name":"berstend/puppeteer-extra","owner":"berstend","description":"💯  Teach puppeteer new tricks through plugins.","archived":false,"fork":false,"pushed_at":"2024-07-18T12:28:02.000Z","size":17705,"stargazers_count":6805,"open_issues_count":262,"forks_count":750,"subscribers_count":116,"default_branch":"master","last_synced_at":"2025-05-06T20:29:58.480Z","etag":null,"topics":["automation","chrome","headless-browser","headless-chrome","lerna","monorepo","puppeteer","puppeteer-extra","puppeteer-plugins","recaptcha","stealth","user-preferences","yarn-workspaces"],"latest_commit_sha":null,"homepage":"https://extra.community","language":"JavaScript","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/berstend.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":"https://www.buymeacoffee.com/brstnd"}},"created_at":"2018-05-15T20:02:21.000Z","updated_at":"2025-05-06T02:46:17.000Z","dependencies_parsed_at":"2024-05-10T02:45:32.945Z","dependency_job_id":"0cf3c936-817d-4c72-b152-d904cda687fa","html_url":"https://github.com/berstend/puppeteer-extra","commit_stats":{"total_commits":588,"total_committers":50,"mean_commits":11.76,"dds":"0.29931972789115646","last_synced_commit":"39248f1f5deeb21b1e7eb6ae07b8ef73f1231ab9"},"previous_names":[],"tags_count":559,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berstend%2Fpuppeteer-extra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berstend%2Fpuppeteer-extra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berstend%2Fpuppeteer-extra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berstend%2Fpuppeteer-extra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/berstend","download_url":"https://codeload.github.com/berstend/puppeteer-extra/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253068914,"owners_count":21848890,"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":["automation","chrome","headless-browser","headless-chrome","lerna","monorepo","puppeteer","puppeteer-extra","puppeteer-plugins","recaptcha","stealth","user-preferences","yarn-workspaces"],"created_at":"2024-07-31T05:01:22.117Z","updated_at":"2025-05-13T21:03:41.548Z","avatar_url":"https://github.com/berstend.png","language":"JavaScript","funding_links":["https://www.buymeacoffee.com/brstnd"],"categories":["Packages","JavaScript","包","网络信息服务","chrome","Fingerprinting Evasion"],"sub_categories":["贡献","网络爬虫","Index"],"readme":"# puppeteer-extra [![Downloads](https://img.shields.io/endpoint?style=social\u0026url=https://runkit.io/fezvrasta/combined-npm-downloads/1.0.0?packages=puppeteer-extra,puppeteer-extra-plugin,puppeteer-extra-plugin-stealth,puppeteer-extra-plugin-recaptcha,puppeteer-extra-plugin-adblocker)](https://github.com/berstend/puppeteer-extra/)\n\nThis is the monorepo for [`puppeteer-extra`](./packages/puppeteer-extra), a modular plugin framework for [`puppeteer`](https://github.com/puppeteer/puppeteer). :-)\n\n🌟 **For the main documentation, please head over to the [`puppeteer-extra`](./packages/puppeteer-extra) package.**\n\nWe've also recently introduced support for Playwright, if you're interested in that head over to [`playwright-extra`](./packages/playwright-extra).\n\n## Monorepo\n\n\u003cdetails\u003e\n \u003csummary\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/summary\u003e\n\n### Contributing\n\nPRs and new plugins are welcome! The plugin API for `puppeteer-extra` is clean and fun to use. Have a look the [`PuppeteerExtraPlugin`](./packages/puppeteer-extra-plugin) base class documentation to get going and check out the [existing plugins](./packages/) (minimal example is the [anonymize-ua](./packages/puppeteer-extra-plugin-anonymize-ua/index.js) plugin) for reference.\n\nWe use a [monorepo](https://github.com/berstend/puppeteer-extra) powered by [Lerna](https://github.com/lerna/lerna#--use-workspaces) (and yarn workspaces), [ava](https://github.com/avajs/ava) for testing, the [standard](https://standardjs.com/) style for linting and [JSDoc](http://usejsdoc.org/about-getting-started.html) heavily to auto-generate markdown [documentation](https://github.com/documentationjs/documentation) based on code. :-)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n \u003csummary\u003e\u003cstrong\u003eLerna\u003c/strong\u003e\u003c/summary\u003e\n\n### Lerna\n\nThis monorepo is powered by [Lerna](https://github.com/lerna/lerna) and yarn workspaces.\n\n#### Initial setup\n\n```bash\n# Install deps\nyarn\n\n# Bootstrap the packages in the current Lerna repo.\n# Installs all of their dependencies and links any cross-dependencies.\nyarn bootstrap\n\n# Build all TypeScript sources\nyarn build\n```\n\n#### Development flow\n\n```bash\n# Install debug in all packages\nyarn lerna add debug\n\n# Install fs-extra to puppeteer-extra-plugin-user-data-dir\nyarn lerna add fs-extra --scope=puppeteer-extra-plugin-user-data-dir\n\n# Remove dependency\n# https://github.com/lerna/lerna/issues/833\nyarn lerna exec --concurrency 1 'yarn remove fs-extra; echo 0'\n\n# Run test in all packages\nyarn test\n\n# Update JSDoc based documentation in markdown files\nyarn docs\n\n# Upgrade project wide deps like puppeteer\n# (We keep the devDependency version blurry)\nrm -rf node_modules\nrm -rf yarn.lock\nyarn\nyarn lerna bootstrap\n\n# Update deps within packages (interactive)\nyarn lernaupdate\n\n# If in doubt :-(\nyarn lerna exec \"rm -f yarn.lock; rm -rf node_modules; echo 0\"\nrm -f yarn.lock \u0026\u0026  rm -rf node_modules \u0026\u0026 yarn cache clean\n\n# Run tests of specific package\ncd packages/puppeteer-extra-plugin-stealth\nyarn test\n\n# Run tests of specific stealth evasion\ncd packages/puppeteer-extra-plugin-stealth\nyarn ava -v ./evasions/user-agent-override/index.test.js\n\n# Test a local monorepo package in an outside folder as it would've been installed from the registry\n# Change PACKAGE_DIR to the path of this monorepo and PACKAGE to the package you wish to install\nPACKAGE=puppeteer-extra PACKAGE_DIR=/Users/foo/puppeteer-extra/packages \u0026\u0026 yarn remove $(echo $PACKAGE); true \u0026\u0026 rm -f $(pwd)/$(echo $PACKAGE)-latest.tgz \u0026\u0026 yarn --cwd $(echo $PACKAGE_DIR)/$(echo $PACKAGE) pack --filename $(pwd)/$(echo $PACKAGE)-latest.tgz \u0026\u0026 YARN_CACHE_FOLDER=/tmp/yarn yarn add file:$(pwd)/$(echo $PACKAGE)-latest.tgz \u0026\u0026 rm -rf /tmp/yarn\n```\n\n#### Publishing\n\n```bash\n# make sure you're signed into npm before publishing\n# yarn publishing is broken so lerna uses npm\nnpm whoami\n\n# ensure everything is up2date and peachy\nyarn\nyarn bootstrap\nyarn lerna link\nyarn build\nyarn test\n\n# Phew, let's publish these packages!\n# - Will publish all changed packages\n# - Will ask for new pkg version per package\n# - Will updated inter-package dependency versions automatically\nyarn lerna publish\n\n# Fix new dependency version symlinks\nyarn bootstrap \u0026\u0026 yarn lerna link\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/EuqiF5F.png\"  height=\"240\"  /\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberstend%2Fpuppeteer-extra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberstend%2Fpuppeteer-extra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberstend%2Fpuppeteer-extra/lists"}