我有一个希望是简单的任务,但是它将需要精通CefSharp的人员来解决。
我有一个要从中检索HTML的URL。问题在于此特定的url实际上并未在GET上分发页面。相反,它将大量Javascript推送到浏览器,然后浏览器执行并生成实际的呈现页面。这意味着涉及HttpWebRequest并且HttpWebResponse不会起作用的常规方法。
我研究了许多不同的“无头”选项,由于多种原因,我认为最能满足我的需求的选项是CefSharp.Offscreen。但是我对这件事的运作方式一无所知。我看到有几个事件可以订阅,还有一些配置选项,但是我不需要嵌入式浏览器之类的东西。
我真正需要的是一种执行以下操作(伪代码)的方法:
string html = CefSharp.Get(url);
订阅事件没有问题,如果那是等待Javascript执行并生成呈现页面所需的条件。
我们想要在 wpf 应用程序中的基于 chromium 的浏览器中显示网页。在浏览器中显示的网站也应该显示在另一个屏幕上,但没有交互。我想将 cefsharp wpf 浏览器控件和 cefsharp 离屏渲染结合起来。
我可以使用一个 chromium 实例来显示带有 wpf 交互的页面并将当前可见网站导出为图像吗?
感谢你并致以真诚的问候,
西蒙
我正在尝试使用 CefSharp 动态更改用户代理。我查看了 IRequestHandler 类,但不再看到名为 OnBeforeResourceLoad 的方法。
但是,我确实找到了一个名为 OnBeforeBrowse 的方法。但是,所有请求标头都是空的,当我尝试添加一个时,它根本没有添加。我试图参考,更改值并重新分配,但没有骰子。
我在 IRequestHandler 中找到了一个叫做 OnBeforeBrowse 的方法。但是,所有请求标头都是空的,当我尝试通过 IRequest 参数添加一个时,它根本没有添加。我试图参考,更改值并重新分配,但没有骰子。总是空着没有钥匙回来。
protected override bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect)
{
    var headers = request.Headers;
    headers["User-Agent"] = "New user agent";
    request.Headers = headers;
    return false;
}
我希望用户代理更改为我给它的值。