晨鸟科技

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

作者: Star    时间: 2010-12-23 22:53
标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解
本帖最后由 Star 于 2010-12-24 14:43 编辑
! j# L* k0 I. M6 Q2 z
6 |$ I7 P  \6 ?+ w第一种解决办法是针对使用webclient访问网页的:为WebClient配置proxy属性,下面是网上的一个距离,源地址是http://bbs.firnow.com/dview16t58782.html
  1. WebClient   clt   =   new   WebClient();
    - \8 _7 g: k$ t! _' T7 d* G  H
  2. WebProxy   proxy   =   new   WebProxy( "ProxyServer ",   80);, W" P- o3 A6 U; y7 [$ y
  3. NetworkCredential   crd   =   new   NetworkCredential( "UserName ",    "Password ",    "Domain "); ! i% }7 B$ U5 G
  4. proxy.Credentials   =   crd; & a* g# n  k; t9 [7 I( o
  5. clt.Proxy   =   proxy;
复制代码
但是EB_EXP中使用的是HttpWebRequest,这个的解决办法也是为HttpWebRequest配置proxy信息,HttpWebRequest对象也有Proxy属性的8 @+ ]1 R# k6 o/ r

. K# _$ U' Z6 g4 {可是,应该是程序自动检测用户浏览器是否使用了代理,使用了代理则获取用户浏览器中设置的代理的username和password等信息访问网络(不知道这个是否可行),如果没有使用代理,则直接访问
/ D( i+ L, L1 i$ N  K' ]
7 L9 r) I4 h5 G; f' E4 c功能的关键是:' y% m* ?$ p# D! X9 W
1、asp.net使用代理访问网络
/ C- h; m% h# s+ }2 P+ |2、代理自动检查与获取
作者: Star    时间: 2010-12-24 14:17
可以如下面的代码示例所示,通过将空 Proxy 用于您的请求,禁用请求级别的自动代理检测
  1. public static void DisableForMyRequest (Uri resource)# I. ?  M5 Y5 w5 Y: G7 K* K
  2. {
    ) {! T& ~) B9 g! D1 z- O
  3.     WebRequest request = WebRequest.Create (resource);" b3 S4 P2 u1 C! P4 A$ r+ ]: k
  4.     request.Proxy = null;! z; `) g( v1 r" ]6 [2 \+ x: [
  5.     WebResponse response = request.GetResponse ();! `# i& m/ s+ K5 \# O4 k
  6. }
复制代码

作者: Star    时间: 2010-12-24 14:22
所以说,代理的检测是.net做的事情咯?
作者: Star    时间: 2010-12-24 14:42
实验:9 ?7 s. ?) W' f* v2 I+ ^* P; T
在EB_EXP系统中使用“前往”进行测试:9 O* \, s) V' j* n
Part1:程序是否能自动检测IE内核的浏览器的代理* `  D( x/ n/ [# d8 ?
1、IE中不启用代理服务,“前往”www.cnn.com,是不可以访问,在校园环境下,则弹出校园网认证窗口Drcom上网登录窗
: h" U/ R; M' l& Y- g6 i# q/ A2、IE中启用代理服务,可以在浏览区显示cnn的网页. k; Y+ x7 ], @+ J6 W3 Z
Part2:IE内核以外的浏览器:使用火狐做实验- N. d8 ?2 f1 N; T7 i; N
1、火狐中不启用代理不能访问;火狐中启用代理能访问;
% K/ t$ j6 d. f1 B2、IE中启用代理,火狐中不启用,使用火狐浏览器不能访问:说明不同浏览器访问网络是基于其本身设置的& \# ]( L8 H; a' p9 s5 N2 @

8 m/ F1 F' d% y+ o$ {+ \( z总结:.net开发的系统是能自动检测查找代理的,在程序中不用进行代码设置,如果要禁用代理服务,则在程序中将HttpWebRequest或者WebClient的Proxy属性设置为null
. v4 u' \4 J6 ~: X7 V# B1 a1、
作者: Star    时间: 2010-12-24 14:42
好啦,不过还需要了解浏览器访问网络资源的原理,才能解释清楚这个问题呀




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