前一段时间,去北京参加一个活动~活动中一个学长讲到了他利用无聊时间写了点无聊的东西,这东西为我们这次活动要做的工作还能帮上一些忙……于是,我也在想,其实我的无聊时间还真不少……so~应该开动起来,实现一些想法,为自己要做的事情提供一些便利soso……
于是想到需求-------应该是一个基于人人网的群发群踩,以便于向我的好友们发布一些信息,甚至可以在年节假日的时候,去所有好友主页踩踩,留个祝福语什么的balabala,当然了,如果不想太骚扰好友的话,站内信的功能也是必须的。。。。。。
然后就开动……c#写起来比较容易, 电脑里只有4.0平台,于是就没得选了……
整个程序的流程,非常的简单~无非就是模拟正常的使用,然后再我们需要的地方加上适当的循环。
登陆--》爬到好友的ID--》跑到好友的主页--》留言 或者
登陆--》爬到好友的ID--》站内信
流程应该没有太大的异议,那么既然是模拟正常的使用模式,一切就变得清晰了……
我的第一步:抓个包~由于对于网络的东西真的知道不多~so~不确定“抓包”这个词用的正确与否……但是确实是这样的一个动作,分析出,当我们登陆的时候,我们向谁,用什么方式,发送了什么参数……
HttpWatch一个很NB的工具~可能满足我的需求~however,必须的专业版……要不然……谁想试试……哈哈
那个是基于IE,有人说基于Firefox的firebug也是很NB的~那么chrome呢?平时用chrome用的比较多,Firefox基本不会用……
貌似跑题了~
c#提供我想使用的功能 namespace 是如下的几个……
using System.Net;
using System.Web;
HttpWebRequest与HttpWebRespone~配合起来使用~虽然相对比较底层,但是用法比较灵活,简单,关键是满足我们的需求就好~所以整个无聊程式的设计理念中有很重要的一条就是快速~因为毕竟大家的无聊时间不多。
哦对了~在登录之后我还需要保存一下cookie……
封装到要死 CookieContainer MyCookie = new CookieContainer();
等待着登陆成功吧……关于如何判断是否登陆成功,我的方法是检测登录前后抓到的html的<title>*</title>的变化。
接下来是要想办法爬到好友的ID……我的处理办法是在http://friend.renren.com/myfriendlistx.do#item_5这个网址中~而且他的下一个扩展功能是可以导出好友的联系方式……getHtml后,利用正则分析一下~得到好友ID……
这里想插嘴一句~因为程序写的比较匆忙和潦草,所以就没有太多的考虑……直接把还有的ID存储在了一个List<String>中~而且每次使用都要进行一下好友ID的检索,其实可以导出存储在本地,但是个人觉得效率没有什么明显的提高
最后就是循环的踩每一个好友的主页~由于前面是一个非常傻瓜式的爬到friendID, 没有任何的处理和建立索引目录,只是简简单单的把他存到了一个“数组”中,所以这个加入了一个开始点和浏览人数的设置
关于留言的实现……下次再写……
哦了~站内信的实现遇到了一些问题~可能人人网已经做了一些处理~在POST的包中 一个参数是biz~我试验了几次,还真是随机了……估计是验证类的,要实现站内信的群发,要下一些功夫了……