晨鸟科技

标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解 [打印本页]

作者: Star    时间: 2010-12-23 22:53
标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解
本帖最后由 Star 于 2010-12-24 14:43 编辑 0 N* ^' \7 T) i4 F( }
: D. I! h  L) U& c# s
第一种解决办法是针对使用webclient访问网页的:为WebClient配置proxy属性,下面是网上的一个距离,源地址是http://bbs.firnow.com/dview16t58782.html
  1. WebClient   clt   =   new   WebClient();
    2 r4 M1 D& Y2 \0 F& n; y
  2. WebProxy   proxy   =   new   WebProxy( "ProxyServer ",   80);
    1 v7 V1 ?6 s! M- I+ V
  3. NetworkCredential   crd   =   new   NetworkCredential( "UserName ",    "Password ",    "Domain "); 6 r( a! d- C. J5 i5 f! j1 \7 e
  4. proxy.Credentials   =   crd; 5 J, ^7 B1 Z$ ?5 M
  5. clt.Proxy   =   proxy;
复制代码
但是EB_EXP中使用的是HttpWebRequest,这个的解决办法也是为HttpWebRequest配置proxy信息,HttpWebRequest对象也有Proxy属性的
  @9 }, |% J$ [8 i* s( }% i2 Y' S
8 ]. U' g, f# }可是,应该是程序自动检测用户浏览器是否使用了代理,使用了代理则获取用户浏览器中设置的代理的username和password等信息访问网络(不知道这个是否可行),如果没有使用代理,则直接访问
8 h; l" f( z* h) ^9 v; s% Z, `- E& r. w
功能的关键是:9 S9 D& M( m: D  C8 N7 y$ \
1、asp.net使用代理访问网络
' e' M" L6 O2 m* Z- X% O2、代理自动检查与获取
作者: Star    时间: 2010-12-24 14:17
可以如下面的代码示例所示,通过将空 Proxy 用于您的请求,禁用请求级别的自动代理检测
  1. public static void DisableForMyRequest (Uri resource)( F5 M( Q* B/ M$ q, v7 W, C
  2. {
    ' W& B2 o8 F5 a. z0 x
  3.     WebRequest request = WebRequest.Create (resource);: z" h  U! C" k4 |. s
  4.     request.Proxy = null;
    . g  B9 P& \% h: c: k. O  D. }
  5.     WebResponse response = request.GetResponse ();: V; N, T: e2 g( g: h2 G
  6. }
复制代码

作者: Star    时间: 2010-12-24 14:22
所以说,代理的检测是.net做的事情咯?
作者: Star    时间: 2010-12-24 14:42
实验:
. l; X& h: Y7 K) \在EB_EXP系统中使用“前往”进行测试:1 o: a/ f" b# t9 ]5 L# K- ]' f% k
Part1:程序是否能自动检测IE内核的浏览器的代理
& N8 d1 _  L1 G9 F: o- ]0 O1、IE中不启用代理服务,“前往”www.cnn.com,是不可以访问,在校园环境下,则弹出校园网认证窗口Drcom上网登录窗
: Y: N. K7 B' `- z2、IE中启用代理服务,可以在浏览区显示cnn的网页; _! B8 o/ }2 [: h9 ~8 p& G( ]
Part2:IE内核以外的浏览器:使用火狐做实验
8 K; I$ t+ Z0 y% z$ K. i; t1、火狐中不启用代理不能访问;火狐中启用代理能访问;9 j; k1 ?- ]7 ]- a
2、IE中启用代理,火狐中不启用,使用火狐浏览器不能访问:说明不同浏览器访问网络是基于其本身设置的& J, x6 U) L0 a* b8 }  d

" a9 L9 k3 P9 B! `, M( ~; Z总结:.net开发的系统是能自动检测查找代理的,在程序中不用进行代码设置,如果要禁用代理服务,则在程序中将HttpWebRequest或者WebClient的Proxy属性设置为null4 z; c1 ^/ q2 Y) O9 }, V0 P
1、
作者: Star    时间: 2010-12-24 14:42
好啦,不过还需要了解浏览器访问网络资源的原理,才能解释清楚这个问题呀




欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/) Powered by Discuz! X3.2