QQ农场是基于http协议的,因此只要通过工具软件截取http数据包,从而进一步进行分析提交和接收到的数据含义,然后再模拟一个flash client和服务器打交道即可。

为了实现以上目标,下载安装截获tcp/ip数据包的工具软件ethereal ,安装好以后,登陆QQ进 入农场 ,然后开启 ethereal 软件开始截获数据包,然后在农场里点刷新好友列表按钮,然后去ethereal里看看截获到的数据包,

发现读取好友列表的url地址 是:

http://happyfarm.qzone.qq.com/api.php?mod=friend

需 要的参数有:login_time 、skey、uin 三个

知道这个地址以后,可以用apache httpclient模拟一个flash client,具体代码如下:

String login_time = ConfigProperties.getProperty("login_time");
   String skey = ConfigProperties.getProperty("skey");
   String _s_ = ConfigProperties.getProperty("_s_");
   String uin = ConfigProperties.getProperty("uin");

HttpClient hc = new HttpClient();
   // 创建GET方法的实例
   GetMethod getMethod = new GetMethod(url);
  
   getMethod.addRequestHeader("Accept", "*/*");
   getMethod.addRequestHeader(
          "User-Agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; 360SE)");
   getMethod.addRequestHeader("Accept-Encoding", "gzip, deflate");
   getMethod.addRequestHeader("Accept-Language", "zh-CN");
   getMethod.addRequestHeader("Connection", "Keep-Alive");
   getMethod.addRequestHeader("Pragma", "no-cache");

hc.getState().clearCookies();
  
   String cookies = "1" + "; _s_=" + _s_ + "; uin=" + uin + "; skey="+ skey + "; login_time=" + login_time;

hc.getState().addCookie(
          new Cookie("happyfarm.qzone.qq.com", "jump", cookies, "/",
          new Date(2011, 12, 8), false));

// 执行getMethod
   int statusCode = hc.executeMethod(getMethod);
  
   String result = getMethod.getResponseBodyAsString();

按照这种方法,可以找到获取某个好友农场信息的url 地址是:

http://nc.qzone.qq.com/cgi-bin/cgi_farm_index?mod=user&act=run&ownerId =

偷 某个好友某块或多块地的url地址是:

http://nc.qzone.qq.com/cgi-bin/cgi_farm_steal?mod=farmlandstatus&act=scrounge

ok, 这些都搞定了,另外偷菜的 url地址需要提交一个参数farmKey ,这个生成方法有点难度,具体方法为:

int curTime = (int) (System.currentTimeMillis() / 1000L);

String s = "sdoit78sdopig7w34057";
   int yushu = curTime % 10;
   s = s.substring(yushu, 20);
   String farmKey = com.sourceware.util.StringUtil.getMD5(curTime + s);

另外需 要分析一下服务器返回的数据包格式,目前看到的都是 json格式,

比如得到好友列表的数据 为:

