首页 > 解决方案 > 如何让浏览器逐一或逐行读取和使用代理?

问题描述

我正在使用 webbrowser 快速填写站点中的表单,因此它一直阻止我的 ip,我在 webbrowser 上使用了一个可以工作 5 分钟的代理,然后站点再次阻止它 + 我使用 openFileDialog 将代理导入到文本框然后让下面的代码使用它但它只使用一个代理所以我希望它每次单击按钮时都使用文本框中的另一个代理

Public Structure Struct_INTERNET_PROXY_INFO
        Public dwAccessType As Integer
        Public proxy As IntPtr
        Public proxyBypass As IntPtr
End Structure
Private Declare Auto Function InternetSetOption Lib "wininet.dll" (ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean

Private Sub RefreshIESettings(ByVal strProxy As String)
    Const INTERNET_OPTION_PROXY As Integer = 38
    Const INTERNET_OPEN_TYPE_PROXY As Integer = 3
    Dim s_IPI As Struct_INTERNET_PROXY_INFO

    s_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY
    s_IPI.proxy = System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(strProxy)
    s_IPI.proxyBypass = System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi("Global")

    Dim intptrStruct As IntPtr = System.Runtime.InteropServices.Marshal.AllocCoTaskMem(System.Runtime.InteropServices.Marshal.SizeOf(s_IPI))
    System.Runtime.InteropServices.Marshal.StructureToPtr(s_IPI, intptrStruct, True)
    InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(s_IPI))

End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    RefreshIESettings(textbox1.Text)

标签: vb.netwebbrowser-controlproxies

解决方案


只需使用静态索引。当列表用完时,它将循环回到第一个 strProxy。

Private lines As List(Of String) = File.ReadLines("proxies.txt").ToList

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Static i As Integer
    If i = lines.Count Then
        i = 0
    End If
    TextBox1.Text = lines(i)
    i += 1
End Sub

推荐阅读