VB. NET, Как изменить User-agent элемента управления веб-браузера - PullRequest
0 голосов
/ 11 июля 2020

Есть способ изменить User-Agent управления веб-браузером, и он работает! Я изменил User-Agent , используя следующий код:

WebBrowser1.Navigate("https://example.com/file.php", Nothing, Nothing, "User-Agent: Your User-Agent" + vbCrLf)

Он работает, но проблема в том, что этот код работает один раз!

Например, если вы вошли на этот сайт "https://example.com/login.php", и этот сайт направил вас на другую страницу! Вторая страница будет использовать по умолчанию User-Agent Microsoft Visual Studio

Позвольте мне прояснить это, проблема в том, что показанный выше код не может использовать User-Agent более одного раза, после сайт перенаправит вас на другую страницу, веб-браузер будет использовать значение по умолчанию User-Agent

1 Ответ

1 голос
/ 11 июля 2020

Вы можете вызвать функцию UrlMkSetSessionOption API, как описано здесь , и дополнительно использовать URLMON_OPTION_USERAGENT_REFRESH, чтобы избежать описанной здесь проблемы ренавигации :

Module UserAgentChanger
    <Runtime.InteropServices.DllImport("urlmon.dll", CharSet:=Runtime.InteropServices.CharSet.Ansi)>
    Private Function UrlMkSetSessionOption(
        ByVal dwOption As Integer,
        ByVal pBuffer As String,
        ByVal dwBufferLength As Integer,
        ByVal dwReserved As Integer) As Integer
    End Function

    Const URLMON_OPTION_USERAGENT As Integer = &H10000001
    Const URLMON_OPTION_USERAGENT_REFRESH As Integer = &H10000002

    Public Sub SetUserAgent(ByVal UserAgent As String)
        UrlMkSetSessionOption(URLMON_OPTION_USERAGENT_REFRESH, vbNullString, 0, 0)
        UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, UserAgent, UserAgent.Length, 0)
    End Sub
End Module
...