#javascript #node.js #proxy #puppeteer
#javascript #node.js #прокси #puppeteer
Вопрос:
есть ли способ прокси / перенаправления определенных URL-адресов другим? например, когда страница Puppeteer переходит на «mydomain.com » я бы хотел , чтобы все звонки … «mydomain.com/styles/.css » быть проксированным на «localhost:8080/styles/.css». Я не хочу, чтобы все запросы перенаправлялись через прокси. но что-то похожее на то, что https://chrome.google.com/webstore/detail/resource-override/pkoacgokdfckfpndoffpifphamojphii?hl=en расширение Chrome делает это.
Комментарии:
1. Это может помочь, он использует опцию для просмотра исходного кода страницы, поэтому css / изображения не загружаются. github.com/GoogleChrome/puppeteer/issues/1913
Ответ №1:
поскольку @Hellonearthis связан, решение, похоже,
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (request) => {
if (request.url().indexOf("mydomain.com") !== -1) {
// simply replace with another url
request.continue((request.url().replace("mydomain.com", "http://localhost:8080/styles"));
}
else {
request.continue();
}
});
Ответ №2:
Для puppeteersharp мне потребовалось некоторое время, чтобы понять это.
page = await ChromeDriver.NewPageAsync();
await page.SetRequestInterceptionAsync(true);
page.Request = new EventHandler<RequestEventArgs>(async delegate (object o, RequestEventArgs a)
{
if (a.Request.Url.StartsWith("mydomain.com"))
{
await a.Request.ContinueAsync(new Payload
{
Headers = a.Request.Headers,
Method = a.Request.Method,
PostData = a.Request.PostData != null ? a.Request.PostData.ToString() : "",
Url = a.Request.Url.Replace("mydomain.com", "http://localhost:8080")
});
}
else
{
await a.Request.ContinueAsync();
}
});