Currently, I am setting the User-Agent of a request message as follows:
var rm = new HttpRequestMessage(HttpMethod.Post, new Uri("http://example.com"));
rm.Headers.Add("User-Agent", "UserAgentString");
webView.NavigateWithHttpRequestMessage(rm);
Everything works as expected.
But, when I am navigating to an another page, by clicking a link on the site for example, the User-Agent resets to the default of the WebView
.
Is there any way of setting the User-Agent permanently or changing it on every request made?
Thanks, George
I found this trick by Matt Dot. This will permanently change the user-agent string. Any WebView
request, whether manual or through a link-click inside the HTML, will have your value sent as the User-Agent header.
Here's 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 app, but if you want it permanently set, use the App.xaml.cs
constructor:
public App()
{
UA.UserAgent.SetUserAgent("Firefox ;)");
// ...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With