首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PuppeteerSharp和页面级代理

PuppeteerSharp和页面级代理
EN

Stack Overflow用户
提问于 2021-03-15 17:46:23
回答 1查看 761关注 0票数 3

我知道在js中使用Puppeteer是可能的,但我想知道是否有人已经知道如何在PuppeteerSharp (不同选项卡的不同代理)的页面级别上进行代理?

我似乎可以捕捉到请求,但我不知道如何调整代理。

代码语言:javascript
复制
page.SetRequestInterceptionAsync(true).Wait();                     
page.Request += (s, ev) =>
{
    // what to do?                            
}

编辑

我知道我可以像这样在浏览器级别设置代理;

代码语言:javascript
复制
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = false,
    Args = new[] { "--proxy-server=host:port" }
});

var page = await browser.NewPageAsync();
await page.AuthenticateAsync(new Credentials() { Username = "username", Password = "password" });

但这不是我想做的。我试图在单个浏览器实例中为每个页面设置代理。我想测试很多代理,所以只为了设置代理而生成一个新的浏览器实例的开销太大了。

EN

回答 1

Stack Overflow用户

发布于 2021-03-16 11:49:42

您可以对每个逻辑实例使用不同的浏览器实例。我的意思是,与其尝试用不同的代理为每个页面/选项卡设置不同的代理,不如创建新的浏览器实例并通过启动args设置代理。

如果此解决方案不适合您的需要,请检查此问题。NodeJS有一个库,它使每个页面/选项卡能够使用不同的代理。您可以检查该库源代码并在您的C#应用程序中实现相同的功能。

那个图书馆正在使用非常简单的方法。而不是通过puppeter的浏览器/页面库发送请求,而是通过nodejs http工具发送请求。它可以用page.setRequestInterception方法来实现。因此库从页面截取每个请求,然后收集数据并通过http工具发送请求。我很久以前就使用C#了。所以也许我错了,但是您可以尝试使用HttpWebRequest或类似的东西。得到结果后,应该使用request.respond方法,并在那里传递响应结果。通过这种方式,您可以在应用程序中放置任何类型的代理。检查库的这里代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66642980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档