虽然标题写的是“原创”,但使用到的技术基本都是免费的东西,使用的方法也都是从网上搜索来的,自己只是整合了一下。
自己是个“资料收集狂”,还是个“超级懒惰“的程序员,经常为了减少几分钟的手工操作,而忙碌几天来写个小工具,使其可以替代或部分替代自己的重复工作。这种“为了减少麻烦,而让其更麻烦”的行为,经常被老婆嘲笑。但偶发现,这个是每个程序员身上或多或少的一个“特征”。
?
现在的生活中,自己的生活已经无法离开网络:买东西、交费、网银、生活资讯、新闻、电子邮箱、BLOG、微博……,基本算是被它给绑架了。网页上东西,都有些共通特点:内容多、更新快、页面的结构基本是有规律可循的。所以某些东西就可以考虑使用工具来处理了。
?
之所以选择.net,理由很简单:快速开发。使用的操作系统是Windows,其它自己家的开发工具自然会少很多麻烦。下面进入正题(有点小啰嗦,不要飞砖头,我会拨打911的)。
一、必备工具
既然是要分析网页内容,首先我们必须要知道浏览器都在做什么,与远程的服务器是如何交互的。
1、HttpWatch(http://www.httpwatch.com/)
这是个收费工具,虽然有免费版本,但base版本的基本无法满足我们的使用需求,所以嘛……必要弄个Pro版本的,“试用”一下。
就使用“网易邮箱”来试试吧。打开登录窗口:
上图的IE窗口中,下半部分就是HttpWatch,打开方法如下:
输入“用户名”/“密码”进行登录:
上面是用假帐号登录的,此处只是为了说明HttpWatch都可以提供给我们什么。以下几个Tab窗口是需要注意的。
1)Headers:在做taobao工具时,发现很多页面是在不断的跳转,转个3~4次后才是真正要显示的页面,其使用的跳转方式就是在Header中指定了Location。
跳转的一下例子(这个是在成功登录mail.163.com过程的一次跳转)
2)Cookies:为了保持用户的登录状态,Cookie是不能少的物件。在写工具时,一定要保证将所有的Cookie保存起来,每次进行提交动作时,带着这些Cookie,就可以保持自己在服务器中的登录状态了。
此处需要特别注意的是HttpOnly的Cookie,此类Cookie是不能通过Webbrowser.Cookie对象来取得的,需要做些手脚才可以得到。
3)Query String:就是Url问题后边的内容,从服务器角度来说,就是doGet时传入的参数列表。
4)POST Data:是指Document.Form中提交的内容,从服务器角度来说,就是doPost时传入的参数列表。
5)服务器在响应了请求后,返回的内容。
6)Stream:相对比较原始的数据形状,“发送”/“返回”过程中的Stream内容。这个数据流经常是被压缩过的(gzip),看起来并不直观,内容主要是前几个窗口中所显示的内容。
?
有了这个工具,我们就可以无微不至的监视浏览器的一举一动了。自己写工具来自动完成的事情,其实就是在模仿浏览器的一些操作。