string Url = "http://xyq.cbg.163.com/static_file/164/buy_equip_list/equip_list1.html";
Stream stream = new WebClient().OpenRead(Url);
str = new StreamReader(stream, Encoding.GetEncoding(charset)).ReadToEnd();
上面是我的代码
当我通过上面代码去获取页面内容时会提示需要登陆,
那我先在页面上在
http://xyq.cbg.163.com/cgi-bin/show_login.py?act=show_login&area_id=1&area_name=%E4%B8%8A%E6%B5%B71%E5%8C%BA&server_id=164&server_name=%E5%A4%A9%E9%A9%AC%E5%B1%B1
这个页面通过验证码匿名登陆再在我的页面运行我的代码,还是说我没有登陆的,这个是怎么验证的呀~!难道 我登陆后Session会在我离开页面时清空?
如果是,我有什么办法模拟登陆对页面的内容做采集吗?

解决方案 »

  1.   

    http://www.cnblogs.com/anjou/archive/2008/05/25/1206832.html
      

  2.   

    当然你也可以用httpwebrequest
    原理你要知道,你post登录账户进去,服务器验证通过,返回sessionid作为cookie
    以后再访问,你加上它服务器就认为这个请求和之前的验证来自同一个会话,因此是登录过的。
      

  3.   

    哦,谢谢,我用的是.net1.1提示WebClient是密封不能被继承的,那应该怎么办呀
      

  4.   

    我的理解是不能通过原页面登陆,再用我自己的页面采集啦~!
    应该要在我的页面上做个模拟登陆,这样我这里才能得到Session值,然后在采集的时候回传给服务器那边让服务器理解为我已登陆吗?
      

  5.   

    反正你能不能登录的关键就是那个cookie,你可以用Fiddler这样的抓包工具很容易看到。