puppeteer-pro 1.5.14 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export declare class Plugin {
10
10
  protected requiresInterception: boolean;
11
11
  get isInitialized(): boolean;
12
12
  get isStopped(): boolean;
13
- protected addDependency(plugin: Plugin): Promise<void>;
13
+ addDependency(plugin: Plugin): Promise<void>;
14
14
  init(browser: Puppeteer.Browser): Promise<void>;
15
15
  protected afterLaunch(_browser: Puppeteer.Browser): Promise<void>;
16
16
  protected onClose(): Promise<void>;
@@ -18,8 +18,8 @@ export declare class Plugin {
18
18
  protected onPageCreated(_page: Puppeteer.Page): Promise<void>;
19
19
  protected onRequest(request: Puppeteer.HTTPRequest): Promise<void>;
20
20
  protected processRequest(_request: Puppeteer.HTTPRequest): Promise<void>;
21
- protected onDialog(dialog: Puppeteer.Dialog): Promise<void>;
22
- protected processDialog(_dialog: Puppeteer.Dialog): Promise<void>;
21
+ protected onDialog(dialog: Dialog): Promise<void>;
22
+ protected processDialog(_dialog: Dialog): Promise<void>;
23
23
  protected beforeRestart(): Promise<void>;
24
24
  restart(): Promise<void>;
25
25
  protected afterRestart(): Promise<void>;
@@ -42,4 +42,8 @@ import { ManageCookiesPlugin, ManageCookiesOption } from './plugins/manage.cooki
42
42
  export declare function manageCookies(opts: ManageCookiesOption): ManageCookiesPlugin;
43
43
  import { SolveRecaptchaPlugin } from './plugins/solve.recaptcha';
44
44
  export declare function solveRecaptchas(accessToken: string): SolveRecaptchaPlugin;
45
+ interface Dialog extends Puppeteer.Dialog {
46
+ handled: boolean;
47
+ }
48
+ export {};
45
49
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAIvC,wBAAsB,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAc5F;AAED,yIAAyI;AACzI,wBAAsB,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,4BAA4B,GAAG,SAAS,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAgBrK;AAID,qBAAa,MAAM;IACjB,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAQ;IACnD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAK;IACzB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IACtC,SAAS,CAAC,oBAAoB,UAAS;IAEvC,IAAI,aAAa,YAA+B;IAChD,IAAI,SAAS,YAAsC;cAEnC,aAAa,CAAC,MAAM,EAAE,MAAM;IAItC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO;cA6BrB,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO;cACvC,OAAO;cAEP,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM;cAoExC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI;cAEnC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW;cAOxC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW;cAE9C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM;cAQjC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM;cAEvC,aAAa;IACvB,OAAO;cAUG,YAAY;cAEZ,UAAU;IACpB,IAAI;cAkBM,SAAS;cAET,YAAY;CAS7B;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,QAA2B;AACnE,wBAAsB,YAAY,kBAMjC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,wBAAgB,kBAAkB,IAAI,wBAAwB,CAI7D;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,wBAAgB,cAAc,IAAI,oBAAoB,CAIrD;AAED,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC3E,wBAAgB,cAAc,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAI7E;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,wBAAgB,cAAc,CAAC,WAAW,UAAQ,GAAG,oBAAoB,CAIxE;AAED,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpF,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAI5E;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAIzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAIvC,wBAAsB,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAc5F;AAED,yIAAyI;AACzI,wBAAsB,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,4BAA4B,GAAG,SAAS,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAgBrK;AAID,qBAAa,MAAM;IACjB,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAQ;IACnD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAK;IACzB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IACtC,SAAS,CAAC,oBAAoB,UAAS;IAEvC,IAAI,aAAa,YAA+B;IAChD,IAAI,SAAS,YAAsC;IAE7C,aAAa,CAAC,MAAM,EAAE,MAAM;IAI5B,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO;cA6BrB,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO;cACvC,OAAO;cAEP,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM;cAoExC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI;cAEnC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW;cAOxC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW;cAE9C,QAAQ,CAAC,MAAM,EAAE,MAAM;cAavB,aAAa,CAAC,OAAO,EAAE,MAAM;cAE7B,aAAa;IACvB,OAAO;cAUG,YAAY;cAEZ,UAAU;IACpB,IAAI;cAkBM,SAAS;cAET,YAAY;CAS7B;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,QAA2B;AACnE,wBAAsB,YAAY,kBAMjC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,wBAAgB,kBAAkB,IAAI,wBAAwB,CAI7D;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,wBAAgB,cAAc,IAAI,oBAAoB,CAIrD;AAED,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC3E,wBAAgB,cAAc,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAI7E;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,wBAAgB,cAAc,CAAC,WAAW,UAAQ,GAAG,oBAAoB,CAIxE;AAED,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpF,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAI5E;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAIzE;AAED,UAAU,MAAO,SAAQ,SAAS,CAAC,MAAM;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB"}
package/index.js CHANGED
@@ -142,11 +142,15 @@ class Plugin {
142
142
  }
143
143
  async processRequest(_request) { null; }
144
144
  async onDialog(dialog) {
145
- const handled = dialog._handled;
146
- if (handled)
147
- return;
148
145
  if (this.isStopped)
149
146
  return;
147
+ const _dismiss = dialog.dismiss;
148
+ dialog.dismiss = async () => {
149
+ if (dialog.handled)
150
+ return;
151
+ dialog.handled = true;
152
+ await _dismiss.apply(dialog);
153
+ };
150
154
  await this.processDialog(dialog);
151
155
  }
152
156
  async processDialog(_dialog) { null; }
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable prefer-rest-params */\nimport * as events from 'events';\n\n// Puppeteer Defaults\nimport * as Puppeteer from 'puppeteer';\n\nconst browserEvents = new events.EventEmitter();\n\nexport async function connect(options?: Puppeteer.ConnectOptions): Promise<Puppeteer.Browser> {\n const browser = await Puppeteer.connect(options || {});\n\n for (const plugin of plugins) {\n await plugin.init(browser);\n }\n\n const _close = browser.close;\n browser.close = async () => {\n await _close.apply(browser);\n browserEvents.emit('close');\n };\n\n return browser;\n}\n\n/** The method launches a browser instance with given arguments. The browser will be closed when the parent node.js process is closed. */\nexport async function launch(options?: Puppeteer.LaunchOptions & Puppeteer.BrowserLaunchArgumentOptions & Puppeteer.BrowserConnectOptions): Promise<Puppeteer.Browser> {\n if (!options) options = {};\n\n const browser = await Puppeteer.launch({ defaultViewport: undefined, ...options });\n\n for (const plugin of plugins) {\n await plugin.init(browser);\n }\n\n const _close = browser.close;\n browser.close = async () => {\n await _close.apply(browser);\n browserEvents.emit('close');\n };\n\n return browser;\n}\n\n// PuppeteerPro\nlet interceptions = 0;\nexport class Plugin {\n protected browser: Puppeteer.Browser | null = null;\n private initialized = false;\n private startCounter = 0;\n protected dependencies: Plugin[] = [];\n protected requiresInterception = false;\n\n get isInitialized() { return this.initialized; }\n get isStopped() { return this.startCounter === 0; }\n\n protected async addDependency(plugin: Plugin) {\n this.dependencies.push(plugin);\n }\n\n async init(browser: Puppeteer.Browser) {\n if (this.initialized) return;\n\n this.browser = browser;\n\n const offOnClose: (() => void)[] = [];\n browserEvents.once('close', async () => {\n offOnClose.forEach(fn => fn());\n\n this.browser = null;\n this.initialized = false;\n this.startCounter = 0;\n\n await this.onClose();\n });\n\n this.startCounter++;\n\n const thisOnTargetCreated = this.onTargetCreated.bind(this);\n browser.on('targetcreated', thisOnTargetCreated);\n offOnClose.push(() => browser.off('targetcreated', thisOnTargetCreated));\n\n this.initialized = true;\n\n this.dependencies.forEach(x => x.init(browser));\n\n return this.afterLaunch(browser);\n }\n\n protected async afterLaunch(_browser: Puppeteer.Browser) { null; }\n protected async onClose() { null; }\n\n protected async onTargetCreated(target: Puppeteer.Target) {\n if (this.isStopped) return;\n\n if (target.type() !== 'page') return;\n const page = await target.page() as Puppeteer.Page;\n if (page.isClosed()) return;\n\n const offOnClose: (() => void)[] = [];\n page.once('close', async () => {\n offOnClose.forEach(fn => fn());\n });\n\n const requestHandlers: ((request: any) => void)[] = [];\n page.on('request', request => {\n const _respond = request.respond;\n let responded = 0;\n let respondArgs: IArguments;\n\n const _abort = request.abort;\n let aborted = 0;\n let abortArgs: IArguments;\n\n const _continue = request.continue;\n let continued = 0;\n let continueArgs: IArguments;\n\n const handleRequest = async function () {\n const total = responded + aborted + continued;\n\n if (!(request as any)._interceptionHandled) {\n if (responded === 1) await _respond.apply(request, respondArgs);\n else if (responded === 0 && aborted >= 1 && total === requestHandlers.length) await _abort.apply(request, abortArgs);\n else if (continued === requestHandlers.length) await _continue.apply(request, continueArgs);\n }\n };\n\n request.respond = async function () { responded++; respondArgs = respondArgs || arguments; await handleRequest(); };\n request.abort = async function () { aborted++; abortArgs = abortArgs || arguments; await handleRequest(); };\n request.continue = async function () { continued++; continueArgs = continueArgs || arguments; await handleRequest(); };\n\n requestHandlers.forEach(handler => handler(request));\n });\n\n const _pageOn = page.on;\n page.on = function async(eventName, handler) {\n if (eventName === 'request') {\n requestHandlers.push(handler);\n\n return page;\n } else {\n return _pageOn.call(page, eventName, handler);\n }\n };\n\n if (this.requiresInterception) {\n await page.setRequestInterception(true);\n\n const thisOnRequest = this.onRequest.bind(this);\n page.on('request', thisOnRequest);\n offOnClose.push(() => page.off('request', thisOnRequest));\n }\n\n const thisOnDialog = this.onDialog.bind(this);\n page.on('dialog', thisOnDialog);\n offOnClose.push(() => page.off('dialog', thisOnDialog));\n\n await this.onPageCreated(page);\n }\n protected async onPageCreated(_page: Puppeteer.Page) { null; }\n\n protected async onRequest(request: Puppeteer.HTTPRequest) {\n const interceptionHandled = (request as any)._interceptionHandled;\n if (interceptionHandled) return;\n if (this.isStopped) return request.continue();\n\n await this.processRequest(request);\n }\n protected async processRequest(_request: Puppeteer.HTTPRequest) { null; }\n\n protected async onDialog(dialog: Puppeteer.Dialog) {\n const handled = (dialog as any)._handled;\n\n if (handled) return;\n if (this.isStopped) return;\n\n await this.processDialog(dialog);\n }\n protected async processDialog(_dialog: Puppeteer.Dialog) { null; }\n\n protected async beforeRestart() { null; }\n async restart() {\n await this.beforeRestart();\n\n this.startCounter++;\n if (this.requiresInterception) interceptions++;\n\n this.dependencies.forEach(x => x.restart());\n\n await this.afterRestart();\n }\n protected async afterRestart() { null; }\n\n protected async beforeStop() { null; }\n async stop() {\n await this.beforeStop();\n\n this.startCounter--;\n if (this.requiresInterception) interceptions--;\n\n if (interceptions === 0 && this.browser) {\n const pages = await this.browser.pages();\n\n pages.filter(x => !x.isClosed()).forEach(async (page: Puppeteer.Page) => {\n await page.setRequestInterception(false);\n });\n }\n\n this.dependencies.forEach(x => x.stop());\n\n await this.afterStop();\n }\n protected async afterStop() { null; }\n\n protected async getFirstPage() {\n if (!this.browser) return null;\n\n const pages = await this.browser.pages();\n const openPages = pages.filter(x => !x.isClosed());\n const activePages = pages.filter(x => x.url() !== 'about:blank');\n\n return activePages[0] || openPages[0];\n }\n}\n\nlet plugins: Plugin[] = [];\nexport function addPlugin(plugin: Plugin) { plugins.push(plugin); }\nexport async function clearPlugins() {\n plugins.forEach(async plugin => {\n await plugin.stop();\n });\n\n plugins = [];\n}\n\nimport { AnonymizeUserAgentPlugin } from './plugins/anonymize.user.agent/index';\nexport function anonymizeUserAgent(): AnonymizeUserAgentPlugin {\n const plugin = new AnonymizeUserAgentPlugin();\n plugins.push(plugin);\n return plugin;\n}\n\nimport { AvoidDetectionPlugin } from './plugins/avoid.detection';\nexport function avoidDetection(): AvoidDetectionPlugin {\n const plugin = new AvoidDetectionPlugin();\n plugins.push(plugin);\n return plugin;\n}\n\nimport { BlockResourcesPlugin, Resource } from './plugins/block.resources';\nexport function blockResources(...resources: Resource[]): BlockResourcesPlugin {\n const plugin = new BlockResourcesPlugin(resources);\n plugins.push(plugin);\n return plugin;\n}\n\nimport { DisableDialogsPlugin } from './plugins/disable.dialogs';\nexport function disableDialogs(logMessages = false): DisableDialogsPlugin {\n const plugin = new DisableDialogsPlugin(logMessages);\n plugins.push(plugin);\n return plugin;\n}\n\nimport { ManageCookiesPlugin, ManageCookiesOption } from './plugins/manage.cookies';\nexport function manageCookies(opts: ManageCookiesOption): ManageCookiesPlugin {\n const plugin = new ManageCookiesPlugin(opts);\n plugins.push(plugin);\n return plugin;\n}\n\nimport { SolveRecaptchaPlugin } from './plugins/solve.recaptcha';\nexport function solveRecaptchas(accessToken: string): SolveRecaptchaPlugin {\n const plugin = new SolveRecaptchaPlugin(accessToken);\n plugins.push(plugin);\n return plugin;\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable prefer-rest-params */\nimport * as events from 'events';\n\n// Puppeteer Defaults\nimport * as Puppeteer from 'puppeteer';\n\nconst browserEvents = new events.EventEmitter();\n\nexport async function connect(options?: Puppeteer.ConnectOptions): Promise<Puppeteer.Browser> {\n const browser = await Puppeteer.connect(options || {});\n\n for (const plugin of plugins) {\n await plugin.init(browser);\n }\n\n const _close = browser.close;\n browser.close = async () => {\n await _close.apply(browser);\n browserEvents.emit('close');\n };\n\n return browser;\n}\n\n/** The method launches a browser instance with given arguments. The browser will be closed when the parent node.js process is closed. */\nexport async function launch(options?: Puppeteer.LaunchOptions & Puppeteer.BrowserLaunchArgumentOptions & Puppeteer.BrowserConnectOptions): Promise<Puppeteer.Browser> {\n if (!options) options = {};\n\n const browser = await Puppeteer.launch({ defaultViewport: undefined, ...options });\n\n for (const plugin of plugins) {\n await plugin.init(browser);\n }\n\n const _close = browser.close;\n browser.close = async () => {\n await _close.apply(browser);\n browserEvents.emit('close');\n };\n\n return browser;\n}\n\n// PuppeteerPro\nlet interceptions = 0;\nexport class Plugin {\n protected browser: Puppeteer.Browser | null = null;\n private initialized = false;\n private startCounter = 0;\n protected dependencies: Plugin[] = [];\n protected requiresInterception = false;\n\n get isInitialized() { return this.initialized; }\n get isStopped() { return this.startCounter === 0; }\n\n async addDependency(plugin: Plugin) {\n this.dependencies.push(plugin);\n }\n\n async init(browser: Puppeteer.Browser) {\n if (this.initialized) return;\n\n this.browser = browser;\n\n const offOnClose: (() => void)[] = [];\n browserEvents.once('close', async () => {\n offOnClose.forEach(fn => fn());\n\n this.browser = null;\n this.initialized = false;\n this.startCounter = 0;\n\n await this.onClose();\n });\n\n this.startCounter++;\n\n const thisOnTargetCreated = this.onTargetCreated.bind(this);\n browser.on('targetcreated', thisOnTargetCreated);\n offOnClose.push(() => browser.off('targetcreated', thisOnTargetCreated));\n\n this.initialized = true;\n\n this.dependencies.forEach(x => x.init(browser));\n\n return this.afterLaunch(browser);\n }\n\n protected async afterLaunch(_browser: Puppeteer.Browser) { null; }\n protected async onClose() { null; }\n\n protected async onTargetCreated(target: Puppeteer.Target) {\n if (this.isStopped) return;\n\n if (target.type() !== 'page') return;\n const page = await target.page() as Puppeteer.Page;\n if (page.isClosed()) return;\n\n const offOnClose: (() => void)[] = [];\n page.once('close', async () => {\n offOnClose.forEach(fn => fn());\n });\n\n const requestHandlers: ((request: any) => void)[] = [];\n page.on('request', request => {\n const _respond = request.respond;\n let responded = 0;\n let respondArgs: IArguments;\n\n const _abort = request.abort;\n let aborted = 0;\n let abortArgs: IArguments;\n\n const _continue = request.continue;\n let continued = 0;\n let continueArgs: IArguments;\n\n const handleRequest = async function () {\n const total = responded + aborted + continued;\n\n if (!(request as any)._interceptionHandled) {\n if (responded === 1) await _respond.apply(request, respondArgs);\n else if (responded === 0 && aborted >= 1 && total === requestHandlers.length) await _abort.apply(request, abortArgs);\n else if (continued === requestHandlers.length) await _continue.apply(request, continueArgs);\n }\n };\n\n request.respond = async function () { responded++; respondArgs = respondArgs || arguments; await handleRequest(); };\n request.abort = async function () { aborted++; abortArgs = abortArgs || arguments; await handleRequest(); };\n request.continue = async function () { continued++; continueArgs = continueArgs || arguments; await handleRequest(); };\n\n requestHandlers.forEach(handler => handler(request));\n });\n\n const _pageOn = page.on;\n page.on = function async(eventName, handler) {\n if (eventName === 'request') {\n requestHandlers.push(handler);\n\n return page;\n } else {\n return _pageOn.call(page, eventName, handler);\n }\n };\n\n if (this.requiresInterception) {\n await page.setRequestInterception(true);\n\n const thisOnRequest = this.onRequest.bind(this);\n page.on('request', thisOnRequest);\n offOnClose.push(() => page.off('request', thisOnRequest));\n }\n\n const thisOnDialog = this.onDialog.bind(this);\n page.on('dialog', thisOnDialog);\n offOnClose.push(() => page.off('dialog', thisOnDialog));\n\n await this.onPageCreated(page);\n }\n protected async onPageCreated(_page: Puppeteer.Page) { null; }\n\n protected async onRequest(request: Puppeteer.HTTPRequest) {\n const interceptionHandled = (request as any)._interceptionHandled;\n if (interceptionHandled) return;\n if (this.isStopped) return request.continue();\n\n await this.processRequest(request);\n }\n protected async processRequest(_request: Puppeteer.HTTPRequest) { null; }\n\n protected async onDialog(dialog: Dialog) {\n if (this.isStopped) return;\n\n const _dismiss = dialog.dismiss;\n dialog.dismiss = async () => {\n if (dialog.handled) return;\n\n dialog.handled = true;\n await _dismiss.apply(dialog);\n };\n\n await this.processDialog(dialog);\n }\n protected async processDialog(_dialog: Dialog) { null; }\n\n protected async beforeRestart() { null; }\n async restart() {\n await this.beforeRestart();\n\n this.startCounter++;\n if (this.requiresInterception) interceptions++;\n\n this.dependencies.forEach(x => x.restart());\n\n await this.afterRestart();\n }\n protected async afterRestart() { null; }\n\n protected async beforeStop() { null; }\n async stop() {\n await this.beforeStop();\n\n this.startCounter--;\n if (this.requiresInterception) interceptions--;\n\n if (interceptions === 0 && this.browser) {\n const pages = await this.browser.pages();\n\n pages.filter(x => !x.isClosed()).forEach(async (page: Puppeteer.Page) => {\n await page.setRequestInterception(false);\n });\n }\n\n this.dependencies.forEach(x => x.stop());\n\n await this.afterStop();\n }\n protected async afterStop() { null; }\n\n protected async getFirstPage() {\n if (!this.browser) return null;\n\n const pages = await this.browser.pages();\n const openPages = pages.filter(x => !x.isClosed());\n const activePages = pages.filter(x => x.url() !== 'about:blank');\n\n return activePages[0] || openPages[0];\n }\n}\n\nlet plugins: Plugin[] = [];\nexport function addPlugin(plugin: Plugin) { plugins.push(plugin); }\nexport async function clearPlugins() {\n plugins.forEach(async plugin => {\n await plugin.stop();\n });\n\n plugins = [];\n}\n\nimport { AnonymizeUserAgentPlugin } from './plugins/anonymize.user.agent/index';\nexport function anonymizeUserAgent(): AnonymizeUserAgentPlugin {\n const plugin = new AnonymizeUserAgentPlugin();\n plugins.push(plugin);\n return plugin;\n}\n\nimport { AvoidDetectionPlugin } from './plugins/avoid.detection';\nexport function avoidDetection(): AvoidDetectionPlugin {\n const plugin = new AvoidDetectionPlugin();\n plugins.push(plugin);\n return plugin;\n}\n\nimport { BlockResourcesPlugin, Resource } from './plugins/block.resources';\nexport function blockResources(...resources: Resource[]): BlockResourcesPlugin {\n const plugin = new BlockResourcesPlugin(resources);\n plugins.push(plugin);\n return plugin;\n}\n\nimport { DisableDialogsPlugin } from './plugins/disable.dialogs';\nexport function disableDialogs(logMessages = false): DisableDialogsPlugin {\n const plugin = new DisableDialogsPlugin(logMessages);\n plugins.push(plugin);\n return plugin;\n}\n\nimport { ManageCookiesPlugin, ManageCookiesOption } from './plugins/manage.cookies';\nexport function manageCookies(opts: ManageCookiesOption): ManageCookiesPlugin {\n const plugin = new ManageCookiesPlugin(opts);\n plugins.push(plugin);\n return plugin;\n}\n\nimport { SolveRecaptchaPlugin } from './plugins/solve.recaptcha';\nexport function solveRecaptchas(accessToken: string): SolveRecaptchaPlugin {\n const plugin = new SolveRecaptchaPlugin(accessToken);\n plugins.push(plugin);\n return plugin;\n}\n\ninterface Dialog extends Puppeteer.Dialog {\n handled: boolean;\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "puppeteer-pro",
3
- "version": "1.5.14",
3
+ "version": "1.6.2",
4
4
  "description": "A simple puppeteer wrapper to enable useful plugins with ease",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,7 +11,7 @@
11
11
  "postbuild": "npm run copy:injections && npm run copy:files",
12
12
  "copy:injections": "copyfiles -u 1 src/plugins/*/injections/* dist",
13
13
  "copy:files": "copyfiles package.json README.md LICENSE dist",
14
- "test": "mocha --timeout 30000"
14
+ "test": "jest"
15
15
  },
16
16
  "repository": {
17
17
  "type": "git",
@@ -37,21 +37,24 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "axios": "^0.27.2",
40
- "ghost-cursor": "^1.1.11",
41
- "user-agents": "^1.0.1046"
40
+ "ghost-cursor": "^1.1.13",
41
+ "user-agents": "^1.0.1074"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/node": "^18.0.0",
44
+ "@types/jest": "^28.1.6",
45
+ "@types/node": "^18.6.2",
45
46
  "@types/user-agents": "^1.0.2",
46
- "@typescript-eslint/eslint-plugin": "^5.28.0",
47
- "@typescript-eslint/parser": "^5.28.0",
48
- "chai": "^4.3.6",
47
+ "@typescript-eslint/eslint-plugin": "^5.31.0",
48
+ "@typescript-eslint/parser": "^5.31.0",
49
49
  "copyfiles": "^2.4.1",
50
50
  "dotenv-safe": "^8.2.0",
51
- "eslint": "^8.18.0",
52
- "mocha": "^10.0.0",
53
- "puppeteer": "^14.4.1",
51
+ "eslint": "^8.20.0",
52
+ "eslint-plugin-deprecation": "^1.3.2",
53
+ "jest": "^28.1.3",
54
+ "puppeteer": "^15.5.0",
54
55
  "rimraf": "^3.0.2",
56
+ "ts-jest": "^28.0.7",
57
+ "ts-node": "^10.9.1",
55
58
  "typescript": "^4.7.4"
56
59
  }
57
60
  }
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.AvoidDetectionPlugin = void 0;
3
- const fs = require("fs");
4
- const path = require("path");
3
+ const fs_1 = require("fs");
4
+ const path_1 = require("path");
5
5
  const index_1 = require("../../index");
