Sets the correct timezone based in IP geolocation for each page that opens.
The correct timezone is fetched and saved to cache once a Browser
intance opens. All the pages belonging to it will have their timezone emulated.
For IPs where the timezone can't be detected, a warning will be thrown using the standard puppeteer-extra
logger.
yarn add puppeteer-extra-plugin-timezone
# or
npm install puppeteer-extra-plugin-timezone
First of all, you have to register the plugin with puppeteer-extra
.
JavaScript:
puppeteer.use(require('puppeteer-extra-plugin-timezone').default())
TypeScript:
import TimezonePlugin from 'puppeteer-extra-plugin-timezone';
puppeteer.use(TimezonePlugin())
You can then use puppeteer as usual:
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://whoer.net')
The tests are defined in src/plugin.spec.ts
.
- You need to add a proxy server IP in
src/constants.ts
- You can run the tests using either
yarn test
ornpm test
.
You can see the package's logs by setting the DEBUG=puppeteer-extra-plugin:timezone
env variable.
Example: DEBUG=puppeteer-extra-plugin:timezone npm test
See the core Puppeteer-Extra Plugin docs for additional information: https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin
We appreciate all contributions.
What's needed:
-
page.authenticate
support - Get timezone from other fallback iptest websites
Done:
- Fix memory leak (remove timezone informations on browser disconnect)
- Make it work somehow (prescience)
- Specifying a default fallback timezone (prescience)
- Sticky per-browser timezone (save the timezone for each browser to avoid unnecessary calls to Lumtest)
MIT