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がブロックされているため、次のIPが取得されますが、次のIP、さらには次のIPでもブロックが表示されます。

プロキシをそれほど速く取得しないと仮定すると、更新する必要があるかもしれません。これを実装する方法を教えてください。

ありがとうございました

4

2 に答える 2

1

私はグーグルでたくさん助けを得ましたが、正確なリンクを覚えていません:

これがコードです。refresh関数を呼び出してプロキシを渡します。これはいつでも、いつでも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 に答える