抠腚爱揉曼 Coding Iron Man

22Aug/108

做了件有趣的事情

有个好友在国内某网站当编辑,他的悲催主管要求他们每一个人在站内要有3个拥有500好友的马甲用来干各种事情……好友便求助于我帮忙点掉一些加好友申请,但本着技术是第一生产力的原则,于是我尝试着分析了下某网站申请加好友的流程并调戏了一把。以前也没有尝试过做类似的事情,所以在这里随便记录一下,具体内容就不说了……不然应该会被看出来是哪个网站……

申请加好友的操作其实很简单,输入一段话和验证码按确定就好了。要模拟这个操作所需要解决的几个问题就是:

  1. 获取到请求地址和参数
  2. 附带用户登录信息发送请求
  3. 绕过验证码

第一点,通过chrome开发者工具或者firebug都可以,抓取浏览器和服务器之间的请求和响应就可以获取到请求地址和参数。稍微分析下参数之后就找出了需要的信息……
第二点,其实只需要在请求的时候把cookie信息一并丢过去就好了,sessionId也是放在cookie里的。通过在chrome的js console里输入document.cookie获取到cookie内容……
第三点,好吧这个其实应该是最麻烦的部分……我从来没关注过这方面的信息,验证码原理什么的OCR什么的完全不懂啊。但是在分析了某网站的验证码机制后发现相当悲催……它在请求验证码的时候把验证码图片以及一个和图片关联的惟一ID传送给浏览器form,然后通过用户输入的验证码和那个惟一ID是否匹配来验证(以上都是我猜的~)。杯具的地方在于这个验证码惟一ID在被验证一次后并没有即时失效,在相当相当相当长的一段时间内,通过那个惟一ID和验证码发起请求都有效(以上也是我猜的~都不知道是不是有失效策略……),于是于是于是~万事俱备,只欠编码~

首先我手动操作发了一个加好友申请,抓取到请求和响应后把请求地址,用户id,验证码以及验证码惟一ID分离出来,把好友给我的活跃用户表格正则表达式提取为一堆数字ID初始化为一个集合。接着要做的事就是拼请求,开连接,丢cookie信息,发起请求获取响应,然后要是乐意的话分析下response的信息,对成功失败以及重复发送申请进行统计……在简单实验了几次成功之后,我就很欢乐的给他的三个用户总过发了3000多个好友申请……就不知道通过率有多少了……

BTW: 程序是用Scala写的,其实也没用什么Scala的特性,主要是拼请求地址之类有一大堆乱七八糟符号的字符串的时候用原始字符串各种好用不用转义……

Posted by Anson

Filed under: 抠腚 Leave a comment
Comments (8) Trackbacks (0)
  1. 好吧,其实重点只是那个站的验证码非一次性设计悲催了吧~

  2. 飞飞威武~~ 哥懂你说的谁~

  3. 我当时就在第一现场-..-


Leave a comment

(required)

No trackbacks yet.