[转]抢沙发”程序交流
网上的一些资料。
技术路线:
(1) 操作系统:Microsoft Windows Server 2003企业版
(2) 数据库管理系统:Microsoft sql Server 2005
(3) 程序设计工具:Visual Studio.Net 2005 (C#语言)
而Visual Studio.Net 2005 (C#语言),也属于那种图形控件拖拉,比较容易上手的编程工具.
首先,大体分析一下要实现"抢沙发"这一目的所要解决的问题.(个人观点,应该还有其他解决方案实现)
1\自动登陆
一\自动登陆.
对于固定的一个或者几个论坛,这个步骤的实现就比较简单了.
下面就以天涯为例,简要介绍一下自动登陆的实现流程.
首先就是把天涯的网址(www.tianya.cn)传递给一个WEBBROWSER控件.从而获得这个网页的HTML源码(点IE浏览器中的查看->源文件也可以看到)
HTML源码截选如下:
引用"
<!--社区弹出广告end-->
<div class="logintab">
<form method="post" id="login" name="login">
<ul>
<li>用户
<input id=text1 name=vwriter size=12 maxlength="16"
onMouseOut="this.style.backgroundColor='#ffffff'"
onmouseover="this.style.backgroundColor = '#E5F0FF'" class=inp>
</li>
<li>密码 <input id=password1 name=vpassword size="12"
maxlength="18" type=password onMouseOut="this.style.backgroundColor='#ffffff'"
onmouseover="this.style.backgroundColor = '#E5F0FF'" class=inp></li>
<li>
<input id="button1" name="button1" type="button"
onmouseout="this.style.backgroundColor='#ffffff'"
onmouseover="this.style.backgroundColor='#E5F0FF'" class="inp"
value="登录社区" onclick="javascript :check_data();" />
"引用完毕
HTML的源码(http://www.atongnet.cn/search.aspx?where=title&keyword=%D4%B4%C2%EB&cid=0&sdate=2007-09-13&edate=2008-09-14&clientDate=Sat%2C+13+Sep+2008+11%3A07%3A07+GMT)看起来有点晕,感觉没有什么头绪.
但只要大家稍微了解以下它的编码规则问题就迎刃而解了.其实,打个比方来说,就象咱们平时包装礼物时,大盒子套着小盒子一样,一层一层嵌套的,学过计算机的可能知道他的学名,叫DOM树.好了废话不多说,直接进入正题.
登陆网站我们无非就做了以下2件事情,
1、输入用户名和密码。
2、点登陆按钮。
就OK了。
那么如何来自动把自己的用户名和密码发给网站的服务器呢?
下面还是让我们把目光转回HTML代码的分析上来,请大家注意这里:
<li>用户
<input id=text1 name=vwriter size=12 maxlength="16"
onMouseOut="this.style.backgroundColor='#ffffff'"
onmouseover="this.style.backgroundColor = '#E5F0FF'" class=inp></li>
上面的源码提示我们,在天涯主页中,有一个ID为text1的输入框,而它的VALUE值就是提交给服务器的用户名.(顺便鄙视一下,天涯论坛的程序员,这个ID名起的也太没水准了吧,呵呵)
在这个FORM中,我们只要把用户名和密码输入框的VALUE值设好,然后激发按钮的点击事件就可以了.
实现代码如下:
1\获得用户名\密码以及登陆按钮:
HtmlElement btnSubmit = wbMain.Document.All["button1"];
HtmlElement tbUserid = wbMain.Document.All["text1"];
HtmlElement tbPasswd = wbMain.Document.All["password1"];
(上面已经说过,对于已知网站这步非常容易实现.对于想抢未知网站抢沙发有兴趣的同志们可以和我联系,这个比较复杂,需要有一个识别算法,这里就不多说了)
2\把准备好的用户名和密码传递给控件
tbUserid.SetAttribute("value", "samm2886");
tbPasswd.SetAttribute("value", "******");
btnSubmit.InvokeMember("click");
=========================================================
道这里一个自动登陆天涯的小程序就已经圆满完成了,呵呵,初战告捷了吧.接下来就说一下如何来获得有可能抢到沙发帖子的连接了.
经常混天涯的同志们可能都知道,天涯有这样一个功能,"按论题提交日期排列"----就是它,给我们抢沙发带来了很大的便利.
和自动登陆一样,再重复如下一个过程.
1\把要打开页面的地址传递给程序(以天涯杂谈"按论题提交日期排列"为例,代码如下:
wbMain.Navigate("http://cache.tianya.cn/new/publicforum/articleslist.asp?strItem=free&Part=1&strSubItem=&strSubItem2=");
2\提取出页面中的有用连接:还是给出HTML的截选关键部分
引用:
</table>
<table width=640 border=0 cellspacing=0>
<tr>
<td width=20>
<font face=wingdings color=blue>K</font>
</td>
<td width=370><a href='http://cache.tianya.cn/publicforum/content/free/1/1153174.shtml'
target='_blank'>问责建设部 --建筑节能房开企业历史欠账4000亿,怎么还?-答:拆分建设部</a></td>
<td width=90><a href='/browse/Listwriter.asp?vwriter=非将' target=_blank>非将</a></td>
<td width=35 align=center class=tdfont>7</td>
<td width=35 align=center class=tdfont>2</td>
<td width=90 align=center class=tdfont>3-9 23:32</td>
</table>
看一下上面的HTML代码,大家就会发现以下信息:
1\回帖个数(这也是我们沙发党所最关系的:))(2)
2\连接地址href='http://cache.tianya.cn/publicforum/content/free/1/1153174.shtml'
(手动抢沙发一般都不注意这个信息,但自动抢没有它,就是比尔.盖次来,估计他也抢不上这个沙发)
3\文章标题
问责建设部 --建筑节能房开企业历史欠账4000亿,怎么还?- 答:拆分建设部
(呵呵,一般沙发党都是不看标题直接强的,哈哈,有没有它一样拉,哈哈)
4\就是文章的浏览个数(7)和提交时间了(用途不是很大)
做到这里基本就已经接近尾声了哈.....
接下来怎么做,答案很简单,一个字
"抢",哈哈.见到回复为0的帖子做为一个 抢沙发的机器人,你怎么能放过它.......
呵呵.
把提取出来的连接('http://cache.tianya.cn/publicforum/content/free/1/1153174.shtml'
)
传给WEBBROWS对象......OK了,一个崭新的,没有回复的帖子就展现在你的面前..............
然后就是开动你的脑筋...想几句好词拉,我可没"抢沙发专业人士"那么有才,能整那么多古诗,呵呵.就退了求其次了,下载一个中文的歌词库,每次在里面随机抽取一句歌词吧,嘎嘎,后面别忘了来一句"天涯万岁"哈哈,否则容易被封号的.
总结一下,其实就需要掌握一个东西 WEBBROWSER控件的应用.整个程序就是重复4次变可
第一次:
输入天涯网址.并获得并设置用户\密码输入框,然后激发登陆按钮的点击事件.完成自动登陆
第二次:
输入天涯杂谈"按论题提交日期排列"网址,并提取出回复为0网页的连接.
第3次:
输入第2次提取出来的网址,获得并设置回复输入框,然后激发"发表"按钮的点击事件.抢沙发完成.....
这沙发抢的是 没日没夜,只要你连上因特网,IE 都不用打开,(经过测试,系统资源不大,如果机器不行,可以用多线承,或者干脆发到平时利用率不是很高的服务器上去) 千千万万个沙发就收入囊中了.