首页 > 技术 > 搞定了Spam Comments的自动探测和删除

搞定了Spam Comments的自动探测和删除

最近工作比较忙,所以只能下了班搞搞这个东西。今天终于搞定了,然后看着数十个Spam Comment瞬间搞定还是很有成就感的。

这个问题的关键在两个问题上:第一,如何得到一个Spam Comment的列表;第二,如何删除它们。

先考虑第二个问题。其实不管Space的代码多复杂,最后对Blog的操作还是要经过HTTP传输的。截获HTTP传输数据的方案有很多,我用的是TamperData这个Firefox扩展。简单的找两个Comments删除一下,发现对应的HTTP请求是这样的:

POST http://ftofficer.spaces.live.com/parts/blog/script/BlogService.fpp?cnmn=Microsoft.Spaces.Web.Parts.BlogPart.FireAnt.BlogService.delete_items&ptid=0&a=&au=undefined HTTP/1.1
Host: ftofficer.spaces.live.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.7,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Connection: close
Content-Type: application/x-www-form-urlencoded
X-FPP-Command: 0
sc: [...]
Referer: [...]
Content-Length: 117
Cookie: [....]
Pragma: no-cache
Cache-Control: no-cache

cn=Microsoft.Spaces.Web.Parts.BlogPart.FireAnt.BlogService&mn=delete_items&d=[{1,%22cns!423B72634E2F6B7E!611%22}]&v2

其中最重要的东西就是红色标记的部分,前面Cookie是作为你已经登录到Live Space的证据;后面的一串字符串就是要删除的Comment的ID。所以我们需要的工作就是获取到这个ID,然后使用HTTP重放就可以了。最后我直接偷懒用了NetCat,写了一个Request的模板,用Perl替换一下其中的ID,用NC连上Live Space然后重放就是了。方法就是这样,如果要做成软件可能还比较麻烦一点,看看有空再搞,最近实在太忙。

然后回到第一个问题,我们需要获取到所有的Spam Comments的列表,这个问题不可避免的就要把Space爬一遍,枚举当中所有的Comments的内容,并一一判断。如果符合某种条件,就将其ID记录下来。不过要从头分析Space的页面结构并且枚举出ID和内容也是个很好大的工程,不如找找有没有现成的方案。经过一番Google,找到了Live Space Mover这个项目。这个项目当中包括了枚举Live Space当中所有的Comments的功能,功能不错。但是不足的是只能获取到的是Comments的内容,发送者这些信息,不包括对我来说最重要的ID,不过这不是什么大问题,Python的脚本在哪里放着,代码改改就行了。这段代码改过之后,花10分钟把Blog爬了一遍,成功生成列表,然后拿perl解析一下,调用一下nc,搞定。

方案是有了,有空整理一下,做一个点点鼠标就能搞定的东西,或者一个命令行搞定的东西。

再说再说,忙得很。有没有人自愿报名实践一下的?

你也许会喜欢:

标签: ,
  1. 振南 孙
    2008年1月25日01:15 | #1
    默默无闻到没有spam的飘过
  2. ace
    2008年1月25日01:15 | #2
    同飘~
  3. Justin Xie
    2008年1月26日01:15 | #3
    做出来给我用。。
     
    这不是spam,表ban了我
  4. 紫贝壳 wrote:
    2008年1月27日01:15 | #4
        smart真是够敬业….
  1. 本文目前尚无任何 trackbacks 和 pingbacks.