@browserless/goto 9.5.0 → 9.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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@browserless/goto",
3
3
  "description": "Go to a page aborting unnecessary requests",
4
4
  "homepage": "https://browserless.js.org/#/?id=gotopage-options",
5
- "version": "9.5.0",
5
+ "version": "9.6.2",
6
6
  "main": "src/index.js",
7
7
  "author": {
8
8
  "email": "hello@microlink.io",
@@ -47,7 +47,8 @@
47
47
  "@browserless/test": "latest",
48
48
  "ava": "3",
49
49
  "browserless": "latest",
50
- "exit-hook": "2"
50
+ "fpscanner": "latest",
51
+ "p-wait-for": "3"
51
52
  },
52
53
  "engines": {
53
54
  "node": ">= 12"
@@ -68,5 +69,5 @@
68
69
  "timeout": "2m",
69
70
  "verbose": true
70
71
  },
71
- "gitHead": "2efe5725e9b370366303e2ffc3d377436689d221"
72
+ "gitHead": "e29ac9d5b86e7db27429130abc9689bbf39025dd"
72
73
  }
package/src/engine.bin CHANGED
Binary file
@@ -2,10 +2,12 @@
2
2
 
3
3
  module.exports = {
4
4
  chromeRuntime: require('./chrome-runtime'),
5
- stackTraces: require('./stack-traces'),
6
5
  mediaCodecs: require('./media-codecs'),
7
6
  navigatorPermissions: require('./navigator-permissions'),
8
7
  navigatorPlugins: require('./navigator-plugins'),
8
+ navigatorVendor: require('./navigator-vendor'),
9
9
  randomizeUserAgent: require('./randomize-user-agent'),
10
- webglVendor: require('./webgl-vendor')
10
+ stackTraces: require('./stack-traces'),
11
+ webglVendor: require('./webgl-vendor'),
12
+ windowFrame: require('./window-frame')
11
13
  }
@@ -0,0 +1,25 @@
1
+ module.exports = page =>
2
+ page.evaluateOnNewDocument(async () => {
3
+ const getUserAgentVendor = userAgent => {
4
+ let vendor
5
+
6
+ if (userAgent.includes('Firefox')) {
7
+ vendor = 'firefox'
8
+ } else if (userAgent.includes('Chrome')) {
9
+ vendor = 'chrome'
10
+ } else {
11
+ vendor = 'safari'
12
+ }
13
+
14
+ return vendor
15
+ }
16
+
17
+ const userAgent = navigator.userAgent
18
+ const userAgentVendor = getUserAgentVendor(userAgent)
19
+
20
+ if (userAgentVendor === 'chrome') return
21
+
22
+ Object.defineProperty(navigator, 'vendor', {
23
+ value: userAgentVendor === 'safari' ? 'Apple Computer, Inc.' : ''
24
+ })
25
+ })
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ module.exports = page =>
4
+ page.evaluateOnNewDocument(() => {
5
+ if (window.outerWidth && window.outerHeight) return
6
+ const windowFrame = 85
7
+ window.outerWidth = window.innerWidth
8
+ window.outerHeight = window.innerHeight + windowFrame
9
+ })
package/src/index.js CHANGED
@@ -14,6 +14,8 @@ const isUrl = require('is-url-http')
14
14
  const path = require('path')
15
15
  const fs = require('fs')
16
16
 
17
+ const truncate = (str, n = 80) => (str.length > n ? str.substr(0, n - 1) + '…' : str)
18
+
17
19
  const EVASIONS = require('./evasions')
18
20
 
19
21
  const ALL_EVASIONS_KEYS = Object.keys(EVASIONS)
@@ -119,7 +121,7 @@ const inject = async (page, { timeout, mediaType, animations, modules, scripts,
119
121
  postPromises.push(
120
122
  run({
121
123
  fn: Promise.all(
122
- castArray(modules).map(value => injectScript(page, value, { type: 'modules' }))
124
+ castArray(modules).map(value => injectScript(page, value, { type: 'module' }))
123
125
  ),
124
126
  timeout,
125
127
  debug: 'modules'
@@ -220,17 +222,28 @@ module.exports = ({
220
222
 
221
223
  const prePromises = []
222
224
 
225
+ if (modules || scripts || styles) {
226
+ prePromises.push(
227
+ run({
228
+ fn: page.setBypassCSP(true),
229
+ timeout: actionTimeout,
230
+ debug: 'bypassCSP'
231
+ })
232
+ )
233
+ }
234
+
223
235
  if (abortTypes.length > 0) {
224
236
  await page.setRequestInterception(true)
225
237
  page.on('request', req => {
226
238
  if (req.isInterceptResolutionHandled()) return
227
-
228
239
  const resourceType = req.resourceType()
240
+ const url = truncate(req.url())
241
+
229
242
  if (!abortTypes.includes(resourceType)) {
230
- debug('continue', { url: req.url(), resourceType })
243
+ debug('continue', { url, resourceType })
231
244
  return req.continue(req.continueRequestOverrides(), 0)
232
245
  }
233
- debug('abort', { url: req.url(), resourceType })
246
+ debug('abort', { url, resourceType })
234
247
  return req.abort('blockedbyclient', 0)
235
248
  })
236
249
  }