怎样在程序中使用多个代理?即,如果这个代理不行自行选择下一个代理服务器。另外请告诉我怎么选择代理?
我的本意是程序访问某个网页但不希望那个网页知道我的真实IP。

解决方案 »

  1.   

    如果你不嫌弃的话,可以修改注册表
      还有一个方法就是使用InternetOpen等API函数和代理连接
      下面是一个使用修改注册表下网业的方法CLASS
     Option Explicit
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    Private Declare Function RegQueryValueExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByRef lpData As Long, lpcbData As Long) As Long
    Private Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Private Const REG_SZ = 1&
    Private Const REG_DWORD = 4&
    Private Const HKEY_CURRENT_USER = &H80000001 Dim oldProxyIp As String * 255
     Dim oldProxyEn As Long
     Dim WebObject As InternetExplorer
     
     
     
    Private Sub Class_Initialize()
    On Error GoTo Hand
    Dim hKey        As Long
    Dim Ret         As Long
    Dim LenSz       As Long
        Ret = RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings", hKey)
        If Ret = 0 Then
           Ret = RegQueryValueExA(hKey, "ProxyEnable", 0, REG_DWORD, oldProxyEn, 4)
           Ret = RegQueryValueExA(hKey, "ProxyServer", 0, REG_SZ, ByVal 0, LenSz)
           oldProxyIp = String(LenSz, Chr(0))
           RegQueryValueEx hKey, "ProxyServer", 0, REG_SZ, ByVal oldProxyIp, LenSz '注意ByVal千万别忘了
           oldProxyIp = Left(oldProxyIp, InStr(oldProxyIp, Chr(0)) - 1)
         End If
       RegCloseKey hKey
      
    Hand:
    End Sub
    Public Function GetHtml(ByVal Ip As String, ByVal Port As Long, ByVal Url As String, ByVal FileName As String, Optional UserName As String, Optional Password As String) As Boolean
    On Error GoTo Hand
    Dim hKey        As Long
    Dim Ret         As Long
    Dim LenSz       As Long
    Dim StrIp_Port  As String
    StrIp_Port = Ip & ":" & Port
      Ret = RegOpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings", hKey)
      Ret = RegSetValueEx(hKey, "ProxyServer", 0, REG_SZ, ByVal StrIp_Port, Len(StrIp_Port))
      Ret = RegSetValueEx(hKey, "ProxyEnable", 0, REG_DWORD, 1, 4)
        Set WebObject = New InternetExplorer
              WebObject.Navigate Url
    '          Set WebObject.Document.location.href = Url
         '下面这段还需要改进
            Do Until WebObject.Busy = False
            DoEvents
            Loop
            
            
            
            
            SendKeys FileName & "{enter}"
            WebObject.ExecWB OLECMDID_SAVEAS, 0, 0, 0
            
            Set WebObject = Nothing
            Ret = RegSetValueEx(hKey, "ProxyServer", 0, REG_SZ, ByVal oldProxyIp, Len(oldProxyIp))
            Ret = RegSetValueEx(hKey, "ProxyEnable", 0, REG_DWORD, oldProxyEn, 4)
            RegCloseKey hKey
            GetHtml = True
            Exit Function
    Hand:
      GetHtml = False
        
    End Function
      

  2.   

    我很详细的看了您的代码,有几个问题
    1.我的电脑HKEY_CURRENT_USERSoftware\Microsoft\Windows\CurrentVersion\Internet Settings 下并没有 ProxyServer值,所以oldProxyIp取不到
    2.能不能说一下您修改注册表思路?难道IE是根据注册表里的值来递交ip地址的吗?
    3.使用InternetOpen等API的思路又是怎样的?
      

  3.   

    "不希望那个网页知道我的真实IP"
    不要以为你有了代理别人就不能知道你的真ip
      

  4.   

    不是
    我用php或者asp都可以很容易获取你经过代理后的原本ip
      

  5.   

    不好意思,我对php和asp都不了解,能隐藏真实ip也只是听说的。可能这个建议是错的吧。
    请教楼上的那到底有没有办法让网页不知道我的真实IP?
      

  6.   

    呵呵如果隐藏不了ip黑客还混个p阿看什么程度的代理了有的页面代理什么都获取不了连cooike都获取不了