C# 为网络程序添加用户代理
如何为网络程序添加用户代理,本人推荐使用UrlMkSetSessionOption函数,
不过该函数有一个弱点不可以X64编译,X86编译软件才可以调用该函数
否则会一直返回!S_OK意义错误。第二呢 我建议大家在网上找找类似
http://www.proxy.com.ru/免费的代理的网站,代码上的代理是在网上找的
几日后你在使用我的代码则没有代理效果 因为代理服务器无效,所有后面
需要查阅方法的自己去找一个免费代理的服务器地址 不要说我没提醒。

我不建议大家在Wininet层使用InternetSetOption函数,
除非有必要 否则建议你使用我上面的办法。
示例代码:
private void Form1_Load(object sender, EventArgs e)
{
SetUserProxy("210.152.131.254:3128", null, null);
webBrowser1.Navigate("http://www.baidu.com/s?wd=ip");
}
使用该方法只需要简简单单的几句话就可以搞定 灰常方便。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct INTERNET_PROXY_INFO
{
public int dwAccessType;
public string lpszProxy;
public string lpszProxyBypass;
} [DllImport("urlmon.dll", SetLastError = true, CharSet = CharSet.Ansi)]
public static extern int UrlMkSetSessionOption(int dwOption, ref INTERNET_PROXY_INFO pBuffer, int dwBufferLength, int dwReserved); [DllImport("urlmon.dll", SetLastError = true, CharSet = CharSet.Ansi)]
public static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved); public const int S_OK = 0;
public const int NULL = 0;
public const int INTERNET_OPEN_TYPE_PROXY = 3;
public const int INTERNET_OPTION_PROXY = 38;
public const int INTERNET_OPTION_PROXY_USERNAME = 43;
public const int INTERNET_OPTION_PROXY_PASSWORD = 44; // 置网络代理
private bool SetUserProxy(string address, string username, string password)
{
username = username ?? string.Empty;
password = password ?? string.Empty;
var sProxy = new INTERNET_PROXY_INFO()
{
lpszProxy = address,
dwAccessType = INTERNET_OPEN_TYPE_PROXY
};
UrlMkSetSessionOption(INTERNET_OPTION_PROXY_USERNAME, username, username.Length, NULL);
UrlMkSetSessionOption(INTERNET_OPTION_PROXY_PASSWORD, password, password.Length, NULL);
return UrlMkSetSessionOption(INTERNET_OPTION_PROXY, ref sProxy, 12, NULL) == S_OK;
}
上面的代码也是比较简单的,首先开辟一个INTERNET_PROXY_INFO的结构,占12字节
然后在.dwAccessType赋值INTERNET_OPEN_TYPE_PROXY打开代理.lpszProxy赋代理
服务器的地址 后面再设置 代理用户名,代理用户密码 并把PIPI结构体传入函数 测试一下
返回值是不是S_OK如果是返回真否则返回假 整体的代码都不是好难 。
C# 为网络程序添加用户代理的更多相关文章
- 使用Code::blocks在windows下写网络程序
使用Code::blocks在windows下写网络程序 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创 ...
- Windows Phone实用教程:利用Blend为程序添加设计时数据
[前言] Blend自诞生那一天起就伴随这开发者如此的评价: 有VS还用Blend干啥,直接码代码就好了. Blend会生成一堆垃圾无用代码,很不爽. 对于这类我只会在心里评价,当你并不真正了解一样事 ...
- 在Windows系统下用命令把应用程序添加到系统服务
在Windows系统下用命令把应用程序添加到系统服务,使用SC命令. 加入服务格式如下:sc create ServiceName binPath= 程序路径 start= auto(等号后面的空格是 ...
- 开源一个基于nio的java网络程序
因为最近要从公司离职,害怕用nio写的网络程序没有人能看懂(或许是因为写的不好吧),就调整成了mina(这样大家接触起来非常方便,即使没有socket基础,用起来也不难),所以之前基于nio写的网络程 ...
- 图像处理控件ImageGear for .NET教程如何为应用程序 添加DICOM功能(2)
在前面的一些关于图像处理控件ImageGear for .NET文章<图像处理控件ImageGear for .NET教程: 添加DICOM功能(1)>中讲解了如何对应用程序添加DICOM ...
- 将一个应用程序添加做成windows服务
需求来源: 在服务器端运行的一个应用程序,为完成客户端路径分析等功能: 此应用程序只需要运行着就可以,没有界面等要求: 因此,考虑把此应用程序添加到服务器端电脑管理的服务中,可以启动和停止. 这里添加 ...
- IOS编程教程(八):在你的应用程序添加启动画面
IOS编程教程(八):在你的应用程序添加启动画面 虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些 ...
- 在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤
原文 http://www.cnblogs.com/2356/archive/2009/10/27/1590565.html 在Unicode版Inno Setup中使用ISSkin给安装程序添加皮肤 ...
- 安装程序添加iis的方法经验分享
原文:安装程序添加iis的方法经验分享 网上有一些这样的方法,但我这里主要做一些对比和扩充 网上这方面的文章的岁数比较大,server 08R2和win7出来后,整理这方面的资料的文章没找到,所以这里 ...
随机推荐
- 【Java】JDBC编程套路
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html 学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程度 ...
- java堆栈
一.堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存 ...
- Ehcache(02)——ehcache.xml简介
http://haohaoxuexi.iteye.com/blog/2113728 ehcache.xml简介 ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义Ca ...
- Python3学习
要做一个儿童搜索引擎的项目(www.kidsearch.cn),所以开始接触各种新的语言,初步学了PHP爬虫,觉得要做大点的项目用PHP确实不太方便,中文兼容性就是一个比较棘手的问题.python的爬 ...
- HTTP请求头详解【转】
http://blog.csdn.net/kfanning/article/details/6062118 HTTP由两部分组成:请求和响应.当你在Web浏览器中输入一个URL时,浏览器将根据你的要求 ...
- Delphi调用Dll的的2种写法
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F ...
- android开发之Fragment加载到一个Activity中
Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Frag ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
- 利用nf_conntrack机制存储路由,省去每包路由查找
IP是无连接的,因此IP路由是每包一路由的,数据包通过查找路由表获取路由,这是现代操作协议协议栈IP路由的默认处理方式.可是假设协议栈具有流识别能力,是不是能够基于流来路由呢?答案无疑是肯定的. 设计 ...
- StarlingMVC简介,原理解说及示例源码
StarlingMVC简介 StarlingMVC是一个为使用Starling来开发游戏的MVC框架.这个框架的特性方面,很像Swiz和RobotLegs,原理亦像Mate.其特性列表如下: 依赖注入 ...