1.0.5 • Published 2 years ago

puppeteer-extra-plugin-replayer v1.0.5

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

puppeteer-extra-plugin-replayer

Replay and modify caught requests by intercepting network activity within puppeteer scripts.

This package is prepared for:

  • QA Engineers
  • Reverse Engineers
  • Scrapers
  • Penetration Testers

Installation

npm install puppeteer-extra-plugin-replayer

How to use

There are two scenarios to catch ongoing requests:

  • initial requests when the site opens
  • requests are triggered by user actions such as mouse click or search

In the first scenario, the page initiating must be done in the trigger function.

(async () => {
    const request = await page.catchRequest({
        pattern: /hashflags.json/
    }, () => page.goto("https://twitter.com"));

    const response = await request.replay();
})();

In the second scenario, the interaction function that triggers the wanted request must be called in the trigger function of the catchReques method.

(async () => {
    await page.goto("https://twitter.com")

    //...

    const request = await page.catchRequest({
        pattern: /onboarding\/task\.json\?flow_name=login/
    }, async () => {
        await page.waitForSelector("a[href='/login']")
        await page.click("a[href='/login']")
    });

    await request.replay();
})();

You can see original and replayed requests on the network tab in CDP.

API

page.catchRequest(PatternObject, triggerFunction)

The plugin provides a function as .catchRequest(PatternObject, triggerFunction), which can be used to catch ongoing requests. The function returns an extended version of HTTPRequest object, which includes .replay() method.

request.replay(RequestInit?)

The .replay() method takes an optional argument as an extended version of RequestInit object that includes functionated version of strign parameters such url, method and headers, and body.