qq农场,不开通牧场也能给好友添加牧草(数据抓包分析,实现源码,图片讲解)

(图片不能另存为保存,用属性看链接,然后下载可以。)

源代码下载:http://download.csdn.net/source/1930901

 

一下是分析制作过程:

 

1.首先登录农场,(建议从空间登录)。

2.打开抓包工具(我用的WSockExpert_Cn.exe),选进程iexplorer.exe,点打开,开始监视,如下图

(注:我用的ie8,进程较多,如不确定可以挨个试一下,ie6的话只有一个进程,没这么麻烦)

3.找到要赠送的好友,赠送牧草。然后返回抓包工具查看。如下图

(抓包分析的话当然要先找个开通了牧场的才能分析)

 

 

数据如下

 

准备工作就这么多。下面是分析。

 

 

发送数据如下

 

(发送的数据本身有些是没用的,可省,比如主人编号和主人昵称)

下面是实现

1、第一种办法,利用html的表单。

 

 

2.第二种方法,利用js。

<script type="text/javascript">
/*
作者:王安林。QQ:379184514。邮箱:w18514379@126.com。博客:http://blog.csdn.net/w184514379http://blog.csdn.net/lin379184514
特别声明:本作品 仅做研究交流用,仅为大家提供一点思路,可任意修改和传播,不追究版权亦不承担任何责任,不回答提问,不再更 新。
2009.12.24
*/
</script>
<script type="text/javascript" src="md5.js"></script>
<script type="text/javascript">
//farmKey计算
  function getkey()
  {
    var c = new Date();
    var farmTime = Math.floor(c.getTime() / 1000);

        var key = "fs#$hsJ!Fa*AF!-0aPS";
        var farmKey = hex_md5(farmTime + key.substr(parseInt (farmTime) % 10, 19));
        key = "&farmTime=" + farmTime + "&farmKey=" + farmKey;
    //alert(key);
    return key;
  };

