晨鸟科技

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

作者: Star    时间: 2010-12-23 22:53
标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解
本帖最后由 Star 于 2010-12-24 14:43 编辑
# {4 L& S6 K. Y8 V% w8 `
0 e. J9 h" z- ]1 M! @第一种解决办法是针对使用webclient访问网页的:为WebClient配置proxy属性,下面是网上的一个距离,源地址是http://bbs.firnow.com/dview16t58782.html
  1. WebClient   clt   =   new   WebClient(); 4 s; d9 b' _1 T" [/ C) s5 h0 U/ W
  2. WebProxy   proxy   =   new   WebProxy( "ProxyServer ",   80);8 R$ P3 M5 X' d3 O, e' n
  3. NetworkCredential   crd   =   new   NetworkCredential( "UserName ",    "Password ",    "Domain ");
    : `' c1 u3 G/ b# _# t9 p/ H
  4. proxy.Credentials   =   crd; 0 Q3 x7 j6 r( E+ B; ~& t5 t& G
  5. clt.Proxy   =   proxy;
复制代码
但是EB_EXP中使用的是HttpWebRequest,这个的解决办法也是为HttpWebRequest配置proxy信息,HttpWebRequest对象也有Proxy属性的- y9 ^* {* U% j7 \6 B
4 o" `  ]' y8 i: W* K
可是,应该是程序自动检测用户浏览器是否使用了代理,使用了代理则获取用户浏览器中设置的代理的username和password等信息访问网络(不知道这个是否可行),如果没有使用代理,则直接访问
$ `+ B; |2 N0 S- q8 l# n, R% w  D& K6 E. T* ]+ E1 [+ B
功能的关键是:' |) L* W+ V( ?: L& d
1、asp.net使用代理访问网络8 X: e0 \! U2 F6 @; ]' D+ i
2、代理自动检查与获取
作者: Star    时间: 2010-12-24 14:17
可以如下面的代码示例所示,通过将空 Proxy 用于您的请求,禁用请求级别的自动代理检测
  1. public static void DisableForMyRequest (Uri resource)3 e6 s' W# O2 z: F7 y  P" k* O
  2. {, n7 M* K+ l! {6 G* p  s( E1 X
  3.     WebRequest request = WebRequest.Create (resource);' j- Z3 O1 m3 ~+ Q6 N0 K
  4.     request.Proxy = null;
    + R# E  ]5 i0 G# j8 Y1 t3 N" A  d: V
  5.     WebResponse response = request.GetResponse ();
    + _: D, |; c! [) x$ F
  6. }
复制代码

作者: Star    时间: 2010-12-24 14:22
所以说,代理的检测是.net做的事情咯?
作者: Star    时间: 2010-12-24 14:42
实验:) M8 E; |' d  M: [4 a. g+ r0 s# l
在EB_EXP系统中使用“前往”进行测试:7 Y6 E0 X1 y4 R) n& ]
Part1:程序是否能自动检测IE内核的浏览器的代理( h0 f1 B+ q- Z/ ]' G
1、IE中不启用代理服务,“前往”www.cnn.com,是不可以访问,在校园环境下,则弹出校园网认证窗口Drcom上网登录窗
# B" h0 f3 N3 K! R2、IE中启用代理服务,可以在浏览区显示cnn的网页; R5 J( Y# v, v2 F( u/ k
Part2:IE内核以外的浏览器:使用火狐做实验* Y, n5 L+ v1 @
1、火狐中不启用代理不能访问;火狐中启用代理能访问;; B, i* Z, R0 e( ]/ q( y# X
2、IE中启用代理,火狐中不启用,使用火狐浏览器不能访问:说明不同浏览器访问网络是基于其本身设置的
" m& U( _. A) v# k! A: ~$ G) J  `% P. ?  z. N
总结:.net开发的系统是能自动检测查找代理的,在程序中不用进行代码设置,如果要禁用代理服务,则在程序中将HttpWebRequest或者WebClient的Proxy属性设置为null! i9 c  P' \8 e- z' g
1、
作者: Star    时间: 2010-12-24 14:42
好啦,不过还需要了解浏览器访问网络资源的原理,才能解释清楚这个问题呀




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