Puppeteer Sharp: установка фальшивого пути при загрузке контента?
Я использую page.SetContentAsync(myHtml);
метод в Puppeteer Sharp для загрузки некоторого HTML, который не размещен ни на одном сервере.
К сожалению, в моем HTML мне нужно использовать скрипт JS (который я не могу легко изменить), который опирается на location.pathname
значение, содержащее хотя бы одну косую черту /
(он делает некоторые разборы на нем), иначе он падает.
Есть ли способ, либо через сам Puppeteer или простой JavaScript, переопределить / подделать значение location.pathname
?
1 ответ
Вы можете использовать отключить политику того же происхождения, используя --disable-web-security
а затем использовать history.replaceState()
заменить текущую запись в истории браузера.
Это изменит значение location.pathname
не вызывая перенаправления страницы.
Рассмотрим следующий пример:
'use strict';
const puppeteer = require( 'puppeteer' );
( async () =>
{
const browser = await puppeteer.launch({
'args' : [
'--disable-web-security'
]
});
const page = await browser.newPage();
let pathname = await page.evaluate( () =>
{
const fake_pathname = '/example/index.php';
history.replaceState( null, null, 'http://_' + fake_pathname );
return location.pathname;
});
console.log( pathname ); // /example/index.php
await page.setContent( /* ... */ );
// Perform your task ...
await browser.close();
})();