//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  POST 发数据 end XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//
  function createXMLHttpRequest()
  {
    if (window.XMLHttpRequest) {
      XMLHttpR = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      try {
        XMLHttpR = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(e) {
        try {
          XMLHttpR = new ActiveXObject ("Microsoft.XMLHTTP");
        } catch(e) {}
      }
    }
  }

  function sendRequest(method , url, data, callback)
  {
    createXMLHttpRequest();
    XMLHttpR.open(method=="p"?"POST":"GET", url, false);//method等于"p"为post方法,其他为get方法
    XMLHttpR.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
    XMLHttpR.onreadystatechange =eval(callback+"processResponse");//通过eval创建一列处理函数
    XMLHttpR.send(data);
  }
 
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  POST 发数据 end XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX// 

//00000000000000000000000000000000000000000000 赠送牧草 start 000000000000000000000000000000000000000000000000000000000000000//
  function feedfoodprocessResponse()
  {
    if (XMLHttpR.readyState == 4 && XMLHttpR.status == 200)
    {
       txtOutput.value =XMLHttpR.responseText;//服务返回值,送到文本域 显示
    }
  }
function getfeedfood(foodnum,frienduId)
  {
    var url = "http://mc.qzone.qq.com/cgi-bin/cgi_feed_food";
    var data ="foodnum="+foodnum+"&uId="+frienduId+"&type=0"+ getkey();
    sendRequest("p",url, data,"feedfood");
  }
//00000000000000000000000000000000000000000000 赠送牧草 end 000000000000000000000000000000000000000000000000000000000000000//

 

 
//zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 获取个人信息 start zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz//
  function userinfoprocessResponse() //通过eval函数创建的。即eval("userinfo"+"processResponse/(unm/)");
  {
    if (XMLHttpR.readyState == 4 && XMLHttpR.status == 200)
    {
       txtOutput.value =XMLHttpR.responseText;
       transUserInfo (XMLHttpR.responseText);
    }
  }

  function getUserInfo()
  {
    var url = "http://happyfarm.qzone.qq.com/api.php?mod=user&act=run";
    var data = getkey();
    sendRequest("p",url, data,"userinfo");
  }

  function transUserInfo(myString)
  {
    var userinfo = eval ('(' + myString + ')');   //用字符串myString创建JSON对象userinfo。
    //创建表格,利用innerHTML,注意,table的innerHTML属性是只读的,所以不能直接操作table的innerHTML,这里 操作的是DIV的innerHTML。
    var str='<TR align=middle bgColor="#ffff66"><TD>'+userinfo.user.uId+'</TD><TD>'+userinfo.user.yellowlevel+' </TD><TD>'+userinfo.user.exp+'</TD><TD>'+userinfo.user.money+'</TD><T D>'+getLevel(userinfo.user.exp)[0]+'</TD><TD>'+((getLevel(userinfo.user.exp)[0]+1)*200 -getLevel(userinfo.user.exp)[1])+"//"+(getLevel(userinfo.user.exp)[0]+1) *200+'</TD></TR>';
    document.getElementById ('userinfoDiv').innerHTML='<TABLE border=1><TBODY id=userinfoTab><TR align=middle><TH>UID</TH><TH>黄钻等级</TH><TH>经验 </TH><TH>金币</TH><TH>等级</TH><TH>升级 </TH></TR>'  + str + '</TBODY></TABLE>';
   }
//zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 获取个人信息 end zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz//


//*************************************************** 等级计算 start *****************************************************************//
//9级以上的升级所需经验不对。 具体计算方法不清楚。等级是都对的。
function getLevel(experience){
    var levelArray = new Array(2);
    levelArray[0] = 0;
    levelArray[1] = 0;
    for (var i = 1; i < 100; i++) {
        levelArray[0] += 200 + 200 * (i - 1);
        if (levelArray[0] > experience) {
            //取得升级所需经验
            levelArray[1] = levelArray[0] - experience;
            //取得当前级别
            levelArray[0] = i - 1;
            break;
        }
    }
    return levelArray;
};

//****************************************************** 等级计算 end ***************************************************************//


//----------------------------好友列表 start-------------------------------------------//
  function FriendListprocessResponse()
  {
    if (XMLHttpR.readyState == 4 && XMLHttpR.status == 200)
    {
      txtOutput.value =XMLHttpR.responseText;
      transFriend(XMLHttpR.responseText);
    }
  }

  function getFriendList()
  {
    var url = "http://happyfarm.qzone.qq.com/api.php? mod=friend";
    var data = getkey();
    sendRequest ("p",url, data,"FriendList");
  }

  function transFriend(myString)
  {

    var friendinfo = new Array();
    friendinfo = eval('(' + myString + ')');
    var friendTitle = '<TR align=middle><TH>序号 </TH><TH>ID</TH><TH>QQ</TH><TH>昵称</TH><TH>头像 </TH><TH>黄钻</TH><TH>经验</TH><TH>金币</TH><TH>等级 </TH><TH>升级</TH><TH>狗粮</TH><TH>选中</TH></TR>';
    //alert(friendinfo[0].userId);
   
    var str="";
    for (i = 0; i < friendinfo.length; i++)
    {
      //friendinfo[0].userId;
      str += '<TR align=middle><TD>' + i + '</TD><TD>' + friendinfo[i].userId + '</TD><TD>' + friendinfo[i].uin + '</TD><TD>' + friendinfo[i].userName+ '</TD><TD><IMG height=40  width=40 src=' + friendinfo[i].headPic + '></TD></TD><TD>' + friendinfo [i].yellowlevel + '</TD><TD>' + friendinfo[i].exp + '</TD><TD>' + friendinfo [i].money + '</TD><TD>'+ getLevel(friendinfo[i].exp)[0] +'</TD><TD>'+ ((getLevel(friendinfo[i].exp)[0]+1)*200-getLevel(friendinfo[i].exp)[1]*1)+'//'+(getLevel(friendinfo [i].exp)[0]+1)*200+'</TD><TD>?</TD><TD><input type="checkbox" id="friendinfo'+ i +'" checked></TD></TR>';
    }
    var userinfo='<TR align=middle bgColor="#ffff66"><TD>' + i + '</TD><TD>' + document.getElementById("userinfoTab").rows[1].cells[0].innerText + '</TD><TD>NULL</TD><TD>主人</TD><TD>NULL</TD><TD>' +  document.getElementById("userinfoTab").rows[1].cells[1].innerText + '</TD><TD>' +  document.getElementById("userinfoTab").rows[1].cells[2].innerText + '</TD><TD>' +  document.getElementById("userinfoTab").rows[1].cells[3].innerText + '</TD><TD>' +  document.getElementById("userinfoTab").rows[1].cells[4].innerText + '</TD><TD>' +  document.getElementById("userinfoTab").rows[1].cells[5].innerText + '</TD><TD>? </TD><TD><input type="checkbox" id="friendinfo'+ i +'" checked></TD></TR>';
    document.getElementById ('friendListDiv').innerHTML = '<TABLE border=1><TBODY id=friendTab>' + friendTitle + str +userinfo+ '</TBODY></TABLE>';
  }


//-----------------------------好友列表 end---------------------------------------------- -//
 
</script>
 
 

<a target="_blank" tabindex="8" href="http://qzone.qq.com" id="label_forget_pwd">登录</a>
(必须首先通过空间登录农场才可以使用此外挂!)
<br>
<br>
 
 
<input type="button" value="获取个人信息" onClick="getUserInfo()">
<div id="userinfoDiv">
<TABLE border=1 >
<TBODY id=userinfoTab>
</TBODY>
</TABLE>
</div>
<br>
 


<input type="button" value="获取好友列表" onClick="getFriendList()">
(需要“ 获取个人信息”)
<div id="friendListDiv">
  <TABLE border=1>
    <TBODY id=friendTab>
    </TBODY>
  </TABLE>
</div>


<br><br><br><br>
赠送牧草数量<input id="foodnum" value=""/><br>
好友代号<input id="frienduId" value=""/>
(注:好友代号并不是 QQ号,是通过“获取个人信息”和"获取好友列表" 获得的uid,一般前3位跟qq号相同)
<br>
<input type="button" value="送牧草" onClick='getfeedfood (foodnum.value,frienduId.value)'>
<br>

 


<br><br>
服务器返回的原始数据<br>
<textarea id="txtOutput" style="width:850px;border:1px solid #c5e2f2;overflow:visible;" rows="15" ></textarea>
<input class="but" id="res" type="button" value="UTF-8 还原 中文 ↓" οnclick="txtresult.value=unescape(txtOutput.value.replace(///u/g,'%u'));" />
<input class="but" id="conv" type="button" value="中文 转换 UTF-8 ↑" οnclick='txtOutput.value=txtresult.value.replace(/[^/u0000-/u00FF]/g,function($0){return escape ($0).replace(/(%u)(/w{4})/gi,">
<textarea id="txtresult" style="width:850px;border:1px solid #c5e2f2;overflow:visible;" rows="15"></textarea>

 

<br><br><br>
为防止时间太久需要重新登录,可没隔一段时间调用刷新农场
<br>
<input type="button" value="刷新农场" onClick='document.getElementById ("happyfarm").src = "

http://happyfarm.qzone.qq.com/";'>
<iframe id="happyfarm" width="100%" height="670" frameborder="0" application="yes" scrolling="no" src='http://happyfarm.qzone.qq.com'></iframe>


作者:王安林。QQ:379184514。邮箱:w18514379@126.com。 博客:http://blog.csdn.net/w184514379http://blog.csdn.net/lin379184514
<br>
特别声明:本作品仅做研究交流用,仅为大家提供一点思路,可任意修改和传播,不追究版权亦不承担任何责任,不 回答提问,不再更新。
2009.12.24

 

 

 

 

结束,详细资料请下载图片,用rar解压。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值