mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-16 08:28:52 +01:00
- fixed edge case in jsonP rewriting where no callback name is supplied only ? but body has normal jsonP callback (url = https://geolocation.onetrust.com/cookieconsentpub/v1/geo/countries/EU?callback=?) - made the `!self.__WB_pmw` server side inject match the client side one done via wombat - added regex's for eval override to JSWombatProxyRules wombat: - added eval override in order to ensure AD network JS does not lockup the browser (cnn.com) - added returning a proxied value for window.parent from the window proxy object in order to ensure AD network JS does not lock up browser (cnn.com, boston.com, et. al.) - ensured that the read only storageArea property of 'StorageEvents' fired by the custom storage class is present (spec) - ensured that userland cannot create new instances of Storage and that localStorage instanceof Storage works with our override (spec) - ensured that assignments to SomeElement.[innerHTML|outerHTML], iframe.srcdoc, or style.textContent are more correctly handled in particular doing script.[innerHTML|outerHTML] = <JS> - ensured that the test used in the isArgumentsObj function does not throw errors IFF the pages JS has made it so when toString is called (linkedin.com) - ensured that Web Worker construction when using the optional options object, the options get supplied to the create worker (spec) - ensured that the expected TypeError exception thrown from DomConstructors of overridden interfaces are thrown when their pre-conditions are not met (spec) - ensured that wombat worker rewriting skipes data urls which should not be rewritten - ensured the bound function returned by the window function is the same on subsequent retrievals fixes #474 tests: - added direct testing of wombat's parts
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
const { launch } = require('just-launch-chrome');
|
|
const Browser = require('chrome-remote-interface-extra/lib/browser/Browser');
|
|
|
|
const winPos = !process.env.NO_MOVE_WINDOW ? '--window-position=2000,0' : '';
|
|
|
|
const chromeArgs = [
|
|
'--force-color-profile=srgb',
|
|
'--disable-background-networking',
|
|
'--disable-background-timer-throttling',
|
|
'--disable-renderer-backgrounding',
|
|
'--disable-backgrounding-occluded-windows',
|
|
'--disable-ipc-flooding-protection',
|
|
'--enable-features=NetworkService,NetworkServiceInProcess,AwaitOptimization',
|
|
'--disable-client-side-phishing-detection',
|
|
'--disable-default-apps',
|
|
'--disable-extensions',
|
|
'--disable-popup-blocking',
|
|
'--disable-hang-monitor',
|
|
'--disable-prompt-on-repost',
|
|
'--disable-sync',
|
|
'--disable-domain-reliability',
|
|
'--disable-infobars',
|
|
'--disable-features=site-per-process,TranslateUI,BlinkGenPropertyTrees,LazyFrameLoading',
|
|
'--disable-breakpad',
|
|
'--disable-backing-store-limit',
|
|
'--metrics-recording-only',
|
|
'--no-first-run',
|
|
'--safebrowsing-disable-auto-update',
|
|
'--password-store=basic',
|
|
'--use-mock-keychain',
|
|
'--mute-audio',
|
|
'--autoplay-policy=no-user-gesture-required',
|
|
winPos,
|
|
'about:blank'
|
|
];
|
|
|
|
/**
|
|
*
|
|
* @return {Promise<Browser>}
|
|
*/
|
|
async function initChrome() {
|
|
const { browserWSEndpoint, closeBrowser, chromeProcess } = await launch({
|
|
args: chromeArgs
|
|
});
|
|
const browser = await Browser.connect(browserWSEndpoint, {
|
|
ignoreHTTPSErrors: true,
|
|
additionalDomains: { workers: true },
|
|
process: chromeProcess,
|
|
closeCallback: closeBrowser
|
|
});
|
|
await browser.waitForTarget(t => t.type() === 'page');
|
|
return browser;
|
|
}
|
|
|
|
module.exports = initChrome;
|