You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms出现Error 403: disallowed_useragent错误的解决求助

Xamarin Forms 解决Error 403: disallowed_useragent 适配方案

以下是你提供的Android Java代码对应的Xamarin C#适配实现:

核心代码对应关系

你给出的两行Java代码对应C#写法如下:

  • Java常量定义:public static final String USER_AGENT = "xxx" 对应C#:public const string USER_AGENT = "Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19";
  • Java设置方法:webView.getSettings().setUserAgentString(USER_AGENT) 对应C#:webView.Settings.UserAgentString = USER_AGENT;

实现方式(二选一即可)

方案1:全局WebView自定义渲染(推荐)

该方案会修改项目中所有WebView的UserAgent,适配性最好:

  1. 在Xamarin.Forms对应的Android项目中新建自定义渲染类CustomWebViewRenderer.cs
  2. 写入如下代码,将代码中的MyAppNamespace替换为你自己项目的命名空间即可:
using Android.Content;
using MyAppNamespace.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRenderer))]
namespace MyAppNamespace.Droid.Renderers
{
    public class CustomWebViewRenderer : WebViewRenderer
    {
        // 自定义UserAgent常量
        public const string USER_AGENT = "Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19";
        
        public CustomWebViewRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                // 设置WebView的UserAgent
                Control.Settings.UserAgentString = USER_AGENT;
            }
        }
    }
}

方案2:全局修改Android默认UserAgent(更简单)

如果不需要单独控制WebView,可以直接在Android项目的MainActivity.cs的OnCreate方法中添加如下代码:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    
    // 新增以下两行代码
    const string USER_AGENT = "Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19";
    Android.Webkit.WebSettings.DefaultUserAgent = USER_AGENT;

    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
    LoadApplication(new App());
}

iOS端适配补充(可选)

如果你的项目同时需要适配iOS端相同的403错误,可以在iOS项目的AppDelegate.cs的FinishedLaunching方法中添加如下代码:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    // 新增以下代码
    var userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1";
    NSUserDefaults.StandardUserDefaults.RegisterDefaults(new NSDictionary("UserAgent", NSString.FromString(userAgent)));

    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App());
    return base.FinishedLaunching(app, options);
}

内容的提问来源于stack exchange,提问作者JBD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:06:04