我在学习代理的时候发现了很多种人写的代理 当然有通讯用的有网页用的单位和办公室一般都使用HTTP代理因此我在总结其他人的代理的时候发现很多人都是C语言要不就是2005老版本的VB.NET语言写的要不就是把别人的文章整个拷贝过来也不进行实际的检查,很多别人写的代码在调试上都有一些小错误,学习起来很头疼,我吧代码简单整理了下用的是VB.NET2010语言的格式 希望对看后的人有一些帮助,少走一些弯路吧。笔记弯路走多了会大小编程爱好者的积极性。
以下是模块代码:
Imports System.Runtime.InteropServices Imports System.Net Imports System.Net.Sockets Imports System.Net.WebClient Imports WindowsApplication1.SockProxy Module 代理设置函数 Public Const INTERNET_OPTION_TYPE_PROXY = 38 Public Const INTERNET_OPEN_TYPE_PROXY = 3 Public Const INTERNET_OPTION_SETTINGS_CHANGED = 39 '调用API函数 <DllImport("wininet.dll", SetLastError:=True)> _ Public Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean '窗口调用请把上面代码替换为下面的这行代码,或直接将Public 与 Function 中间加一个Shared 就可以在窗体重使用了 在模块中就用上面的代码'很多网上给的API函数都是VB6或VB2005用的 在2010就不能正常调用了
'Public Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean End Function
Structure INTERNET_PROXY_INFO Public dwAccessType As Integer Public proxy As IntPtr Public proxyBypass As IntPtr End Structure Public Sub SetProxy(ByVal StrProxy As String) Dim _IP As INTERNET_PROXY_INFO _IP.dwAccessType = INTERNET_OPEN_TYPE_PROXY _IP.proxy = Marshal.StringToHGlobalAnsi(StrProxy) _IP.proxyBypass = Marshal.StringToHGlobalAnsi("local") Dim Inpt As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(_IP)) Marshal.StructureToPtr(_IP, Inpt, True) InternetSetOption(IntPtr.Zero, INTERNET_OPTION_TYPE_PROXY, Inpt, Marshal.SizeOf(_IP)) End Sub End Module
下面是调试代码:SetProxy("10.2.2.3:8080") ’HTTP代理 WebBrowser1.Navigate("http://www.163.com") ' 正确代理WEB
VB.NET2010 下HTTP代理浏览网页的实现
最新推荐文章于 2021-06-16 02:47:11 发布