cefsharp / CefSharp

.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework
http://cefsharp.github.io/
Other
9.84k stars 2.92k forks source link

SetUserAgentOverrideAsync Iframe not work #4848

Closed drRobertDev closed 3 months ago

drRobertDev commented 3 months ago

Is there an existing issue for this?

CefSharp Version

126.2.70

Operating System

Windows 11

Architecture

x64

.Net Version

.net 8

Implementation

OffScreen

Reproduction Steps

UserAgentMetadata AgentMetaData => new() { Brands = new List() {
new UserAgentBrandVersion { Brand = "Not/A)Brand", Version = "8" }, new UserAgentBrandVersion { Brand = "Chromium", Version = "126" },
new UserAgentBrandVersion { Brand = "Google Chrome", Version = "126" }, }, FullVersion = "126.0.0.0", Platform = "Windows", PlatformVersion = "Win64", Architecture = "x64", Model = "", Mobile = false, };

using var devToolsClient = _webController.GetDevToolsClient(); await devToolsClient.Network.SetUserAgentOverrideAsync(BrowserAgentChrome, userAgentMetadata: WebHelper.AgentMetaData); await devToolsClient.Emulation.SetUserAgentOverrideAsync(BrowserAgentChrome, userAgentMetadata: WebHelper.AgentMetaData);

        _webController.LoadHtml("<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\"content=\"width=device-width, initial-scale=1.0\"><title>Iframe Example</title></head><body><iframe src=\"https://easports-api.arkoselabs.com/v2/2.6.1/enforcement.bf6c920f19fb49ce16c82aaef4b83f45.html#A4EECF77-AC87-8C8D-5754-BF882F72063B&6777600a-9cef-4e3a-bde8-935a90ea7c27\"title=\"Ark\"></iframe></body></html>");

Look like not work with Iframe on page, then will show cef base value sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126" instead sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126" on iframe calls

.html load with exspected header, .js load with wrong header.

i tried also with _webController.FrameLoadEnd += Browser_FrameLoadEnd;

private static async void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e) { var browser = (ChromiumWebBrowser)sender; var frameDevToolsClient = e.Browser.GetDevToolsClient();

await frameDevToolsClient.Network.SetUserAgentOverrideAsync(BrowserAgentChrome, userAgentMetadata: AgentMetaData); await frameDevToolsClient.Emulation.SetUserAgentOverrideAsync(BrowserAgentChrome, userAgentMetadata: AgentMetaData); }

but look like not apply on iframe

Expected behavior

sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"

Actual behavior

sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126"

Regression?

not work in previous versions

Known Workarounds

nope

Does this problem also occur in the CEF Sample Application

Yes using WPF/OffScreen command line args

Other information

No response