{"id":31536045,"url":"https://github.com/cipher-fox/puppeteer-extra-plugin-force-custom-language","last_synced_at":"2026-02-20T17:32:39.455Z","repository":{"id":57749718,"uuid":"524419498","full_name":"cipher-fox/puppeteer-extra-plugin-force-custom-language","owner":"cipher-fox","description":"Puppeteer-extra plugin to force browser language.","archived":false,"fork":false,"pushed_at":"2026-02-12T21:12:45.000Z","size":586,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-13T05:43:55.105Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/cipher-fox.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-13T14:19:41.000Z","updated_at":"2026-02-12T21:12:49.000Z","dependencies_parsed_at":"2024-01-17T17:05:50.589Z","dependency_job_id":"8bce426e-0270-4698-a36e-c3e8d368fdd3","html_url":"https://github.com/cipher-fox/puppeteer-extra-plugin-force-custom-language","commit_stats":{"total_commits":44,"total_committers":3,"mean_commits":"14.666666666666666","dds":"0.18181818181818177","last_synced_commit":"b90d4bfc7649899eb8532a57b8fc04fa6ad677db"},"previous_names":["cipher-fox/puppeteer-extra-plugin-force-custom-language","mjorgegulab/puppeteer-extra-plugin-force-custom-language"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/cipher-fox/puppeteer-extra-plugin-force-custom-language","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipher-fox%2Fpuppeteer-extra-plugin-force-custom-language","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipher-fox%2Fpuppeteer-extra-plugin-force-custom-language/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipher-fox%2Fpuppeteer-extra-plugin-force-custom-language/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipher-fox%2Fpuppeteer-extra-plugin-force-custom-language/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cipher-fox","download_url":"https://codeload.github.com/cipher-fox/puppeteer-extra-plugin-force-custom-language/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cipher-fox%2Fpuppeteer-extra-plugin-force-custom-language/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29658376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T16:33:43.953Z","status":"ssl_error","status_checked_at":"2026-02-20T16:33:43.598Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-10-04T06:50:27.087Z","updated_at":"2026-02-20T17:32:39.425Z","avatar_url":"https://github.com/cipher-fox.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# puppeteer-extra-plugin-force-custom-language\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/85eb01da28934d37a91d5a2c78897355)](https://app.codacy.com/gh/cipher-fox/puppeteer-extra-plugin-force-custom-language/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade) [![CodeQL](https://github.com/cipher-fox/puppeteer-extra-plugin-force-custom-language/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/cipher-fox/puppeteer-extra-plugin-force-custom-language/actions/workflows/github-code-scanning/codeql) [![Known Vulnerabilities](https://snyk.io/test/github/cipher-fox/puppeteer-extra-plugin-force-custom-language/badge.svg)](https://snyk.io/test/github/cipher-fox/puppeteer-extra-plugin-force-custom-language)\n\u003e A plugin for [puppeteer-extra](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra) and [playwright-extra](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra) to force browser language.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://i.imgur.com/e1IeCjp.png\" /\u003e\u003c/p\u003e\n\n## Install\n\n```bash\nyarn add puppeteer-extra-plugin-force-custom-language\n# - or -\nnpm install puppeteer-extra-plugin-force-custom-language\n```\n\nIf this is your first [puppeteer-extra](https://github.com/berstend/puppeteer-extra) plugin here's everything you need:\n\n```bash\nyarn add puppeteer puppeteer-extra puppeteer-extra-plugin-force-custom-language\n# - or -\nnpm install puppeteer puppeteer-extra puppeteer-extra-plugin-force-custom-language\n```\n\n## Usage\n\n```js\n// puppeteer-extra is a drop-in replacement for puppeteer,\n// it augments the installed puppeteer with plugin functionality\nconst puppeteer = require('puppeteer-extra')\n\n// add force language plugin and use defaults (all techniques)\nconst ForceCustomLanguagePlugin = require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin())\n\n// puppeteer usage as normal\npuppeteer.launch({ headless: true }).then(async browser =\u003e {\n  console.log('Running tests..')\n  const page = await browser.newPage()\n  await page.goto('https://www.google.com')\n  await page.waitForTimeout(5000)\n  await page.screenshot({ path: 'testresult.png', fullPage: true })\n  await browser.close()\n  console.log(`All done, check the screenshot. ✨`)\n})\n```\n\n## Plugin options\n\n#### Table of Contents\n\n- [puppeteer-extra-plugin-force-custom-language](#puppeteer-extra-plugin-force-custom-language)\n  - [Install](#install)\n  - [Usage](#usage)\n  - [Plugin options](#plugin-options)\n      - [Table of Contents](#table-of-contents)\n  - [language](#language)\n  - [ip](#ip)\n  - [httpHeaders](#httpheaders)\n  - [geoLocation](#geolocation)\n  - [javascript](#javascript)\n  - [requestInterceptionPriority](#requestinterceptionpriority)\n  - [Tools](#tools)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n## language\n**TYPE**: string\n\n**DEFAULT**: en\n\n**DESCRIPTION**: Language code to use.\n(Available options: [en,  zh,  ru,  fr,  es,  de,  pt,  it,  ja])\n\n**USAGE**:\n```javascript\nconst puppeteer =  require('puppeteer-extra')\nconst ForceCustomLanguagePlugin =  require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin({language: 'es'})) \n```\n---\n## ip\n**TYPE**: boolean\n\n**DEFAULT**: true\n\n**DESCRIPTION**: Send a fake ip as origin via HTTP headers.\n\n**USAGE**:\n```javascript\nconst puppeteer =  require('puppeteer-extra')\nconst ForceCustomLanguagePlugin =  require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin({ip: true})) \n```\n---\n## httpHeaders\n**TYPE**: boolean\n\n**DEFAULT**: true\n\n**DESCRIPTION**: Send a custom `Accept-Language` HTTP header.\n\n**USAGE**:\n```javascript\nconst puppeteer =  require('puppeteer-extra')\nconst ForceCustomLanguagePlugin =  require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin({httpHeaders: true})) \n```\n---\n## geoLocation\n**TYPE**: boolean\n\n**DEFAULT**: true\n\n**DESCRIPTION**: Send a custom geographic coordinates.\n\n**USAGE**:\n```javascript\nconst puppeteer =  require('puppeteer-extra')\nconst ForceCustomLanguagePlugin =  require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin({geoLocation: true})) \n```\n---\n## javascript\n**TYPE**: boolean\n\n**DEFAULT**: true\n\n**DESCRIPTION**: Set a custom `navigator.language` \u0026 `navigator.languages` javascript getters.\n\n**USAGE**:\n```javascript\nconst puppeteer =  require('puppeteer-extra')\nconst ForceCustomLanguagePlugin =  require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin({javascript: true})) \n```\n---\n## requestInterceptionPriority\n**TYPE**: number\n\n**DEFAULT**: -1\n\n**DESCRIPTION**: Set the request interceptor priority. [See this](https://pptr.dev/guides/request-interception)\n\n**USAGE**:\n```javascript\nconst puppeteer =  require('puppeteer-extra')\nconst ForceCustomLanguagePlugin =  require('puppeteer-extra-plugin-force-custom-language')\npuppeteer.use(ForceCustomLanguagePlugin({requestInterceptionPriority: 0})) \n```\n\n## Tools\n\n1. **Check IP Assignment** ([tools/checkIPs.js](tools/checkIPs.js))\n  _with this tool you can check if the ip addresses found in the local.json file are still assigned to their corresponding country. ⬇️_\n  \u003cimg src=\"https://i.imgur.com/dGw4kll.png\" width=\"250\"/\u003e\n\n---\n## Contributing\n\nPRs are welcome.\n\n---\n\n## License\n\nCopyright © 2025, CypherFox Released under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcipher-fox%2Fpuppeteer-extra-plugin-force-custom-language","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcipher-fox%2Fpuppeteer-extra-plugin-force-custom-language","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcipher-fox%2Fpuppeteer-extra-plugin-force-custom-language/lists"}