去年有个国产哥们做了个动画,题目叫《李献计历险记》,其中有一句话叫都Tm别逼我动手相当震撼,本文的题目就来源与此。
中午没事儿上上bbs,Mummy又发信了,最近站庆活动很多,不过有技术含量的没有几个,比如:

这不是明摆着逼我么…一个NKbbs这么多精华区,每个精华区又若干小目录,小目录又若干小小目录。我翻了几个精华区没翻到,不过找到了第一个幸运的人儿的帖子,赶紧看看是什么样的奖励:

这就永久帐号了,真BUG,好吧,我承认我运气没有他好,不过我是有技术的人儿阿,让这种没有技术含量的活在伟大的wget/grep面前颤抖吧!
第一步:模拟登录BBS
nkbbs非常bug,游客权限木有小鸡鸡,不能访问大部分的版面/精华区,所以要做的第一件事就是模拟登录。(所谓模拟就是没有真的登录,要模拟浏览器中点击登录发生的事情)模拟登录主要方式基本就是向某个登录的Url POST你的用户名和密码,目的就是要获得这个站点的Cookie。
例如:

当你点击登录按钮后,浏览器就会向服务器发送数据,然后得到Cookie,在下一次的Url请求中,位于Header的Cookie就会用来判断你的登录情况。
通过查看源代码发现这俩区域分别叫id和pw
“
<<span class="start-tag">input</span><span class="attribute-name"> class</span>=<span class="attribute-value">"FormText" </span><span class="attribute-name">type</span>=<span class="attribute-value">"password" </span><span class="attribute-name">maxLength</span>=<span class="attribute-value">"8" </span><span class="attribute-name">size</span>=<span class="attribute-value">"7" </span><span class="attribute-name">value </span><span class="attribute-name">name</span>=<span class="attribute-value">"pw"</span>>
<<span class="start-tag">input</span><span class="attribute-name"> class</span>=<span class="attribute-value">"btn" </span><span class="attribute-name">style</span>=<span class="attribute-value">"width: 43; height: 20" </span><span class="attribute-name">type</span>=<span class="attribute-value">"submit" </span><span class="attribute-name">value</span>=<span class="attribute-value">"登录" </span><span class="attribute-name">name</span>=<span class="attribute-value">"Submit"</span>>
“
并在前面找到了需要post到的url:
<<span class="start-tag">FORM</span><span class="attribute-name"> name</span>=<span class="attribute-value">"bbslogin" </span><span class="attribute-name">action</span>=<span class="attribute-value">"cgi-bin/bbs/bbslogin" </span><span class="attribute-name">method</span>=<span class="attribute-value">"post"</span>><br />所以写做<br />
wget –post-data=’id=jp&password=*******’ http://nkbbs.org/cgi-bin/bbs/bbslogin
呵呵,这样就获得了一个包含Cookie的文件,关键内容为:
<script>document.cookie=’utmpnum=123′</script>
<script>document.cookie=’utmpkey=8888888′</script>
<script>document.cookie=’utmpuserid=jp’</script>
也就是说这个页面告诉浏览器把这三个值存成Cookie。
备注:NKBBS比较个性,Cookie是这样给出的,其他的站点可不一定,请自行调整获取Cookie 的方案。
如果你是Firefox用户,也可以使用登录的方式获取Cookie,页面信息->查看Cookie:

第二步:获取精华区内容
因为现在只知道奖励可能没有除写有“奖励”外的任何特征,所以,需要下载整个精华区的内容然后grep之。
这个比较简单,wget可以恐怖的递归下载整站,所以命令行:
wget –header=’Cookie: utmpuserid=jp;utmpkey=1234567;utmpnum=92;currhost=nkbbs.org;’ -r -np -nv -O file http://nkbbs.org/cgi-bin/bbs/bbs0an?path=/groups
这个过程比较长,而且让我见识了精华区的强大:
第三步
1.enconv
2.grep之