C# WebBrowser 设置代理完全解决方案

微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦

You can change the proxy with InternetSetOption method from the wininet.dll,
here is a example to set the proxy:

using System.Runtime.InteropServices;

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)); 


private void SomeFunc() 

RefreshIESettings("192.168.1.200:1010"); 

System.Object
nullObject = 0; 
string strTemp = String.Empty; 
System.Object
nullObjStr = strTemp;
axWebBrowser1.Navigate("http://willstay.tripod.com", ref nullObject, ref nullObjStr, ref nullObjStr, ref nullObjStr); 
}

-------------------------------------------------------------------------------------------------------------------------------------

昨 天做的投票机遇到个新问题,昨天开始那个投票开始现在ip地址,每个地址只能投5票/天。如果每次更改ie的连接为代理服务器,那也麻烦死了,如
果改用webclient,那昨天的2个多小时就白费了,上网一通狂收还真找到了办法,这下好办了,建了一个proxy.txt文档,里面放上从网上收到
的代理服务器,然后程序读到一个listbox里面,每次需要更换ip的时候只要单击一次,就可以还一个地址重新投票了。
附上proxy.cs

using
System.Runtime.InteropServices;//需要添加这个引用
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);
public 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));
}

使用的时候,调用RefreshIESettings
py.proxy py1 = new
proxy();
py1.RefreshIESettings(”221.4.155.51:3128″);
System.Object
nullObject = 0;
string strTemp = String.Empty;
System.Object nullObjStr =
strTemp;
webBrowser1.Navigate(”http://www.hfxsy.cn”, null, null,
null);

C# WebBrowser 设置代理完全解决方案,布布扣,bubuko.com

时间: 2024-10-29 03:35:59

C# WebBrowser 设置代理完全解决方案的相关文章

C# 为WebBrowser设置代理,打开网页

WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE的,相信做.NET的人都知道. 今天的主题,和上一篇文章应该是差不多的,都是通过代理来实现功能的. 请看下面的代码: //1.定义代理信息的结构体 public struct Struct_INTERNET_PROXY_INFO         {             public int dwAccessType;             public IntPtr proxy;             public 

如何在android studio 1.0 启动时设置代理【解决WARN - ateSettings.impl.UpdateChecker - Connection failed.】

今天第一次用android studio,下了个比较新的1.0.1 linux版本,结果启动时老是出现以下错误: [ 6987] WARN - ateSettings.impl.UpdateChecker - Connection failed. Please check your network connection and try again. 百度了以下,都没找到可行方案,最后在google里找到了解决方案,在此记录下来,供大家参考. 方法1: 到android studio安装目录,打开

python模拟浏览器登陆淘宝(设置代理、输入验证码)

终于实现了登陆淘宝,这个验证码机制困惑了我好几天啊. 代码中验证码提供有两种方式,第一种通过webbrowser的open直接在浏览器中打开含有验证码的图片,第二种就是将其以jepg格式存在 C:\\Users\\Administrator\\Desktop\\checkcode.jepg.你可以根据自己主机的用户名更改路径.同时这个代码必须先指定用户名和账号也 可以实时输入账号的密码,小小修改一下代码就可以. 显示根据httpfox分析网页数据,之后再使用正则扣除你想要的数据,将其显示出来.过

Vue-cli创建项目从单页面到多页面4 - 本地开发服务器设置代理

前后端分离开发时,有时候会遇到跨域的情况:只在开发的时候存在跨域,项目上线后,由于配置的域名相同,跨域就会不存在. 这个时候,有两种方案可以比较快的解决: 1.利用h5的特性,使用cors,在ngnix服务器上设置header:Access-Control-Allow-Origin的值为 *(或者目标域名)允许跨域. 2.在我们的本地开发服务器上设置代理. 这里主要介绍使用vue-cli创建项目后,怎样配置本地服务器的代理,成功通过本地服务器代理请求数据的解决方案. 解决方案 进入config/

给 iTerm 终端设置代理

本文介绍如何为自己的终端设置代理,从而实现在命令行中访问Google. 1. 背景 当你使用SS FQ时,大部分浏览器都可以成功访问Google,但是在命令行下执行curl https://www.google.com时,会超时失败.对于类似的这种情况,本文将解释出现这种现象的原因,并给出有效的解决方案. 2. 原因 启动SS时,会创建两个代理,一个是ss-local,一个是privoxy:ss-local用于代理socks5请求,privoxy用于代理所有的HTTP请求 启动SS时,不管用PA

Linux设置代理上网

Linux设置代理上网 在Linux中设置代理上网只需要设置个用户变量就可以,有如下几种代理方式: 代理方式 变量名 http代理 http_proxy https安全代理 https_proxy ftp代理 ftp_proxy 不使用代理的IP no_proxy 1.立即生效 [[email protected] ~]# export http_proxy=itxxx:123456@110.199.131.137:909 代理方式  =  用户名 : 密码 @ 代理地址:端口 #http_pr

设置代理的步骤

设置代理的几个步骤 (1)如果一个视图中的某个按钮被点击了,这个时候需要去主控制器中刷新数据.有一种做法是,让这个视图拥有控制器这个属性,然后当按钮被点击的时候去利用该属性去做刷新数据的操作.另一种做法是把控制器设置为这个视图的代理,当视图中的某个按钮被点击的时候,通知它的代理(主控制器)去干刷新数据这件事. (2)要成为代理是由条件的,有以下几个步骤 1).双方约定一个协议(代理协议,注意命名规范),在视图中自定义一个协议,协议中提供一个方法. @protocol YYHeaderViewDe

Android Studio设置代理

我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我们每一次点击这个按钮来执行我们的程序时,都会先调用这个来进行构建,这个和Eclipse上还是不一样的,因为Gradle构建的时候要联网,但是联网就联网呗,偏偏还要连接到墙外面的网络,我当初刚刚涉足移动开发的时候可被它给坑苦了,现在想一想真是蛋疼啊,信心满满的装好了高大上的Android Studio

设置代理

设置代理: 例如: // 以UIPickerView为例 picker.dataSource = self; picker.delegate = self; picker.showsSelectionIndicator = YES; // 这个弄成YES, picker中间就会有个条, 被选中的样子 picker.autoresizingMask = UIViewAutoresizingFlexibleWidth