zoukankan      html  css  js  c++  java
  • webBrowser设置默认Useragent

    通常我们使用  webBrowser1.Navigate(“http://www.test.com”, “”, System.Text.Encoding.UTF8.GetBytes(“”), heads);  可以实现请求过程上自定义Useragent,但是如果控件内部连接点击,或者ajax请求的时候 ,就无法控制了。

    1. using System;
    2. using System.Collections.Generic;
    3. using System.IO;
    4. using System.Linq;
    5. using System.Reflection;
    6. using System.Runtime.InteropServices;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. using Microsoft.Win32;
    10. namespace WebBrowserWinForm
    11. {
    12.     public class UserAgentHelper
    13.     {
    14.         private static string defaultUserAgent = null;
    15.         [DllImport(“urlmon.dll”, CharSet = CharSet.Ansi)]
    16.         private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
    17.         const int URLMON_OPTION_USERAGENT = 0x10000001;
    18.         /// <summary>
    19.         /// 在默认的UserAgent后面加一部分
    20.         /// </summary>
    21.         public static void AppendUserAgent(string appendUserAgent)
    22.         {
    23.             if (string.IsNullOrEmpty(defaultUserAgent))
    24.                 defaultUserAgent = GetDefaultUserAgent();
    25.             string ua = defaultUserAgent + “;” + appendUserAgent;
    26.             ChangeUserAgent(ua);
    27.         }
    28.         /// <summary>
    29.         /// 修改UserAgent
    30.         /// </summary>
    31.         public static void ChangeUserAgent(string userAgent)
    32.         {
    33.             UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, userAgent, userAgent.Length, 0);
    34.         }
    35.         /// <summary>
    36.         /// 一个很BT的获取IE默认UserAgent的方法
    37.         /// </summary>
    38.         public static string GetDefaultUserAgent()
    39.         {
    40.             WebBrowser wb = new WebBrowser();
    41.             wb.Navigate(“about:blank”);
    42.             while (wb.IsBusy) Application.DoEvents();
    43.             object window = wb.Document.Window.DomWindow;
    44.             Type wt = window.GetType();
    45.             object navigator = wt.InvokeMember(“navigator”, BindingFlags.GetProperty,
    46.                 null, window, new object[] { });
    47.             Type nt = navigator.GetType();
    48.             object userAgent = nt.InvokeMember(“userAgent”, BindingFlags.GetProperty,
    49.                 null, navigator, new object[] { });
    50.             return userAgent.ToString();
    51.         }
    52.     }
    53. }

    最后在初始化webbrowser以后 调用静态方法即可,例如:

    UserAgentHelper.ChangeUserAgent(” Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36″);

  • 相关阅读:
    git cmd 命令在已有的仓库重新添加新的文件夹
    google guava Multimap的学习介绍
    JavaScript笔记基础版
    初识hive
    深入学习HBase架构原理
    初识Azkaban
    MapReduce工作流多种实现方式
    Hive 分组问题
    sqoop使用中的小问题
    Sqoop 结合多种系统的具体应用
  • 原文地址:https://www.cnblogs.com/rj888/p/13527178.html
Copyright © 2011-2022 走看看