본문 바로가기

C#

C# 익스플로러 user agent 변경 (IE change user agent)

C# 인터넷 익스플로러 (Internet Explorer) User Agent 변경 방법


C#으로 IE 인터넷 익스플로러 User Agent 변경하는 방법은 여러 가지가 있습니다.


사실 크롬 브라우저로 User Agent 변경하는 방법은 엄청 쉬운데, 막상 IE 익스플로러 변경하려고 보니깐, 생각만큼 쉽지가 않더군요.


여러 가지 방법들이 있지만 제가 원하는 방식으로 동작하는 건 딱 한 가지 방법이었습니다.


바로 urlmon.dll 사용하기 입니다.


바로 코드를 보면 이해가 쉬울 것입니다.




1. UserAgent 값을 static 하게 넣을 수 있는 class 작성하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
 
namespace UserAgentTest
{
    class InternetExplorerBrowserEmulation
    {
        [DllImport("urlmon.dll", CharSet = CharSet.Ansi, ExactSpelling = true)]
        private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
 
        private const int URLMON_OPTION_USERAGENT = 0x10000001;
        private const int URLMON_OPTION_USERAGENT_REFRESH = 0x10000002;
 
        public static void SetDefaultUserAgent(string userAgent)
        {
            UrlMkSetSessionOption(URLMON_OPTION_USERAGENT_REFRESH, null00);
            UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, userAgent, userAgent.Length, 0);
        }
    }
}
 
cs



2. static 함수 사용하기



1
2
3
string userAgent = "Mozilla/5.0 (Linux; Android 5.0.1; SHV-E330S Build/LRX22C; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36";
 
InternetExplorerBrowserEmulation.SetDefaultUserAgent(userAgent);
cs



3. C#으로 내장 브라우져 (WebBrowser)를 사용하여 실행하기





4. 웹 디버거로 실제 User-Agent 값이 들어가는 지 확인하기


저는 Fiddler를 사용하였습니다.


Fiddeler가 HTTP / HTTPS 프로토콜을 확인하는 용도로는 아주 좋습니다.


아래 보시는 바와 같이 User-Agent 값에 우리가 원하는 값이 들어가 있는 것을 확인하실 수 있습니다.





처음 static 함수로 한번 넣으면, 해당 브라우저 객체가 죽지 않는 한, 지속적으로 모든 요청들에 대해서 동일한 User-Agent 값이 들어가는 것을 보실 수가 있습니다.


다른 방법들은 다시 수정도 되지 않을 뿐더러, 1회성으로만 넣을 수 있는데, urlmon.dll 을 사용하면 내가 원하는 User Agent 값을 지속적으로 유지할 수가 있습니다.