0

我正在使用许多 ipz 并一个接一个地使用它们,一段时间后重复一些,使用以下代码在几秒钟内重复:

  string key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";

  RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true);

  RegKey.SetValue("ProxyServer", proxy);

  RegKey.SetValue("ProxyEnable", 1);

  webBrowser1.Navigate(customLinks[0].ToString());

问题并不总是成功,因为我注意到很多次。假设一个 ip 被阻止,所以它需要下一个,但我仍然看到下一个,甚至下一个的块。

所以假设它没有这么快使用代理等?也许它需要刷新。请让我知道如何实现这个

谢谢

4

2 回答 2

1

我从谷歌搜索中得到了很多帮助,但不记得确切的链接:

这是代码,我调用刷新函数并传递代理,它每次都可以 100% 工作,任何时候。

public struct Struct_INTERNET_PROXY_INFO
    {
        public int dwAccessType;
        public IntPtr proxy;
        public IntPtr proxyBypass;
    };

    [DllImport("wininet.dll", SetLastError = true)] 
    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

    private void RefreshIESettings(string strProxy)
    {
        const int INTERNET_OPTION_PROXY = 38;
        const int INTERNET_OPEN_TYPE_PROXY = 3;

        Struct_INTERNET_PROXY_INFO struct_IPI;



        // Filling in structure
        struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
        struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);
        struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");

        // Allocating memory
        IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));

        // Converting structure to IntPtr
        Marshal.StructureToPtr(struct_IPI, intptrStruct, true);

        bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));


    } 
于 2012-08-03T01:54:30.377 回答
0

听起来您需要在浏览器中设置一个代理,并自己实现该代理,以便将请求轮换到您的代理列表。

于 2012-06-24T23:36:12.837 回答