Skip to content

Commit

Permalink
Replace puppeteer stealth by puppeteer to avoid strange errors
Browse files Browse the repository at this point in the history
  • Loading branch information
KirianCaumes committed May 15, 2020
1 parent c8a696c commit 5b4e456
Show file tree
Hide file tree
Showing 3 changed files with 152 additions and 243 deletions.
18 changes: 9 additions & 9 deletions lib/marketplace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,9 @@ import IOutputSuccess from '@interface/IOutputSuccess'
import IYears from '@interface/IYears'
import { TLimit } from '@type/TLimit'
import { JSDOM } from 'jsdom'
import puppeteer from 'puppeteer-extra'
import StealthPlugin from 'puppeteer-extra-plugin-stealth'
import puppeteer, { Request } from 'puppeteer'
import UserAgent from 'user-agents'

puppeteer.use(StealthPlugin())
puppeteer.use(require('puppeteer-extra-plugin-block-resources')({
blockedTypes: new Set(['stylesheet', 'image', 'media', 'font', 'script', 'texttrack', 'xhr', 'fetch', 'eventsource', 'websocket', 'manifest', 'other'])
}))

/**
* Discogs Marketplace
* @class
Expand Down Expand Up @@ -102,9 +96,15 @@ export default class Marketplace implements IInput {
public async search(): Promise<IOutputSuccess> {
return await new Promise(async (resolve, reject) => {
/** Init browser */
const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox',] })
const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] })
const page = await browser.newPage()

/** Block useless ressources */
await page.setRequestInterception(true)
page.on('request', (req: Request) => {
['stylesheet', 'image', 'media', 'font', 'script', 'texttrack', 'xhr', 'fetch', 'eventsource', 'websocket', 'manifest', 'other'].includes(req.resourceType()) ? req.abort() : req.continue()
})

/** Init user agent */
await page.setUserAgent((new UserAgent()).toString())

Expand Down Expand Up @@ -149,7 +149,7 @@ export default class Marketplace implements IInput {
let result: IOutputSuccess = this._format((new JSDOM(res.document)).window.document)
return result
})
.catch((err) => {
.catch((err: any) => {
const { document } = (new JSDOM(err.document)).window
let result: IOutputError = {
message: document.querySelector('h1 + p')?.innerHTML?.trim() ?? 'An error occured',
Expand Down
Loading

0 comments on commit 5b4e456

Please sign in to comment.