C#设置代理IP及刷网站访问量demo

来源:互联网 发布:pc机与单片机通讯协议 编辑:程序博客网 时间:2024/05/16 06:39

二话不说先上图:



浏览网站用的是webBrowser,使用timer进行延迟访问网址,获取代理ip列表通过解析ip代理网址获取和文件夹方式StreamReader ReadLine获取。

增加了个小功能用委托能够在listbox里面看到当前访问的ip(蓝色条,可动)

设置代理ip是参考网上的资料,下面是设置代理ip代码:

public Boolean setip(string ip){        RefreshIESettings(ip);        IEProxy ie = new IEProxy(ip);        return ie.RefreshIESettings();}     public struct Struct_INTERNET_PROXY_INFO        {            public int dwAccessType;            public IntPtr proxy;            public IntPtr proxyBypass;        };private void RefreshIESettings(string strProxy)        {            const int INTERNET_OPTION_PROXY = 38;            const int INTERNET_OPEN_TYPE_PROXY = 3;            const int INTERNET_OPEN_TYPE_DIRECT = 1;            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));            if (string.IsNullOrEmpty(strProxy) || strProxy.Trim().Length == 0)            {                strProxy = string.Empty;                struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;            }            // Converting structure to IntPtr            Marshal.StructureToPtr(struct_IPI, intptrStruct, true);            bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));        } [DllImport("wininet.dll", SetLastError = true)]        private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);        public class IEProxy        {            private const int INTERNET_OPTION_PROXY = 38;            private const int INTERNET_OPEN_TYPE_PROXY = 3;            private const int INTERNET_OPEN_TYPE_DIRECT = 1;            private string ProxyStr;            [DllImport("wininet.dll", SetLastError = true)]            private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);            public struct Struct_INTERNET_PROXY_INFO            {                public int dwAccessType;                public IntPtr proxy;                public IntPtr proxyBypass;            }            private bool InternetSetOption(string strProxy)            {                int bufferLength;                IntPtr intptrStruct;                Struct_INTERNET_PROXY_INFO struct_IPI;                if (string.IsNullOrEmpty(strProxy) || strProxy.Trim().Length == 0)                {                    strProxy = string.Empty;                    struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;                }                else                {                    struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;                }                struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);                struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");                bufferLength = Marshal.SizeOf(struct_IPI);                intptrStruct = Marshal.AllocCoTaskMem(bufferLength);                Marshal.StructureToPtr(struct_IPI, intptrStruct, true);                return InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, bufferLength);            }            public IEProxy(string strProxy)            {                this.ProxyStr = strProxy;            }            //设置代理            public bool RefreshIESettings()            {                return InternetSetOption(this.ProxyStr);            }            //取消代理            public bool DisableIEProxy()            {                return InternetSetOption(string.Empty);            }        }


0 0
原创粉丝点击