From 58ff9702c2870f4d0cf8945c7aa7d7281f338956 Mon Sep 17 00:00:00 2001 From: Shawn Presser Date: Wed, 26 Jun 2019 10:23:18 -0500 Subject: [PATCH] Set User-Agent header to GlobalContext.userAgent --- src/DOM.js | 2 +- src/Navigator.js | 4 ++-- src/Window.js | 1 + src/WindowBase.js | 4 ++-- src/Worker.js | 2 +- src/core.js | 2 +- src/fetch.js | 13 +++++++++++++ src/request.js | 2 +- 8 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 src/fetch.js diff --git a/src/DOM.js b/src/DOM.js index 044d370676..b36bd078a6 100644 --- a/src/DOM.js +++ b/src/DOM.js @@ -12,7 +12,7 @@ const he = require('he'); const parse5 = require('parse5'); const parseIntStrict = require('parse-int'); const selector = require('window-selector'); -const fetch = require('window-fetch'); +const fetch = require('./fetch'); const {Blob} = fetch; const htmlUnescape = require('unescape'); diff --git a/src/Navigator.js b/src/Navigator.js index 89ed6d3ca5..b18dd48b0f 100644 --- a/src/Navigator.js +++ b/src/Navigator.js @@ -70,7 +70,7 @@ module.exports.Clipboard = Clipboard; class Navigator { constructor() { - this.userAgent = `Mozilla/5.0 (OS) AppleWebKit/999.0 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/999.0 Exokit/${GlobalContext.version}`; + this.userAgent = GlobalContext.userAgent; this.vendor = 'Exokit'; this.platform = os.platform(); this.hardwareConcurrency = os.cpus().length; @@ -89,4 +89,4 @@ class Navigator { return getGamepads(); } } -module.exports.Navigator = Navigator; \ No newline at end of file +module.exports.Navigator = Navigator; diff --git a/src/Window.js b/src/Window.js index f373596aa9..5bc1777be8 100644 --- a/src/Window.js +++ b/src/Window.js @@ -102,6 +102,7 @@ const { GlobalContext.id = id; GlobalContext.args = args; GlobalContext.version = version; +GlobalContext.userAgent = `Mozilla/5.0 (OS) AppleWebKit/999.0 (KHTML, like Gecko) Chrome/999.0.0.0 Safari/999.0 Exokit/${GlobalContext.version}`; const {_parseDocument, _parseDocumentAst, getBoundDocumentElements, DocumentType, DOMImplementation, initDocument} = require('./Document'); const { diff --git a/src/WindowBase.js b/src/WindowBase.js index f9a47cdc5a..76c1e7c358 100644 --- a/src/WindowBase.js +++ b/src/WindowBase.js @@ -23,7 +23,7 @@ const {CustomEvent, DragEvent, ErrorEvent, Event, EventTarget, KeyboardEvent, Me const {MediaDevices, Clipboard, Navigator} = require('./Navigator'); const {FileReader} = require('./File'); const {XMLHttpRequest, FormData} = require('window-xhr'); -const fetch = require('window-fetch'); +const fetch = require('./fetch'); const {Request, Response, Headers, Blob} = fetch; const WebSocket = require('ws/lib/websocket'); @@ -396,4 +396,4 @@ if (onbeforeload) { if (!args.require) { global.require = undefined; } -global.process = undefined; \ No newline at end of file +global.process = undefined; diff --git a/src/Worker.js b/src/Worker.js index 56b908af46..9fce9d3919 100644 --- a/src/Worker.js +++ b/src/Worker.js @@ -10,7 +10,7 @@ const { } = require('worker_threads'); const {createImageBitmap} = require('./DOM.js'); -const fetch = require('window-fetch'); +const fetch = require('./fetch'); const {XMLHttpRequest} = require('window-xhr'); const WebSocket = require('ws/lib/websocket'); const {FileReader} = require('./File.js'); diff --git a/src/core.js b/src/core.js index d561b4182b..e3d74dd218 100644 --- a/src/core.js +++ b/src/core.js @@ -1,7 +1,7 @@ const url = require('url'); const {URL} = url; -const fetch = require('window-fetch'); +const fetch = require('./fetch'); const GlobalContext = require('./GlobalContext'); const symbols = require('./symbols'); const {_getBaseUrl} = require('./utils'); diff --git a/src/fetch.js b/src/fetch.js new file mode 100644 index 0000000000..9e5558b469 --- /dev/null +++ b/src/fetch.js @@ -0,0 +1,13 @@ +const GlobalContext = require('./GlobalContext'); +const fetch = require('window-fetch'); + +Object.assign(module.exports, fetch); + +module.exports = (u, options) => { + const o = Object.assign({}, options || {}); + const h = (o.headers instanceof fetch.Headers) ? o.headers : new fetch.Headers(o.headers); + h.set('User-Agent', GlobalContext.userAgent); + o.headers = h; + return fetch(u, o); +}; + diff --git a/src/request.js b/src/request.js index be37c72e7a..062251d185 100644 --- a/src/request.js +++ b/src/request.js @@ -17,7 +17,7 @@ consoleStream._writev = (chunks, callback) => { }; global.console = new Console(consoleStream); -const fetch = require('window-fetch'); +const fetch = require('./fetch'); const {workerData, parentPort} = require('worker_threads'); const {url, int32Array} = workerData;