C# webbrowser 代理
百度,google加自己理解后,将所得方法总结一下:
方法1:修改注册表Software//Microsoft//Windows//CurrentVersion//Internet Settings下 ProxyEnable和ProxyServer。这种方法适用于局域网用户,拨号用户无效。
2 {
3
4 //用于刷新注册表
5 [DllImport(@"wininet",
6 SetLastError = true,
7 CharSet = CharSet.Auto,
8 EntryPoint = "InternetSetOption",
9 CallingConvention = CallingConvention.StdCall)]
10
11
12 public static extern bool InternetSetOption
13 (
14 int hInternet,
15 int dmOption,
16 IntPtr lpBuffer,
17 int dwBufferLength
18 );
19
20 private void btnStart_Click(object sender, EventArgs e)
21 {
22 RegistryKey pregkey;
23 pregkey = Registry.CurrentUser.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Internet Settings", true);
24 if (pregkey == null)
25 {
26 Console.WriteLine("键值不存在");
27 }
28 else
29 {
30 pregkey.SetValue("ProxyEnable", 1);
31 pregkey.SetValue("ProxyServer", "代理地址");
32 //激活代理设置
33 InternetSetOption(0, 39, IntPtr.Zero, 0);
34 InternetSetOption(0, 37, IntPtr.Zero, 0);
35 webBrowser1.Navigate(txtweb.Text, false);
36 // System.Threading.Thread.Sleep(10000);
37 }
38 }
39}
方法2: 修改注册表 Software//Microsoft//Windows//CurrentVersion//Internet Settings//Connections下以你拨号连接名为键的值,该键为二进制。这种方法适用于拨号用户。
{
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "InternetSetOption",
CallingConvention = CallingConvention.StdCall)]
public static extern bool InternetSetOption
(
int hInternet,
int dmOption,
IntPtr lpBuffer,
int dwBufferLength
);
//将值转换为注册表中的二进制值
public byte ChangeTobyte(char i)
{
byte key = 0;
switch (i)
{
case '0': key = 48; break;
case '1': key = 49; break;
case '2': key = 50; break;
case '3': key = 51; break;
case '4': key = 52; break;
case '5': key = 53; break;
case '6': key = 54; break;
case '7': key = 55; break;
case '8': key = 56; break;
case '9': key = 57; break;
case '.': key = 46; break;
case ':': key = 58; break;
}
return key;
}
private void btnStart_Click(object sender, EventArgs e)
{
int i = ("代理地址").Length;
byte[] key = new byte[50];
char[] source = ("代理地址").ToCharArray();
key[0] = 60;
key[4] = 3;
key[8] = 3;
key[12] = (byte)i;
for (int ii = 0; ii < source.Length; ii++)
{
key[16 + ii] = ChangeTobyte(source[ii]);
}
string sDirectX = "";
for (int k = 0; k < key.Length; k++)
{
if (key[k] != 0)
{
sDirectX += key[k] + " ";
}
}
//MessageBox.Show(sDirectX);
RegistryKey pregkey;
pregkey = Registry.CurrentUser.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Internet Settings//Connections", true);
if (pregkey == null)
{
Console.WriteLine("键值不存在");
}
else
{
pregkey.SetValue("拨号名字对应键值", key, RegistryValueKind.Binary);
//激活代理设置
InternetSetOption(0, 39, IntPtr.Zero, 0);
InternetSetOption(0, 37, IntPtr.Zero, 0);
webBrowser1.Navigate(txtweb.Text, false);
webBrowser1.Refresh();
}
}
}
方法3: 使用c#自带的 webproxy类,使用这种方法可以获得目标网站的响应,但我不会把这种响应用IE反馈出来,有高手帮个忙么?
网上的代码说是MSDN的:
HttpWebRequest myWebRequest=(HttpWebRequest)WebRequest.Create(" http://www.microsoft.com"/);
WebProxy myProxy=new WebProxy();
// Obtain the 'Proxy' of the Default browser.
myProxy=(WebProxy)myWebRequest.Proxy; 这行我编译不通过
// Print the Proxy Url to the console.
Console.WriteLine("/nThe actual default Proxy settings are {0}",myProxy.Address);
try
{
Console.WriteLine("/nPlease enter the new Proxy Address that is to be set:");
Console.WriteLine("(Example: http://myproxy.example.com:port/)");
string proxyAddress;
proxyAddress =Console.ReadLine();
if(proxyAddress.Length>0)
{
Console.WriteLine("/nPlease enter the Credentials ");
Console.WriteLine("Username:");
string username;
username =Console.ReadLine();
Console.WriteLine("/nPassword:");
string password;
password =Console.ReadLine();
// Create a new Uri object.
Uri newUri=new Uri(proxyAddress);
// Associate the newUri object to 'myProxy' object so that new myProxy settings can be set.
myProxy.Address=newUri;
// Create a NetworkCredential object and associate it with the Proxy property of request object.
myProxy.Credentials=new NetworkCredential(username,password);
myWebRequest.Proxy=myProxy;
}
Console.WriteLine("/nThe Address of the new Proxy settings are {0}",myProxy.Address);
HttpWebResponse myWebResponse=(HttpWebResponse)myWebRequest.GetResponse();
我改了下:
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create("http://www.123cha.com");
WebProxy myProxy = new WebProxy("代理地址", true);
try
{
Console.WriteLine("/nThe Address of the new Proxy settings are {0}", myProxy.Address);
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
webBrowser1.DocumentStream = myWebResponse.GetResponseStream();
}
catch { }
C# webbrowser 代理相关推荐
- webbrowser代理c#代码实现
微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...
- C# WinForm开发系列 - WebBrowser
介绍Vs 2005中带的WebBrowser控件使用以及一些疑难问题的解决方法, 如如何正确显示中文, 屏蔽右键菜单, 设置代理等; 收集的文章中有可能还带了一些Asp.Net开发使用微软的WebBr ...
- C# (转载)webbrowser专题(参考资料:https://www.cnblogs.com/blogpro/p/11458390.html)
C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case 4:高亮显示 上一个例子中我们学会了查找文本--究跟到底,对Web页面还是只读不写.那么,如 ...
- C# webbrowser专题
C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case 4:高亮显示 上一个例子中我们学会了查找文本--究跟到底,对Web页面还是只读不写.那么,如 ...
- C# WebBrowser 设置代理
微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理 using System; using System.Collec ...
- C# WebBrowser 设置独立的代理
近期需要对webbrower设置代理,找到了如下方案: 1. 对修改注册表,设置全局代理 这种方法限制在一个进程内只能设置或取消代理,而且是全局代理,对于部分不需要代理对功能会产生影响 2. 通过函数 ...
- C# WebBrowser 设置代理完全解决方案
微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...
- 对WebBrowser控件设置代理
我们用WebBrowser控件的时候,有时需要对它使用代理服务器. 一种常规的做法是修改全局IE代理设置.这种方式可以通过修改注册表实现,但这样做就把所有的IE引擎都给设置了,网上介绍的大都是这种方法 ...
- C# webBrowser 通过代理访问网页
改变webBrowser1的代理 代码#region 改变代理[DllImport("wininet.dll", SetLastError = true)]private stat ...
最新文章
- PL/SQL 包的概念及创建使用
- 关于把世界坐标投射到屏幕上转换为屏幕2D坐标
- Oracle 原理:序列
- linux篇:CenterOS6和Center的区别
- 谈谈2018年区块链大事件
- CSS3及JS媒体查询教程
- 机器学习近年来之怪现状
- 计算机科学研究方向介绍
- android udp获取ip,安卓开发 局域网UDP获取服务器Ip地址
- 2017年3月份前端资源分享
- 【PL/SQL】异常处理
- 软考网络工程师备考经验
- NDS –无法加载数据(解决方案)–如何更新R4内核
- Java代码编程格式规范
- python可以查ip地址吗_python实现查询IP地址所在地
- Ubuntu16.04使用ninja编译安装LLVM
- 货郎问题java_货郎问题
- tkinter窗口美化功能介绍 第一章 内部美化功能
- C#中命名参数和可选参数
- 阻容感原件选择标规范
热门文章
- You have unstaged changes.
- 拾牙的2021年秋招总结(大概会有帮助?)
- gsettings-desktop-schemas : 破坏: mutter (< 3.31.4) 但是 3.28.4-0ubuntu18.04.2 正要被安装解决方案
- java创建临时文件_用Java创建一个临时文件
- Java System类console()方法及示例
- 干涉测量技术的应用_技术分享 | 石化行业测量仪表应用在线答疑
- 源码 连接mysql_MySql轻松入门系列————第一站 从源码角度轻松认识mysql整体框架图...
- 【ubuntu】ubuntu下用make编译程序报错找不到openssl/conf.h
- x86异常处理与中断机制(3)中断处理过程
- 进程常用指令 (从创建到回收 包含守护)