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-timezoneFirst 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 testornpm 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.authenticatesupport - 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