思步网

查看: 104086|回复: 60
打印 上一主题 下一主题

[其他] 一个HTTP相关测试代码的利用。

  [复制链接]
环境:VS2005+C#
起因:公司为代理上网,每个人分配帐号和密码。默认帐号为邮件@之前,密码为工号。这些可以通过公司黄页获取。但会出现两个问题,1、大部分人还是很聪明的修改了密码,不会默认为工号;2、帐号有流量限制,就算密码没有修改,没有流量也比较麻烦。每次从N多帐号中试哪个可用,非常麻烦。
设计思路:
C# 使用using System.Net,定义一个含有代理的HttpWebRequest,打开baidu,对比返回的HttpWebResponse中是否含有"百度一下,你就知道"。如果有则说明代理可用。
代码比较简单,就不解释了。
这里有4个问题:
1、不知道怎么用C#清理页面缓存,这个带来的问题就是只要找到一个可用帐号,后面的帐号就没法识别了,因为baidu的页面已经缓存在那边了。所以程序里只要找到一个就中断,反正一次也只能用一个帐号。其实一种取巧的方法是在自己博客里放上张网页,设置成不缓存的,应该能解决。不过在公司不能用ftp工具,有空在试吧。
2、帐号数据不多,简单点就没用线程去做了。页面也就卡个几秒最多。
3、这个其实是很早以前的想法,不过那时候写不来,现在几行代码就搞定了,但实际我不用这个代理上网又,闲的蛋疼。

4、想做个自动更换代理帐号的按键,但没找到windows的接口。
代码:  
  1. //读取帐号文件,以及页面显示。

  2. private void butLoad_Click(object sender, EventArgs e)



  3. {

  4.             string fileName = "Account.txt";

  5.             FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate);

  6.             StreamReader sr = new StreamReader(fs);

  7.             string name, password, line;

  8.             string[] token;            

  9.             bool bFound = false;

  10.             while ((line = sr.ReadLine()) != null && bFound == false)

  11.             {

  12.                 token = line.Split(' ');

  13.                 name = token[0];

  14.                 password = token[1];

  15.                 if (isAvailable(name, password))

  16.                 {                               

  17.                     m_list.Items.Add("查找到一个可用帐号:");

  18.                     bFound = true;

  19.                     m_list.Items.Add(name + " / " + password);

  20.                     butLoad.Enabled = false;

  21.                     m_name.Text = name;

  22.                     m_passpw.Text = password;                  

  23.                 }

  24.             }

  25.             sr.Close();

  26.             fs.Close();

  27. }
复制代码




  1. //判断代理是否可用

  2. private bool isAvailable(string name, string password)

  3. {

  4.             string url = "http://www.baidu.com";

  5.             HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);

  6.             hwr.Timeout = 50000;

  7.             WebProxy proxy = new WebProxy();

  8.             proxy.Address = new Uri("http://10.0.0.108:8080");

  9.             proxy.Credentials = new NetworkCredential(name, password, "ecc");

  10.             hwr.UseDefaultCredentials = true;

  11.             hwr.Proxy = proxy;

  12.             bool isSuccess = true;

  13.             HttpWebResponse hwrs = null;

  14.             try

  15.             {

  16.                   hwrs = (HttpWebResponse)hwr.GetResponse();

  17.             }

  18.             catch

  19.             {

  20.                 //MessageBox.Show("无法连接代理!");

  21.                 isSuccess = false;

  22.             }

  23.             if (isSuccess)

  24.             {

  25.                 string strCheck = "百度一下,你就知道";

  26.                 Stream s = null;

  27.                 s = hwrs.GetResponseStream();

  28.                 StreamReader sr = new StreamReader(s, Encoding.Default);

  29.                 string str = null;

  30.                 str = sr.ReadToEnd();

  31.                 int iFind = str.IndexOf(strCheck);

  32.                 if (iFind != -1)

  33.                 {

  34.                     return true;

  35.                 }

  36.                 else

  37.                     return false;

  38.             }

  39.             else

  40.                 return false;

  41. }
复制代码








上一篇:LR测试Mysql第三步:LoadRunner调用DLL测试MySQL
下一篇:Sonar 代码质量管理平台
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

参考:《。NET软件测试自动化之道》 第五章 请求-响应测试
嗯,这个不错
[发帖际遇]: tyfitsb 发帖时在路边捡到 5 (金) 金币,偷偷放进了口袋. 幸运榜 / 衰神榜
不错 支持一个了
很有借鉴意义,先收藏了,谢谢楼主。
路过 帮顶 嘿嘿
还不错哦,如果再能多分享一些就perfect了!
不错 支持一个了
很有借鉴意义,先收藏了,谢谢楼主。
路过 帮顶 嘿嘿
有空一起交流一下。
路过 帮顶 嘿嘿
以我的经验来看,楼主的想法是可以执行的~
看了LZ的帖子,我只想说一句很好很强大!
前排支持下了哦~
您需要登录后才可以回帖 登录 | 注册

本版积分规则



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部