[{"userId":1905432,"userName":"/u6c38/u8fdc/u7684/u9ed1",

"headPic":"http:qlogo2.store.qq.com//qzonelogo//1265877//1//1242884728",

"yellowlevel":0,"yellowstatus":0,"exp":7776,"money":38961,"pf":0},

{"userId":159805,"userName":"/u8f7b/u63cf/u6de1/u5199",

"headPic":"http:imgcache.qq.com//qzone_v4//client//userinfo_icon//5001.gif",

"yellowlevel":0,"yellowstatus":0,"exp":20332,"money":22665,"pf":0},

{"userId":65178,"userName":"Air-F","headPic  后面省略...

如果是用java开发的话可以用json-lib包来解析。

另外根据返回的错误提示语 整理如下:

如果返回{"code":0,"direction":"这块地没东西可摘 的!","farmlandIndex":2,"fkey":"8297832f9f305bd1ad2d083c35148d815069b5c61da3382c0119b74f65b8e42e6d597313b9101acb","poptype":1}
应 该是这块地已经成熟,且被人摘光了(成熟的地都有一个产量,剩余数,最小的剩余数《通过这个可以得到最多可以被偷几个》)。

如果 返回的是{"code":0,"direction":"获取农田信息失 败","fkey":"e3c2806e13df1092281157971b0f9466dcfbe7433a368f4d2398b0721398add7afc8c76f889555d5","poptype":0}
那 么应该是这块地还没成熟就去偷了;或者已经被主人收割了;或者这块地什么都没种;

如果返回的是: {"code":0,"direction":"做人不能贪得无 厌!","farmlandIndex":1,"fkey":"2848bb16cb28e1929822cb716b0e87292864ea9068ebe95b5d6d51580fb4b13718e3c2787af58294","poptype":1}, {"code":0,"direction":"做人不能贪得无厌!","farmlandIndex":2,"poptype":1}
 那说明 你已经偷过了还要去偷;

qq农场外挂编写分析-java相关推荐

  1. 如何用c#制作QQ农场外挂

    前一篇文章我大致写了一下如何制作QQ农场外挂,最近我的外挂运行了一段时间,觉得还行,所以拿出来给大家下载试用试用 大致功能有: 1.我的资料,查看我的等级,经验,金钱等信息 2.我的农场:可以查看我的 ...

  2. QQ农场外挂开发实践

    闲来无聊,国庆期间看别人在玩农场,我也开通了一下,发现钱不够,偷起来很麻烦,所以想写一个自动偷菜的程序,因此有了这篇文章: QQ农场是基于http协议的,因此只要通过工具软件截取http数据包,从而进 ...

  3. [原创]QQ农场外挂辅助程序-小萝莉偷菜机器人,提供下载。

    做了好几天,白天上班也做,晚上回家也做,终于算成功了,基本的功能都有了,自动偷菜,自动除草,杀虫, 还需要完善,现在又偷的东西,不显示名字的bug. 这个东东是做着玩的,学习研究,非商业性,所以暂时也 ...

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

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

  5. QQ农场外挂遇到了了问题,望高手给与指导

    项目是采用VS2008 写的,希望高手帮忙解决: 如何获取QQ农场的数据? 已经实现的: 1>已经可以登录到QQ空间. 2>成功获取了农场的COOKIE:login_time.uin.sk ...

  6. [原创]QQ农场外挂辅助制作一点心得体会1

    心得体会就是-腾讯真变态. 如果是9月前,可能我辅助做好了,因为9月后腾讯改了个别操作的地址,偷菜的地址就改了,加了2个id-fid.tid,操作也有变化,网上很多说是要先check一下,但是我怎么看 ...

  7. C#开发QQ农场外挂实践

    时间:10-04-17 大致功能有: 1.我的资料,查看我的等级,经验,金钱等信息 2.我的农场:可以查看我的农场信息,种了哪些作物,什么时候成熟 3.我的仓库,可以浏览仓库里的物品,并可以卖掉 4. ...

  8. 曾经花上数十小时编写过的QQ农场辅助精灵

    QQ农场辅助精灵DotNet(c#)版是2009年8月份自已编写的,开发工具是vs2005,语言c#,花了数十小时编写与调试,也算是检验编写辅助外挂类程序的能力. 编写基于http协议的辅助外挂类程序 ...

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

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

最新文章

  1. rocketmq 消息指定_RocketMq 实际案例–普通消息的发送
  2. 自学python需要多长时间-自学Python要学多久可以学会?
  3. C#操作SQL Server通用类
  4. Android开发把项目打包成apk
  5. 重庆邮电大学计算机学院院徽,Slide计算机学院-重庆邮电大学.PPT
  6. java清除输出内容_java – 从JSch中的命令输出中删除shell东西...
  7. GNU make manual 翻译(四十三)
  8. CEF3:https 请求返回状态码canceled
  9. Qt之C语言有符号数与无符号数运算
  10. (43)FPGA面试技能提升篇(Questa简介)
  11. tipask二次开发总结_二次开发自我总结
  12. ArcGIS Engine开发基础总结(一)
  13. Android系统中的广播(Broadcast)机制简要介绍和学习计划 .
  14. ICESat 数据介绍
  15. mac:装机软件汇总
  16. python取余数函数_python中两数相除取余数怎么运算
  17. [NLP]OpenNLP词性标注器的使用
  18. Toefl-Speaking
  19. 关于vue-video-plaer 出现 this.el_.vjs_getProperty is not a function at Flash.buff解决方法
  20. java 如何初始化数组_java中初始化数组的三种方式分别是什么

热门文章

  1. 为什么很少有单片机机构?培训班一般多少费用?
  2. 学Python好找工作吗?需要满足Python岗位哪些要求?
  3. java编程找出吸血鬼数字,Java 找到四位数的所有吸血鬼数字 基础代码实例
  4. (转)11gR2新特性:Heavy swapping observed on system in last 5 mins
  5. 动态规划问题(Dynamic Programming)
  6. Cocos Creator 基于 Spine 动画的 AVATAR 换装系统优化
  7. 波动率曲面(完整版)
  8. ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释
  9. Java实现 蓝桥杯 算法提高 矩阵翻转
  10. 1. STM32学习 STM32综述