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

源代码下载: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/w184514379或http://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/w184514379或http://blog.csdn.net/lin379184514。
<br>
特别声明:本作品仅做研究交流用,仅为大家提供一点思路,可任意修改和传播,不追究版权亦不承担任何责任,不 回答提问,不再更新。
2009.12.24

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

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

  1. qq农场,数据抓包分析,实现源码,图片讲解

    一下是分析制作过程: 1.首先登录农场,(建议从空间登录). 2.打开抓包工具(我用的WSockExpert_Cn.exe),选进程iexplorer.exe,点打开,开始监视,如下图 (注:我用的i ...

  2. QQ强制聊天/加好友/临时会话接口跳转单页源码

    QQ强制聊天/加好友/临时会话接口跳转单页源码.实现以下功能:1.跳转QQ聊天界面:支持已开启临时会话的QQ用户进行聊天.2.跳转加好友界面:解决了QQ设置不允许被搜索后无法加好友的问题.3.WPA临 ...

  3. 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.0,增加网盘和远程磁盘功能(源码)...

    尽力2~3周发布一个版本,我这次也没有失言.这段时间内,我仿照QQ的微云功能,在GG中增加了网盘的功能,而且,我还自创了一个QQ没有的新的功能:远程磁盘.正如远程桌面一样,远程磁盘允许我们像访问本地磁 ...

  4. 【C#+SQL Server】实现模仿QQ的交友软件 一:系统简介、功能展示与数据库设计(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 其余几个部分文章链接如下 [C#+SQL Server]实现模仿QQ的交友软件 二:登录窗体设计讲解(附源码和资源) [C#+SQL Server] ...

  5. 类似QQ聊天软件也能用Java实现啦!(多人聊天原理附源码)

    多人聊天室原理图 源码 工具类: 该类用于关闭各种流. public class CloseUtil {public static void CloseAll(Closeable... closeab ...

  6. linux 抓包分析qq号,linux下抓包号召--tcpdump的利用.

    linux下抓包号召--tcpdump的利用. (2011-07-24 02:13:00) 标签: 杂谈 例:tcpdump host 172.16.29.40 and port 4600 -X -s ...

  7. qq农场js外挂详细制作(转帖)

    qq农场js外挂详细制作(提供源码.有注释.有抓包数据分析.不再更新 http://blog.csdn.net/lin379184514/archive/2009/12/10/4979622.aspx ...

  8. QQ农场外挂源码-VB源代码

    Option Explicit '|------------------------------------------------- '| '| 程序:QQ农场辅助 [2012/02/04] '| ...

  9. qq好友列表获取导出,利用QQ协议实现好友数据备份,包含:qq好友、QQ分组、QQ群、qq群成员【附code源码】

    qq好友列表获取导出,利用QQ协议实现qq好友数据备份,包含:qq好友.QQ分组.QQ群.qq群成员. 我们是在浏览器中的操作,接下来看看数据到底怎么获取的,我们通过Fiddler的查找功能,就可以查 ...

最新文章

  1. python_socket
  2. 用python定义一个员工类_Python:定义一个只有整数定义的类
  3. Delphi与c++ 数据类型对照表(从万一的博客园摘录)
  4. PyQt5 笔记3 -- 信号与槽
  5. linux系统crontab怎么用,Linux系统crontab使用手册
  6. [LeetCode]238.Product of Array Except Self
  7. 【Kafka】Kafka幂等性原理及实现剖析
  8. 深度学习之目标检测 第3章 传统目标检测方法基本流程
  9. 伺服驱动器开发案例,迈信EP100
  10. WebSSH2和docker化
  11. 为什么局域网需要https加密?如何选择内网SSL证书?
  12. 数据的预处理——平滑处理
  13. csgo显示服务器ip,csgo躲猫猫服务器ip地址 躲猫猫服务器2016
  14. 正则限定开头和取反 (否)
  15. 燕山大学软件测试,工程技术研究期刊版面费_软件测试期刊_燕山大学学报版面费...
  16. 1、AUTOSAR简介
  17. 为什么游戏流畅需要60帧,而电影流畅只需要24帧?
  18. 数据驱动「付费转化」的3个思路
  19. Go MD5加密解密用法
  20. java.lang.ClassNotFoundException:teat1问题和CentOS 8 jdk安装

热门文章

  1. 微信小程序webview中的h5,安卓系统无法唤起相机相册
  2. 零基础学通C语言,福利来啦!!!!zfhl.ke.qq.com
  3. struts2的国际化实例:中英文怎么转换
  4. c#画平行线和垂线的代码
  5. 基于星云链的智能合约与Dapp(四)——编写并运行智能合约
  6. gitHub 25.6k star 购票助手 testerSunshine/12306 安装教程(windows)
  7. Java实现下载模板文件
  8. win10如何加快开机速度【系统天地】
  9. 跨系统/文件系统操作后的U盘容量/识别问题对策
  10. 抑郁症的表现和缓解方法