晨鸟科技

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

作者: Star    时间: 2010-12-23 22:53
标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解
本帖最后由 Star 于 2010-12-24 14:43 编辑
1 Z' y. f" P3 {1 }$ }  @: J8 |* Y) I- z7 I) |+ G  `
第一种解决办法是针对使用webclient访问网页的:为WebClient配置proxy属性,下面是网上的一个距离,源地址是http://bbs.firnow.com/dview16t58782.html
  1. WebClient   clt   =   new   WebClient();
    / }% W9 {2 g% n: }* ^9 h( h' e
  2. WebProxy   proxy   =   new   WebProxy( "ProxyServer ",   80);
      s8 l: D4 m7 L! F7 T- r
  3. NetworkCredential   crd   =   new   NetworkCredential( "UserName ",    "Password ",    "Domain "); 9 ?) S1 Q+ `6 U" n8 ^
  4. proxy.Credentials   =   crd; # a9 W% _. v- ~. X
  5. clt.Proxy   =   proxy;
复制代码
但是EB_EXP中使用的是HttpWebRequest,这个的解决办法也是为HttpWebRequest配置proxy信息,HttpWebRequest对象也有Proxy属性的
& C1 D9 Q* B. n# K2 ~0 L, k% C# {% H3 K7 G* b! f( b
可是,应该是程序自动检测用户浏览器是否使用了代理,使用了代理则获取用户浏览器中设置的代理的username和password等信息访问网络(不知道这个是否可行),如果没有使用代理,则直接访问
7 I1 z/ N3 N0 h* d! _. b% \" r5 A9 R- m
功能的关键是:4 W, @% `. q) C/ X, {% F
1、asp.net使用代理访问网络: k+ f: Z9 k+ K& I0 d
2、代理自动检查与获取
作者: Star    时间: 2010-12-24 14:17
可以如下面的代码示例所示,通过将空 Proxy 用于您的请求,禁用请求级别的自动代理检测
  1. public static void DisableForMyRequest (Uri resource)
    7 e" U3 O$ G4 J/ ?. w% D7 O
  2. {# B/ v% M8 S+ M% I0 ~" f# i8 q
  3.     WebRequest request = WebRequest.Create (resource);/ Z7 h/ n1 i4 t2 }1 Q8 I
  4.     request.Proxy = null;9 @; q. R; O. z: {" P0 y- S
  5.     WebResponse response = request.GetResponse ();( B% `7 c9 |/ Z
  6. }
复制代码

作者: Star    时间: 2010-12-24 14:22
所以说,代理的检测是.net做的事情咯?
作者: Star    时间: 2010-12-24 14:42
实验:' D3 N6 y9 w* W1 J" m. T
在EB_EXP系统中使用“前往”进行测试:
+ ]! s) v7 }& E" yPart1:程序是否能自动检测IE内核的浏览器的代理
2 \- V  F+ s7 k6 H3 ^. G1、IE中不启用代理服务,“前往”www.cnn.com,是不可以访问,在校园环境下,则弹出校园网认证窗口Drcom上网登录窗8 ?) M$ e# z- t, |
2、IE中启用代理服务,可以在浏览区显示cnn的网页
3 l. u5 D0 p0 nPart2:IE内核以外的浏览器:使用火狐做实验
: z  |6 R2 G, Z7 S1、火狐中不启用代理不能访问;火狐中启用代理能访问;0 G+ g, ?1 r9 W# \- w: q
2、IE中启用代理,火狐中不启用,使用火狐浏览器不能访问:说明不同浏览器访问网络是基于其本身设置的/ U0 @; K1 e3 o  g
4 a" K1 ~% I8 Z3 F/ u
总结:.net开发的系统是能自动检测查找代理的,在程序中不用进行代码设置,如果要禁用代理服务,则在程序中将HttpWebRequest或者WebClient的Proxy属性设置为null2 y8 [" W# C" _* T
1、
作者: Star    时间: 2010-12-24 14:42
好啦,不过还需要了解浏览器访问网络资源的原理,才能解释清楚这个问题呀




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