繁体   English   中英

PuppeteerSharp - 如何使用本地 IP 地址连接 BrowserWSEndpoint?

[英]PuppeteerSharp - How to connect BrowserWSEndpoint using local IP address?

根据这篇文章,可以使用 http-proxy 节点模块将 puppeteer 连接到本地 IP 地址。 但是我怎样才能在 PupperSharp(C#) 中实现这个呢? 是否有任何等效的 nuget 库?

更多上下文:如果您在主机上启动 PuppeteerSharp,获取它的 websocket URL 并更改它的主机:

var browser = await Puppeteer.LaunchAsync(new() { Headless = false });
Console.WriteLine(new UriBuilder(browser.WebSocketEndpoint){ Host = "192.168.0.199" });

在另一台主机上尝试连接:

await Puppeteer.ConnectAsync(new(){ BrowserWSEndpoint = "ws://192.168.0.199:60597/devtools/browser/5f79c230-7e69-49f5-8f12-816c343cf4f8" })

连接拒绝异常显示。

带有直接转发的 Yarp 反向代理就是答案:

服务器代码:(ASP.NET 核心最小 API):

Dictionary<string, string> routes = new();

app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.Map("/connect/{**catch-all}", async httpContext =>
    {
        var route = httpContext.Request.GetDisplayUrl();

        await app.Services.GetRequiredService<IHttpForwarder>().SendAsync(
            httpContext,
            routes.TryGetValue(Path.GetFileName(new Uri(route).AbsolutePath), out string targetRoute) ? targetRoute : route,
            new HttpMessageInvoker(new SocketsHttpHandler()
            {
                UseProxy = false,
                AllowAutoRedirect = false,
                AutomaticDecompression = DecompressionMethods.None,
                UseCookies = false,
                ActivityHeadersPropagator = new ReverseProxyPropagator(DistributedContextPropagator.Current)
            })
        );
    });
});

app.MapGet("/", async () =>
{
    var b = await Puppeteer.LaunchAsync(new()
    {
        ExecutablePath = browserPath // set your chrome directory
    });

    var id = Path.GetFileName(b.WebSocketEndpoint);

    routes.Add(id, b.WebSocketEndpoint);

    return $"ws://your-server-ip-address/connect/{id}";
});

app.Run();

客户端代码:

await Puppeteer.ConnectAsync(new() { BrowserWSEndpoint = await httpClient.GetStringAsync("http://your-server-ip-address") })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM