WebView - 在每个请求上定义用户代理

2024-04-20

目前,我将请求消息的 User-Agent 设置如下:

var rm = new HttpRequestMessage(HttpMethod.Post, new Uri("http://example.com"));       
rm.Headers.Add("User-Agent", "UserAgentString");
webView.NavigateWithHttpRequestMessage(rm);

一切都按预期进行。

但是,当我导航到另一个页面时,例如通过单击网站上的链接,用户代理将重置为默认值WebView.

有没有办法设置用户代理永久或将其更改为every提出要求?

谢谢, 乔治


I found 马特·多特的这个技巧 http://gist.github.com/mattdot/3b53af7756c061e06f60623c766f657a。这将永久更改用户代理字符串。任何WebView请求,无论是手动请求还是通过 HTML 内的链接单击,都会将您的值作为 User-Agent 标头发送。

这是链接失效时的来源。

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);
        }
    }
}

您可以在应用程序中的任何位置更改此值,但如果您希望永久设置它,请使用App.xaml.cs构造函数:

public App()
{
    UA.UserAgent.SetUserAgent("Firefox ;)");

    // ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebView - 在每个请求上定义用户代理 的相关文章

  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 如何在 C# 控制台应用程序中将修饰符(ctrl、alt、shift)按键捕获为单个按键?

    Console ReadKey 仅在按下 正常 键时捕获输入 然后将修饰符 如果有 附加为键信息的一部分 如何将单个修饰键注册为输入 提供了一种解决方案这个链接 https blogs msdn microsoft com toub 200
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 为什么 set_symmetry_difference 无法与比较器一起使用?

    Example program include
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • resharper 单元测试继承

    有人有 Resharper 单元测试层次结构的策略吗 我通常使用 TestDriven Net 和 Resharper 的测试运行器以及 NUnit 测试 TestDriven 对所有事情都很棒 但很快就会从批量运行 可能是数千个 中找到一
  • WordPress 博客文章未显示 Facebook 预览图像

    我有一篇博客文章here http gingerslist com blog 62 smiles and understanding 2 当我在 Facebook 上分享此内容时 预览图像不显示 我尝试过重新抓取Facebook 开发者工具
  • 使用 SQLAlchemy 批量更新插入 [重复]

    这个问题在这里已经有答案了 我正在使用 SQLAlchemy 1 1 0b 将大量数据批量插入到 PostgreSQL 中 并且遇到了重复的键错误 from sqlalchemy import from sqlalchemy orm imp
  • 何时应使用以下各项:Amazon EC2、Google App Engine、Microsoft Azure 和 Salesforce.com? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是在非常普遍的意义上问这个问题 无论是从云提供商还是云消费者的角度来看 此外 问题不针对任何特定类型的应用程序 实际上 目的是了解哪种类型的应
  • 在 iPhone 中的应用程序中评价我在 iTunes 中的应用程序

    我必须在我的应用程序中提供一个链接 用户点击它就会将我带到应用程序的 itunes Appstore 页面 用户可以在其中对应用程序进行评分 我认为其他应用程序尝试访问设备中的Appstore应用程序并在itunes中传递该应用程序的相应u
  • PowerShell 5 中的写入主机与写入信息

    众所周知 Write Host是邪恶的 在PowerShell 5 Write Information被添加并被考虑替换Write Host 但是 说实话 哪个更好呢 Write Host是邪恶的 因为它不使用管道 因此输入消息无法被重用
  • 如何使用Android KeyStore安全存储任意字符串?

    我希望能够在 Android KeyStore 中安全地存储一些敏感字符串 我从服务器获取字符串 但我有一个用例需要我保留它们 KeyStore 只允许从与分配给我的应用程序相同的 UID 进行访问 并且它将使用设备主密码对数据进行加密 因
  • R Shiny Memory Leak - 有关如何查找的建议?

    我正在寻找有关如何识别 R 闪亮程序中内存泄漏的一般想法 我正在努力确定泄漏的确切位置 因此很难重新创建 而且我的代码已经超过 1000 行 我确信它与观察和观察事件有关 但我无法准确指出它 我实际上很喜欢 bborgeser 在这里提出的
  • 如何根据iOS上的touchMove事件在屏幕上绘制动态矩形

    矩形将被视为两个点 第一个点将是 touchBegan 点 在 touchMove 上将是第二个点 矩形将根据用户手指的移动动态绘制 就像当您单击桌面并移动桌面时 鼠标您将获得动态矩形 Thanks 好的 这是你如何绘制矩形的方法touch
  • 如何展平嵌套的Python字典?

    我正在尝试展平嵌套字典 dict1 Bob shepherd 4 6 3 collie 23 3 45 poodle 2 0 6 Sarah shepherd 1 2 3 collie 3 31 4 poodle 21 5 6 Ann sh
  • 尽管确实存在,但“不存在具有给定标识符的行”

    我正在使用 Hibernate 并得到 线程 main 中的异常 org hibernate ObjectNotFoundException 不存在具有给定标识符的行 271 这个错误的奇怪之处在于 具有给定 id 的对象存在于数据库中 我
  • 子进程超时失败

    我想在子进程上使用超时 from subprocess32 import check output output check output sleep 30 shell True timeout 1 不幸的是 虽然这会引发超时错误 但它会在
  • 时间数组在建模中超出范围?

    这些天我正在尝试使用新的气象数据 以 netcdf 格式而不是旧的 cray 格式给出 运行我的气候模型 模型编译顺利 但是当进行模拟时 模型在第一天运行良好 但在模拟的第二天就停止了 总是在同一时间步长 无论我使用哪个开始日期 错误是 f
  • MySQL 的锁定和并发

    我目前正在将 Mysql 与 InnoDB 存储引擎用于所有表 所以 我想知道这是否是一个真正的问题以及是否有解决方案 例如 我将使用数据库事务向用户收费 1 检查他的余额 2 减去他的余额 3 将此余额记入某处 4 提交 如果更新发生在
  • 在 Chrome 扩展中,有没有一种方法可以以编程方式“单击”pageAction 按钮

    我有一个带有 pageAction 按钮的 Chrome 扩展程序 用户单击它 就会显示 popup html 窗口 以便用户可以执行需要的操作 有没有一种方法可以装饰页面上的链接 以便当用户单击该链接时 它会以编程方式向 pageActi
  • $this->form_validation->run() 在没有验证规则的情况下返回 FALSE

    使用 CodeIgniter 时Form validation类 该set rules 方法允许用户向其表单字段添加无限数量的检查 这些规则通常都定义在同一个地方 就在run 方法被调用 有效示例 Require the user to b
  • 为什么 jQuery 文件上传插件的进程事件不触发?

    我对 jQuery 文件上传插件有一个奇怪的问题 如果我使用这个 SITAX fileupload fileupload url myurl add function e data console log add event process
  • 如何将pandas数据框的单行拆分为两行?

    我试图将数据框的单行分成两行 在数据框中 开始和结束列可用 我想根据条件拆分行 我有一个如下所示的数据框 symbol start end size ABC 2015 08 27 18 00 00 2015 08 28 05 00 00 1
  • Haskell:为什么将辅助函数命名为“go”?

    I see go在阅读 Haskell 材料或源代码时 我经常会遇到这样的情况 但我从来没有真正感到舒服 我猜它在我的脑海中具有 goto 的负面含义 我开始用 LYAH 学习 Haskell 这就是我开始使用 Haskell 的原因acc
  • WebView - 在每个请求上定义用户代理

    目前 我将请求消息的 User Agent 设置如下 var rm new HttpRequestMessage HttpMethod Post new Uri http example com rm Headers Add User Ag