C# webbrowser 代理

百度,google加自己理解后,将所得方法总结一下:

    方法1:修改注册表Software//Microsoft//Windows//CurrentVersion//Internet SettingsProxyEnable和ProxyServer。这种方法适用于局域网用户,拨号用户无效。

    

 1 public partial class Form1 : Form
 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(039, IntPtr.Zero, 0);
34                    InternetSetOption(037, 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下以你拨号连接名为键的值,该键为二进制。这种方法适用于拨号用户。

    
public partial class FrmMain : Form
    
{

[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 = 48break;
                
case '1': key = 49break;
                
case '2': key = 50break;
                
case '3': key = 51break;
                
case '4': key = 52break;
                
case '5': key = 53break;
                
case '6': key = 54break;
                
case '7': key = 55break;
                
case '8': key = 56break;
                
case '9': key = 57break;
                
case '.': key = 46break;
                
case ':': key = 58break;
                
            }

            
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(039, IntPtr.Zero, 0);
                    InternetSetOption(
037, 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 { }


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C MySQL读写分离连接串_Mysql读写分离

一 什么是读写分离MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询&#xff0c;而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。当然&#xff0c;主服务器也可以提供…

golang 编写的在线redis 内存分析工具 rma4go

redis 内存分析工具 rma4go redis是一个很有名的内存型数据库&#xff0c;这里不做详细介绍。而rma4go (redis memory analyzer for golang) 是一个redis的内存分析工具&#xff0c;这个工具的主要作用是针对运行时期的redis进行内存的分析&#xff0c;统计redis中key的分布情…

从Jupyter Notebook到脚本

16 Aug: My second article: From Scripts To Prediction API8月16日&#xff1a;我的第二篇文章&#xff1a; 从脚本到预测API As advanced beginners, we know quite a lot: EDA, ML concepts, model architectures etc…… We can write a big Jupyter Notebook, click “Re…

【EasyNetQ】- 使用Future Publish调度事件

许多业务流程要求在将来某个日期安排事件。例如&#xff0c;在与客户进行初次销售联系后&#xff0c;我们可能希望在将来的某个时间安排跟进电话。EasyNetQ可以通过其Future Publish功能帮助您实现此功能。例如&#xff0c;这里我们使用FuturePublish扩展方法来安排未来一个月的…

Java这些多线程基础知识你会吗?

0、并发和并行、进程核线程、多进程和多线程的区别&#xff1a; &#xff08;这里的时间和时刻上的概念同物理上的一样&#xff09; 并发&#xff1a;在一段时间内多个任务同时执行&#xff0c;或者说是在一段很短的时间内可以执行多条程序指令&#xff0c;微观上看起来好像是可…

MySQL set names 命令_mysql set names 命令和 mysql 字符编码问题

先看下面的执行结果&#xff1a;(rootlocalhost)[(none)]mysql>show variables like character%;---------------------------------------------------------------------------------------| Variable_name | Value |---------------------------------------------------…

设置Proxy Server和SQL Server实现数据库安全

首先&#xff0c;我们需要了解一下SQL Server在WinSock上定义协议的步骤&#xff1a; 1. 在”启动”菜单上&#xff0c;指向”程序/Microsoft Proxy Server”&#xff0c;然后点击”Microsoft Management Console”。 2. 展开”Internet Information Service”,再展开运行Proxy…

Python django解决跨域请求的问题

解决方案 1.安装django-cors-headers pip3 install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS [...corsheaders&#xff0c;...] MIDDLEWARE_CLASSES (...corsheaders.middleware.CorsMiddleware,django.middleware.common.CommonMiddleware, # 注意顺序...…

加勒比海兔_加勒比海海洋物种趋势

加勒比海兔Ok, here’s a million dollar question: is the Caribbean really dying? Or, more specifically, are marine species found on Caribbean reefs becoming less abundant?好吧&#xff0c;这是一个百万美元的问题&#xff1a;加勒比海真的死了吗&#xff1f; 或者…

mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数

MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数、分钟数、小时数、天数、周数、季度数、月数、年数&#xff0c;当前日期增加或者减少一天、一周等等。SELECT TIMESTAMPDIFF(类型,开始时间,结束时间)相差的秒数&#xff1a;SELECT TIMESTAMPDIFF(SECOND,1993-03-23 0…

tornado 简易教程

引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接&#xff08;被服务器托管&#xff09;&#xff0c;而这类服务器通常都是基于多线程的&#xff0c;也就是说每一个网络请求服务器都会有一个对应的线程来用web应用&#xff08;如Djang…

如果你的电脑是通过代理上网的.就要用端口映射

由于公网IP地址有限&#xff0c;不少ISP都采用多个内网用户通过代理和网关路由共用一个公网IP上INTERNET的方法&#xff0c; 这样就限制了这些用户在自己计算机上架设个人网站&#xff0c;要实现在这些用户端架设网站&#xff0c;最关键的一点是&#xff0c; 怎样把多用户的内网…

人口密度可视化_使用GeoPandas可视化菲律宾的人口密度

人口密度可视化GeoVisualization /菲律宾。 (GeoVisualization /Philippines.) Population density is a crucial concept in urban planning. Theories on how it affects economic growth are divided. Some claim, as Rappaport does, that an economy is a form of “spati…

Unity - Humanoid设置Bip骨骼导入报错

报错如下&#xff1a; 解决&#xff1a; 原因是biped骨骼必须按照Unity humanoid的要求设置&#xff0c;在max中设置如下&#xff1a; 转载于:https://www.cnblogs.com/CloudLiu/p/10746052.html

python3openpyxl无法打开文件_Python3 处理excel文件(openpyxl库)

openpyxl 介绍openpyxl是一个用于读/写 XLSX/XLSM/XLTX/XLTM文件的python库。openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件&#xff1b;2007一下的版本为xls后缀的文件&#xff0c;需要使用 xlrd和xlwt库进行操作。虽然xlrd和xlwt也可以进行文件读写&…

Kubernetes - - k8s - v1.12.3 OpenLDAP统一认证

1&#xff0c;基本概念 为了方便管理和集成jenkins&#xff0c;k8s、harbor、jenkins均使用openLDAP统一认证。2&#xff0c;部署openLDAP 根据之前的文档&#xff0c;openLDAP使用GFS进行数据持久化。下载对应的openLDAP文件git clone https://github.com/xiaoqshuo/k8s-clust…

给程序加壳

在内存中运行可执行程序&#xff0c;好处是可以给程序加壳&#xff0c;加密源程序&#xff0c;静态反汇编无法获得PE输入节&#xff0c;但是因为运行后仍然是独立的进程&#xff0c;所以没办法防止远程线程注入&#xff0c;挂接API钩子。 typedef IMAGE_SECTION_HEADER ( * PIM…

srpg 胜利条件设定_英雄联盟获胜条件

srpg 胜利条件设定介绍 (Introduction) The e-sports community has been growing rapidly in the past few years, and what used to be a casual pastime has morphed into an industry projected to generate $1.8 B in revenue by 2022. While there are many video games …

[Egret][文档]遮罩

——遮罩的作用是指定一个显示对象的可见区域&#xff0c;即这个显示对象只在这个区域可见。 一、矩形遮罩 将一个矩形对象赋值给显示对象的 mask 属性。 shp.mask new egret.Rectangle(20,20,30,50); 【注】&#xff1a;这个矩形的坐标(20,20)和(30,50)是相对于被遮罩对象shp…

clob类型字段最大存储长度_请教oracle的CLOB字段的最大长度?

CLOB和BLOB都是4G&#xff0c;而LONG ,LONG raw是旧时代的oracle二进制和长文本表示&#xff0c;将来会被废弃。最长长度是2G.单位是Byte表中单个 LOB 字段 在 9i 版本中可保存 4GB 数据, 在 10g 版本中可保存多达 128TB 的数据.所以理论上是没限制的ORACLE的数据类型-- ORAC…