晨鸟科技

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

作者: Star    时间: 2010-12-23 22:53
标题: asp.net程序使用代理访问网页——自动检测问题解决,求详解
本帖最后由 Star 于 2010-12-24 14:43 编辑 . W6 B7 J* ?: c  J( v( c5 J! u
2 F  o' {" f  K& s! W
第一种解决办法是针对使用webclient访问网页的:为WebClient配置proxy属性,下面是网上的一个距离,源地址是http://bbs.firnow.com/dview16t58782.html
  1. WebClient   clt   =   new   WebClient();
    8 k' z& z& A8 R5 ]: z' ~
  2. WebProxy   proxy   =   new   WebProxy( "ProxyServer ",   80);
    " U2 B# `' l& F+ Y0 b  |
  3. NetworkCredential   crd   =   new   NetworkCredential( "UserName ",    "Password ",    "Domain "); 4 @0 w- I! O/ ]- @: b6 i9 x& b
  4. proxy.Credentials   =   crd;
    , T% v: P  y" Y3 c1 g! L3 u- J
  5. clt.Proxy   =   proxy;
复制代码
但是EB_EXP中使用的是HttpWebRequest,这个的解决办法也是为HttpWebRequest配置proxy信息,HttpWebRequest对象也有Proxy属性的) ]$ J" ~# D7 g: V

: h+ L1 t  i+ y可是,应该是程序自动检测用户浏览器是否使用了代理,使用了代理则获取用户浏览器中设置的代理的username和password等信息访问网络(不知道这个是否可行),如果没有使用代理,则直接访问" C" q2 t7 h% G
7 O1 M2 E4 g( T5 \
功能的关键是:
) d( Q; h6 l, b; r' t, V2 ]1、asp.net使用代理访问网络7 L9 w# C0 [; p3 _% [* F8 Y
2、代理自动检查与获取
作者: Star    时间: 2010-12-24 14:17
可以如下面的代码示例所示,通过将空 Proxy 用于您的请求,禁用请求级别的自动代理检测
  1. public static void DisableForMyRequest (Uri resource)% K/ B' I# v$ F# c( P
  2. {
    - Z2 G2 j1 b, i7 ^
  3.     WebRequest request = WebRequest.Create (resource);
    - z( D% J7 l4 p: o! O& `3 H' b6 f
  4.     request.Proxy = null;6 x% Q6 A5 w* p$ [
  5.     WebResponse response = request.GetResponse ();
    ' @7 R- K+ X+ M& q: G
  6. }
复制代码

作者: Star    时间: 2010-12-24 14:22
所以说,代理的检测是.net做的事情咯?
作者: Star    时间: 2010-12-24 14:42
实验:! [. H; }. _/ p& G) l7 q! B) z
在EB_EXP系统中使用“前往”进行测试:9 d8 D4 ]( Z2 ?2 \* q+ i0 U
Part1:程序是否能自动检测IE内核的浏览器的代理
4 L* @8 v( k/ J0 ~* K1、IE中不启用代理服务,“前往”www.cnn.com,是不可以访问,在校园环境下,则弹出校园网认证窗口Drcom上网登录窗
# H  G& M$ Q$ |! H2、IE中启用代理服务,可以在浏览区显示cnn的网页+ x, L/ y) X1 I) k5 A
Part2:IE内核以外的浏览器:使用火狐做实验7 r' X' b! _/ S' n$ }
1、火狐中不启用代理不能访问;火狐中启用代理能访问;
$ a# f( `' b. w" l/ A. ?4 G2、IE中启用代理,火狐中不启用,使用火狐浏览器不能访问:说明不同浏览器访问网络是基于其本身设置的, L* f- ?3 y5 Z1 F3 [; Q9 i+ w
5 m& ^6 p0 x) u" |& @8 o
总结:.net开发的系统是能自动检测查找代理的,在程序中不用进行代码设置,如果要禁用代理服务,则在程序中将HttpWebRequest或者WebClient的Proxy属性设置为null
3 q' J' L" m$ I( k: [; Z1、
作者: Star    时间: 2010-12-24 14:42
好啦,不过还需要了解浏览器访问网络资源的原理,才能解释清楚这个问题呀




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