6
6
  const index_2 = require("./../anonymize.user.agent/index");
7
- const injectionsFolder = path.resolve(`${__dirname}/injections`);
8
- const injections = fs.readdirSync(injectionsFolder).map(fileName => require(`${injectionsFolder}/${fileName}`));
7
+ const injectionsFolder = (0, path_1.resolve)(`${__dirname}/injections`);
8
+ const injections = (0, fs_1.readdirSync)(injectionsFolder).map(fileName => require(`${injectionsFolder}/${fileName}`));
9
9
  class AvoidDetectionPlugin extends index_1.Plugin {
10
10
  constructor() {
11
11
  super(...arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/avoid.detection/index.ts"],"names":[],"mappings":";;AAAA,yBAAyB;AACzB,6BAA6B;AAG7B,uCAAqC;AACrC,2DAA2E;AAE3E,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,aAAa,CAAC,CAAC;AACjE,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,gBAAgB,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;AAEhH,MAAa,oBAAqB,SAAQ,cAAM;IAAhD;;QACE,iBAAY,GAAG,CAAC,IAAI,gCAAwB,EAAE,CAAC,CAAC;IAOlD,CAAC;IALW,KAAK,CAAC,aAAa,CAAC,IAAoB;QAChD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;SACtF;IACH,CAAC;CACF;AARD,oDAQC","sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport * as Puppeteer from 'puppeteer';\n\nimport { Plugin } from '../../index';\nimport { AnonymizeUserAgentPlugin } from './../anonymize.user.agent/index';\n\nconst injectionsFolder = path.resolve(`${__dirname}/injections`);\nconst injections = fs.readdirSync(injectionsFolder).map(fileName => require(`${injectionsFolder}/${fileName}`));\n\nexport class AvoidDetectionPlugin extends Plugin {\n dependencies = [new AnonymizeUserAgentPlugin()];\n\n protected async onPageCreated(page: Puppeteer.Page) {\n for (const injection of injections) {\n if (!this.isStopped && !page.isClosed()) await page.evaluateOnNewDocument(injection);\n }\n }\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/avoid.detection/index.ts"],"names":[],"mappings":";;AAAA,2BAAiC;AACjC,+BAA8C;AAG9C,uCAAqC;AACrC,2DAA2E;AAE3E,MAAM,gBAAgB,GAAG,IAAA,cAAW,EAAC,GAAG,SAAS,aAAa,CAAC,CAAC;AAChE,MAAM,UAAU,GAAG,IAAA,gBAAW,EAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,gBAAgB,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE7G,MAAa,oBAAqB,SAAQ,cAAM;IAAhD;;QACE,iBAAY,GAAG,CAAC,IAAI,gCAAwB,EAAE,CAAC,CAAC;IAOlD,CAAC;IALW,KAAK,CAAC,aAAa,CAAC,IAAoB;QAChD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;SACtF;IACH,CAAC;CACF;AARD,oDAQC","sourcesContent":["import { readdirSync } from 'fs';\nimport { resolve as resolvePath } from 'path';\nimport * as Puppeteer from 'puppeteer';\n\nimport { Plugin } from '../../index';\nimport { AnonymizeUserAgentPlugin } from './../anonymize.user.agent/index';\n\nconst injectionsFolder = resolvePath(`${__dirname}/injections`);\nconst injections = readdirSync(injectionsFolder).map(fileName => require(`${injectionsFolder}/${fileName}`));\n\nexport class AvoidDetectionPlugin extends Plugin {\n dependencies = [new AnonymizeUserAgentPlugin()];\n\n protected async onPageCreated(page: Puppeteer.Page) {\n for (const injection of injections) {\n if (!this.isStopped && !page.isClosed()) await page.evaluateOnNewDocument(injection);\n }\n }\n}"]}
@@ -4,10 +4,10 @@ export interface ManageCookiesOption {
4
4
  saveLocation: string;
5
5
  mode: 'manual' | 'monitor';
6
6
  stringify?: (cookies: {
7
- [profile: string]: Puppeteer.Protocol.Network.Cookie[];
7
+ [profile: string]: Cookie[];
8
8
  }) => string;
9
9
  parse?: (cookies: string) => {
10
- [profile: string]: Puppeteer.Protocol.Network.Cookie[];
10
+ [profile: string]: Cookie[];
11
11
  };
12
12
  disableWarning?: boolean;
13
13
  profile?: 'string';
@@ -33,4 +33,6 @@ export declare class ManageCookiesPlugin extends Plugin {
33
33
  private clearProfileCookies;
34
34
  private getCookies;
35
35
  }
36
+ declare type Cookie = Puppeteer.ProtocolMapping.Commands['Network.getAllCookies']['returnType']['cookies'][number];
37
+ export {};
36
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/manage.cookies/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;KAAE,KAAK,MAAM,CAAC;IAC5F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;KAAE,CAAC;IACxF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,qBAAa,mBAAoB,SAAQ,MAAM;IAC7C,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,SAAS,CAAoG;IACrH,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,UAAU,CAAkE;gBAExE,IAAI,EAAE,mBAAmB;cAgBrB,WAAW;cAQX,YAAY;IAItB,eAAe,CAAC,OAAO,EAAE,MAAM;IAQ/B,IAAI;IAOJ,IAAI;IAOJ,KAAK;YAMG,YAAY;YAyBZ,kBAAkB;YAOlB,kBAAkB;YAkBlB,mBAAmB;YAqBnB,UAAU;CAczB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/manage.cookies/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,KAAK,MAAM,CAAC;IACjE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED,qBAAa,mBAAoB,SAAQ,MAAM;IAC7C,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,SAAS,CAAyE;IAC1F,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,UAAU,CAAuC;gBAE7C,IAAI,EAAE,mBAAmB;cAgBrB,WAAW;cAQX,YAAY;IAItB,eAAe,CAAC,OAAO,EAAE,MAAM;IAQ/B,IAAI;IAOJ,IAAI;IAOJ,KAAK;YAMG,YAAY;YAyBZ,kBAAkB;YAOlB,kBAAkB;YAkBlB,mBAAmB;YAqBnB,UAAU;CAczB;AAED,aAAK,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -125,7 +125,7 @@ class ManageCookiesPlugin extends index_1.Plugin {
125
125
  return [];
126
126
  try {
127
127
  const client = await page.target().createCDPSession();
128
- const { cookies } = (await client.send('Network.getAllCookies') || {});
128
+ const { cookies } = await client.send('Network.getAllCookies') || {};
129
129
  return cookies;
130
130
  }
131
131
  catch (_a) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/manage.cookies/index.ts"],"names":[],"mappings":"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","sourcesContent":["// https://gist.github.com/jeroenvisser101/636030fe66ea929b63a33f5cb3a711ad\n\nimport * as crypto from 'crypto';\nimport * as fs from 'fs';\nimport * as Puppeteer from 'puppeteer';\n\nimport { Plugin } from '../../index';\n\nconst sleep = (time: number) => { return new Promise(resolve => { setTimeout(resolve, time); }); };\n\nexport interface ManageCookiesOption {\n saveLocation: string;\n mode: 'manual' | 'monitor';\n stringify?: (cookies: { [profile: string]: Puppeteer.Protocol.Network.Cookie[] }) => string;\n parse?: (cookies: string) => { [profile: string]: Puppeteer.Protocol.Network.Cookie[] };\n disableWarning?: boolean;\n profile?: 'string';\n}\n\nexport class ManageCookiesPlugin extends Plugin {\n private saveLocation = '';\n private mode = '';\n private stringify = (cookies: { [profile: string]: Puppeteer.Protocol.Network.Cookie[] }) => JSON.stringify(cookies);\n private parse = (cookies: string) => JSON.parse(cookies);\n private disableWarning = false;\n private profile = 'default';\n\n private allCookies: { [profile: string]: Puppeteer.Protocol.Network.Cookie[] } = {};\n\n constructor(opts: ManageCookiesOption) {\n super();\n\n // Need to find a better typescript way of doing this\n this.saveLocation = opts.saveLocation || this.saveLocation;\n this.mode = opts.mode || this.mode;\n this.stringify = opts.stringify || this.stringify;\n this.parse = opts.parse || this.parse;\n this.disableWarning = opts.disableWarning || this.disableWarning;\n this.profile = opts.profile || this.profile;\n\n if (this.disableWarning !== true) {\n console.warn('Warning: Exposing cookies in an unprotected manner can compromise your security. Add the `disableWarning` flag to remove this message.');\n }\n }\n\n protected async afterLaunch() {\n if (fs.existsSync(this.saveLocation)) {\n this.allCookies = this.parse(fs.readFileSync(this.saveLocation).toString() || '{}');\n }\n\n void this.watchCookies();\n }\n\n protected async afterRestart() {\n void this.watchCookies();\n }\n\n async switchToProfile(profile: string) {\n if (this.isStopped) return;\n\n this.profile = profile;\n\n await this.loadProfileCookies();\n }\n\n async save() {\n if (this.isStopped) return;\n if (this.mode !== 'manual') return;\n\n await this.saveProfileCookies();\n }\n\n async load() {\n if (this.isStopped) return;\n if (this.mode !== 'manual') return;\n\n await this.loadProfileCookies();\n }\n\n async clear() {\n if (this.isStopped) return;\n\n await this.clearProfileCookies();\n }\n\n private async watchCookies() {\n if (this.isStopped) return;\n if (this.mode !== 'monitor') return;\n\n const hash = (x: string) => crypto.createHash('md5').update(x).digest('hex');\n\n let oldProfile = '';\n let oldHash = '';\n\n while (!this.isStopped) {\n const cookies = { [this.profile]: await this.getCookies() };\n const cookiesString = this.stringify(cookies);\n const newHash = hash(cookiesString);\n\n if (oldProfile !== this.profile) {\n oldProfile = this.profile;\n } else if (oldHash !== newHash) {\n oldHash = newHash;\n await this.saveProfileCookies();\n } else {\n await sleep(300);\n }\n }\n }\n\n private async saveProfileCookies() {\n this.allCookies[this.profile] = await this.getCookies();\n\n const cookiesString = this.stringify(this.allCookies);\n fs.writeFileSync(this.saveLocation, cookiesString);\n }\n\n private async loadProfileCookies() {\n const page = await this.getFirstPage();\n if (!page) return;\n\n const requiresRealPage = page.url() === 'about:blank';\n\n if (requiresRealPage) {\n await page.goto('http://www.google.com');\n }\n\n await page.deleteCookie(...await this.getCookies());\n await page.setCookie(...this.allCookies[this.profile] || []);\n\n if (requiresRealPage) {\n await page.goBack();\n }\n }\n\n private async clearProfileCookies() {\n const page = await this.getFirstPage();\n if (!page) return;\n\n const requiresRealPage = page.url() === 'about:blank';\n\n if (requiresRealPage) {\n await page.goto('http://www.google.com');\n }\n\n await page.deleteCookie(...this.allCookies[this.profile] || []);\n delete this.allCookies[this.profile];\n\n const cookiesString = this.stringify(this.allCookies);\n fs.writeFileSync(this.saveLocation, cookiesString);\n\n if (requiresRealPage) {\n await page.goBack();\n }\n }\n\n private async getCookies() {\n const page = await this.getFirstPage();\n if (!page) return [];\n\n try {\n const client = await page.target().createCDPSession();\n const { cookies } = (await client.send('Network.getAllCookies') || {}) as { cookies: Puppeteer.Protocol.Network.Cookie[] };\n\n return cookies;\n }\n catch {\n return [];\n }\n }\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/manage.cookies/index.ts"],"names":[],"mappings":"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","sourcesContent":["// https://gist.github.com/jeroenvisser101/636030fe66ea929b63a33f5cb3a711ad\n\nimport * as crypto from 'crypto';\nimport * as fs from 'fs';\nimport * as Puppeteer from 'puppeteer';\n\nimport { Plugin } from '../../index';\n\nconst sleep = (time: number) => { return new Promise(resolve => { setTimeout(resolve, time); }); };\n\nexport interface ManageCookiesOption {\n saveLocation: string;\n mode: 'manual' | 'monitor';\n stringify?: (cookies: { [profile: string]: Cookie[] }) => string;\n parse?: (cookies: string) => { [profile: string]: Cookie[] };\n disableWarning?: boolean;\n profile?: 'string';\n}\n\nexport class ManageCookiesPlugin extends Plugin {\n private saveLocation = '';\n private mode = '';\n private stringify = (cookies: { [profile: string]: Cookie[] }) => JSON.stringify(cookies);\n private parse = (cookies: string) => JSON.parse(cookies);\n private disableWarning = false;\n private profile = 'default';\n\n private allCookies: { [profile: string]: Cookie[] } = {};\n\n constructor(opts: ManageCookiesOption) {\n super();\n\n // Need to find a better typescript way of doing this\n this.saveLocation = opts.saveLocation || this.saveLocation;\n this.mode = opts.mode || this.mode;\n this.stringify = opts.stringify || this.stringify;\n this.parse = opts.parse || this.parse;\n this.disableWarning = opts.disableWarning || this.disableWarning;\n this.profile = opts.profile || this.profile;\n\n if (this.disableWarning !== true) {\n console.warn('Warning: Exposing cookies in an unprotected manner can compromise your security. Add the `disableWarning` flag to remove this message.');\n }\n }\n\n protected async afterLaunch() {\n if (fs.existsSync(this.saveLocation)) {\n this.allCookies = this.parse(fs.readFileSync(this.saveLocation).toString() || '{}');\n }\n\n void this.watchCookies();\n }\n\n protected async afterRestart() {\n void this.watchCookies();\n }\n\n async switchToProfile(profile: string) {\n if (this.isStopped) return;\n\n this.profile = profile;\n\n await this.loadProfileCookies();\n }\n\n async save() {\n if (this.isStopped) return;\n if (this.mode !== 'manual') return;\n\n await this.saveProfileCookies();\n }\n\n async load() {\n if (this.isStopped) return;\n if (this.mode !== 'manual') return;\n\n await this.loadProfileCookies();\n }\n\n async clear() {\n if (this.isStopped) return;\n\n await this.clearProfileCookies();\n }\n\n private async watchCookies() {\n if (this.isStopped) return;\n if (this.mode !== 'monitor') return;\n\n const hash = (x: string) => crypto.createHash('md5').update(x).digest('hex');\n\n let oldProfile = '';\n let oldHash = '';\n\n while (!this.isStopped) {\n const cookies = { [this.profile]: await this.getCookies() };\n const cookiesString = this.stringify(cookies);\n const newHash = hash(cookiesString);\n\n if (oldProfile !== this.profile) {\n oldProfile = this.profile;\n } else if (oldHash !== newHash) {\n oldHash = newHash;\n await this.saveProfileCookies();\n } else {\n await sleep(300);\n }\n }\n }\n\n private async saveProfileCookies() {\n this.allCookies[this.profile] = await this.getCookies();\n\n const cookiesString = this.stringify(this.allCookies);\n fs.writeFileSync(this.saveLocation, cookiesString);\n }\n\n private async loadProfileCookies() {\n const page = await this.getFirstPage();\n if (!page) return;\n\n const requiresRealPage = page.url() === 'about:blank';\n\n if (requiresRealPage) {\n await page.goto('http://www.google.com');\n }\n\n await page.deleteCookie(...await this.getCookies());\n await page.setCookie(...this.allCookies[this.profile] || []);\n\n if (requiresRealPage) {\n await page.goBack();\n }\n }\n\n private async clearProfileCookies() {\n const page = await this.getFirstPage();\n if (!page) return;\n\n const requiresRealPage = page.url() === 'about:blank';\n\n if (requiresRealPage) {\n await page.goto('http://www.google.com');\n }\n\n await page.deleteCookie(...this.allCookies[this.profile] || []);\n delete this.allCookies[this.profile];\n\n const cookiesString = this.stringify(this.allCookies);\n fs.writeFileSync(this.saveLocation, cookiesString);\n\n if (requiresRealPage) {\n await page.goBack();\n }\n }\n\n private async getCookies() {\n const page = await this.getFirstPage();\n if (!page) return [];\n\n try {\n const client = await page.target().createCDPSession();\n const { cookies } = await client.send('Network.getAllCookies') || {};\n\n return cookies;\n }\n catch {\n return [];\n }\n }\n}\n\ntype Cookie = Puppeteer.ProtocolMapping.Commands['Network.getAllCookies']['returnType']['cookies'][number];"]}
@@ -60,7 +60,7 @@ class SolveRecaptchaPlugin extends index_1.Plugin {
60
60
  const audioBuffer = Buffer.from(new Int8Array(audioArray));
61
61
  const response = await axios_1.default.post('https://api.wit.ai/speech?v=20220527', audioBuffer, {
62
62
  headers: {
63
- 'Authorization': `Bearer ${this.witAiAccessToken}`,
63
+ Authorization: `Bearer ${this.witAiAccessToken}`,
64
64
  'Content-Type': 'audio/wav'
65
65
  }
66
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/solve.recaptcha/index.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport * as path from 'path';\nimport * as Puppeteer from 'puppeteer';\nimport { createCursor } from 'ghost-cursor';\n\nimport { Plugin } from '../../index';\nimport { AvoidDetectionPlugin } from './../avoid.detection/index';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst injection = require(path.resolve(`${__dirname}/injections`) + '/utils.js');\nconst randomBetween = (min: number, max: number) => Math.floor(Math.random() * (max - min)) + min;\n\nexport class SolveRecaptchaPlugin extends Plugin {\n dependencies = [new AvoidDetectionPlugin()];\n witAiAccessToken?: string;\n\n constructor(witAiAccessToken: string) {\n super();\n this.witAiAccessToken = witAiAccessToken;\n }\n\n async hasCaptcha(page: Puppeteer.Page) {\n return page.evaluate(() => !!document.querySelector<HTMLIFrameElement>('iframe[src*=\"api2/anchor\"]')?.contentDocument?.querySelector('#recaptcha-anchor'));\n }\n\n async solveRecaptcha(page: Puppeteer.Page) {\n if (this.isStopped) return;\n if (!this.witAiAccessToken) return;\n if (!(await this.hasCaptcha(page))) return;\n\n const cursor = createCursor(page);\n\n async function waitForSelector(iframeUrlIncludes: string, selector: string) {\n await page.waitForFunction((_iframeUrlIncludes: string, _selector: string) => document.querySelector<HTMLIFrameElement>(`iframe[src*=\"${_iframeUrlIncludes}\"]`)?.contentDocument?.querySelector(_selector), {}, iframeUrlIncludes, selector);\n }\n\n async function findAndClick(iframeUrlIncludes: string, selector: string) {\n await waitForSelector(iframeUrlIncludes, selector);\n\n const element = await page.frames().find(frame => frame.url().includes(iframeUrlIncludes))?.$(selector);\n if (!element) return;\n\n await sleep(randomBetween(1 * 1000, 3 * 1000));\n await cursor.click(element);\n }\n\n let numTriesLeft = 5;\n async function isFinished() {\n if (--numTriesLeft === 0) return true;\n return page.evaluate(() => !!document.querySelector<HTMLIFrameElement>('iframe[src*=\"api2/anchor\"]')?.contentDocument?.querySelector('.recaptcha-checkbox-checked'));\n }\n\n await findAndClick('api2/anchor', '#recaptcha-anchor');\n await findAndClick('api2/bframe', '.rc-button-audio');\n\n while (!(await isFinished())) {\n await waitForSelector('api2/bframe', '.rc-audiochallenge-tdownload-link');\n\n const audioUrl = await page.evaluate(async () => {\n return document.querySelector<HTMLIFrameElement>('iframe[src*=\"api2/bframe\"]')?.contentDocument?.querySelector<HTMLLinkElement>('.rc-audiochallenge-tdownload-link')?.href;\n });\n\n if (!audioUrl) return;\n\n const audioArray = await page.evaluate(injection, audioUrl);\n\n if (!audioArray) return;\n\n const audioBuffer = Buffer.from(new Int8Array(audioArray));\n\n const response = await axios.post<any>('https://api.wit.ai/speech?v=20220527', audioBuffer, {\n headers: {\n 'Authorization': `Bearer ${this.witAiAccessToken}`,\n 'Content-Type': 'audio/wav'\n }\n });\n\n const data = typeof response.data === 'string' ? JSON.parse(response.data.split('\\r\\n').slice(-1)[0] || '{}') : response.data;\n\n if (data?.text) {\n const responseInput = await page.frames().find(frame => frame.url().includes('api2/bframe'))?.$('#audio-response');\n await responseInput?.type(data.text);\n\n await findAndClick('api2/bframe', '#recaptcha-verify-button');\n\n await sleep(1000);\n } else {\n await findAndClick('api2/bframe', '#recaptcha-reload-button');\n }\n }\n }\n}\n\nfunction sleep(timeout: number) {\n return new Promise(resolve => setTimeout(resolve, timeout));\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/solve.recaptcha/index.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport * as path from 'path';\nimport * as Puppeteer from 'puppeteer';\nimport { createCursor } from 'ghost-cursor';\n\nimport { Plugin } from '../../index';\nimport { AvoidDetectionPlugin } from './../avoid.detection/index';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst injection = require(path.resolve(`${__dirname}/injections`) + '/utils.js');\nconst randomBetween = (min: number, max: number) => Math.floor(Math.random() * (max - min)) + min;\n\nexport class SolveRecaptchaPlugin extends Plugin {\n dependencies = [new AvoidDetectionPlugin()];\n witAiAccessToken?: string;\n\n constructor(witAiAccessToken: string) {\n super();\n this.witAiAccessToken = witAiAccessToken;\n }\n\n async hasCaptcha(page: Puppeteer.Page) {\n return page.evaluate(() => !!document.querySelector<HTMLIFrameElement>('iframe[src*=\"api2/anchor\"]')?.contentDocument?.querySelector('#recaptcha-anchor'));\n }\n\n async solveRecaptcha(page: Puppeteer.Page) {\n if (this.isStopped) return;\n if (!this.witAiAccessToken) return;\n if (!(await this.hasCaptcha(page))) return;\n\n const cursor = createCursor(page);\n\n async function waitForSelector(iframeUrlIncludes: string, selector: string) {\n await page.waitForFunction((_iframeUrlIncludes: string, _selector: string) => document.querySelector<HTMLIFrameElement>(`iframe[src*=\"${_iframeUrlIncludes}\"]`)?.contentDocument?.querySelector(_selector), {}, iframeUrlIncludes, selector);\n }\n\n async function findAndClick(iframeUrlIncludes: string, selector: string) {\n await waitForSelector(iframeUrlIncludes, selector);\n\n const element = await page.frames().find(frame => frame.url().includes(iframeUrlIncludes))?.$(selector);\n if (!element) return;\n\n await sleep(randomBetween(1 * 1000, 3 * 1000));\n await cursor.click(element);\n }\n\n let numTriesLeft = 5;\n async function isFinished() {\n if (--numTriesLeft === 0) return true;\n return page.evaluate(() => !!document.querySelector<HTMLIFrameElement>('iframe[src*=\"api2/anchor\"]')?.contentDocument?.querySelector('.recaptcha-checkbox-checked'));\n }\n\n await findAndClick('api2/anchor', '#recaptcha-anchor');\n await findAndClick('api2/bframe', '.rc-button-audio');\n\n while (!(await isFinished())) {\n await waitForSelector('api2/bframe', '.rc-audiochallenge-tdownload-link');\n\n const audioUrl = await page.evaluate(async () => {\n return document.querySelector<HTMLIFrameElement>('iframe[src*=\"api2/bframe\"]')?.contentDocument?.querySelector<HTMLLinkElement>('.rc-audiochallenge-tdownload-link')?.href;\n });\n\n if (!audioUrl) return;\n\n const audioArray = await page.evaluate(injection, audioUrl);\n\n if (!audioArray) return;\n\n const audioBuffer = Buffer.from(new Int8Array(audioArray));\n\n const response = await axios.post<any>('https://api.wit.ai/speech?v=20220527', audioBuffer, {\n headers: {\n Authorization: `Bearer ${this.witAiAccessToken}`,\n 'Content-Type': 'audio/wav'\n }\n });\n\n const data = typeof response.data === 'string' ? JSON.parse(response.data.split('\\r\\n').slice(-1)[0] || '{}') : response.data;\n\n if (data?.text) {\n const responseInput = await page.frames().find(frame => frame.url().includes('api2/bframe'))?.$('#audio-response');\n await responseInput?.type(data.text);\n\n await findAndClick('api2/bframe', '#recaptcha-verify-button');\n\n await sleep(1000);\n } else {\n await findAndClick('api2/bframe', '#recaptcha-reload-button');\n }\n }\n }\n}\n\nfunction sleep(timeout: number) {\n return new Promise(resolve => setTimeout(resolve, timeout));\n}"]}