문제

웹 브라우저 컨트롤이있는 간단한 WPF 응용 프로그램이 있습니다. 컨트롤을 페이지를로드하도록 지시 할 때 컨트롤이 서버에 모바일 장치라는 페이지를로드하려고하므로 더 작은 버전의 페이지를로드하려고합니다. 많은 사이트가 주소 전에 모바일을 추가하는 것을 알고 있으므로 Google.com의 모바일 페이지는 단지 mobile.google.com이지만 웹 서버를 자동으로로드 할 수있는 방법이 있는지 궁금합니다. 사이트의 모바일 버전? 나는 이것을하는 매우 간단한 방법이 있어야한다고 생각하지만, 나는 그것을 알아낼 수 없습니다 :).

미리 감사드립니다 !!!

도움이 되었습니까?

해결책

이것은 일반적으로 사용자 에이전트, 표준 웹 브라우저 컨트롤로 변경할 수있는 것이 아닙니다. 대체 WPF 웹 브라우저 컨트롤이 있습니다. 크롬, 다운로드 할 수 있습니다 코드 플렉스. 사용자 에이전트 스푸핑을 지원하지는 않지만 오픈 소스이므로 코드의 iPhone, Windows Mobile 등으로 수동으로 변경할 수 있습니다.

다른 팁

실제로 WebBrowser는 탐색 메소드에서 헤더를 통해 사용자 에이전트 변경을 지원합니다.

this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );

나는 이것이 오래되었음을 알고 있지만 이것은 쉬운 일입니다.

먼저 사용자 에이전트 문자열이 필요하며 문자열 형식이어야합니다. 이것이 WBMobile보다 아래에서하는 방법입니다. 웹 브라우저 컨트롤입니다. 이 예제는 모바일 빙 웹 사이트로 이동합니다.

wbMobile.Navigate(new Uri("http://m.bing.com/", UriKind.RelativeOrAbsolute), string.Empty, null, string.Format("User-Agent: {0}", "Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54"));

이렇게하면 모바일 사용자 에이전트 문자열을 사용하여 웹 페이지로 이동하여 웹 브라우저 제어에서 모바일 웹 사이트를 즉시 볼 수 있습니다.

Boydski의 솔루션은 나에게 적합한 솔루션이 아니 었습니다. 이 경우 가장 좋은 솔루션 :

Webbrowser 컨트롤의 사용자 에이전트 변경

그러나 언젠가 "navigator.useragent"는 헤더 - 솔루션으로 설정되지 않습니다. 이 경우 사용해야합니다 urlmksetsessionoption. MSDN

// import .. use a internal static class like "Native" ;)
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
internal static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

// usage
string userAgent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)";

UrlMkSetSessionOption(0x10000002, null, 0, 0);

UrlMkSetSessionOption(0x10000001, userAgent, userAgent.Length, 0);

적절한 사용자 에이전트 문자열을 찾을 수 있습니다 여기

재미있게 보내세요!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top