I found this Matt Dot trick . This will forever change the user-agent string. Any WebView request, whether manual or by clicking a link inside HTML, will have your value sent as the User-Agent header.
Here is the source in case the link dies.
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace UA { public static class UserAgent { const int URLMON_OPTION_USERAGENT = 0x10000001; [DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved); [DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkGetSessionOption(int dwOption, StringBuilder pBuffer, int dwBufferLength, ref int pdwBufferLength, int dwReserved); public static string GetUserAgent() { int capacity = 255; var buf = new StringBuilder(capacity); int length = 0; UrlMkGetSessionOption(URLMON_OPTION_USERAGENT, buf, capacity, ref length, 0); return buf.ToString(); } public static void SetUserAgent(string agent) { var hr = UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, agent, agent.Length, 0); var ex = Marshal.GetExceptionForHR(hr); if(null != ex) { throw ex; } } public static void AppendUserAgent(string suffix) { SetUserAgent(GetUserAgent() + suffix); } } }
You can change this value anywhere in your application, but if you want it to be installed forever, use the App.xaml.cs constructor:
public App() { UA.UserAgent.SetUserAgent("Firefox ;)");
source share