闲来无聊,国庆期间看别人在玩农场,我也开通了一下,发现钱不够,偷起来很麻烦,所以想写一个自动偷菜的程序,因此有了这篇文章:

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

为了实现以上目标,下载安装截获tcp/ip数据包的工具软件ethereal或Fiddler2,安装好以后,登陆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农场外挂开发实践相关推荐

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

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

  2. 关于QQ开心农场外挂 开发

    很久没更新博客了,今天就拿开发QQ开心农场外挂的一些问题来写篇短日志充个数. 关于登陆         在web上,QQ登陆的时候是将密码加密后再提交了,打开http://xiaoyou.qq.com ...

  3. qq农场外挂编写分析-java

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

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

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

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

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

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

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

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

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

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

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

  9. C#开发实战视频教程_基于多线程C#开发QQ农场

    基于多线程的C#版QQ农场(图形图像,文件和流,多线程,Web服务) 课程分类:.Net 适合人群:初级 课时数量:35课时 用到技术:文本编辑器的实现.图形图像编程.多线程编程.文件和流 涉及项目: ...

最新文章

  1. JS实现HTML标签转义及反转义
  2. 新西兰激光事故5年增加130% 官员警告危害航空安全
  3. 那些数学不好的程序员?最后都如何了(文末送书)
  4. boost::hana::count_if用法的测试程序
  5. 数据结构----------实现最小堆排序
  6. Python 面向对象(中)
  7. qc中的流程图怎么画_QC流程图参考
  8. LESS----CSS预处理语言
  9. linux resin 自动启动不了,linux下开机启动nginx+resin
  10. np.random.uniform,random,choice,newaxis
  11. 威纶通触摸屏上传错误_电气人都头疼的威纶通触摸屏常见问题详解,太管用啦...
  12. PythonーーJetBrains PyCharm安装
  13. 数理统计实(试)验—双因素方差分析(无交互作用)excel操作分析方差分析表怎么看?
  14. python基础练习题:查找首都【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  15. Hive-WARN: Establishing SSL connection without server‘s identity verification is not recommended. Ac
  16. PDF怎么删除不要的页面?免费删除PDF页面教程来了
  17. Docker架构部署及镜像制作,免费容器云体验
  18. dbo sysadmin和db_owner的区别
  19. 通用企业智能制造ERP源码 制造业通用ERP系统源码 工厂ERP源码C# web ASP.NET 源码
  20. 每日一问-ChapGPT-20230416-中医基础-经络

热门文章

  1. 考察思维的灵活性,僵化
  2. 并发编程之循环屏障CyclicBarrier
  3. linux ping -w 命令,Linux ping 命令
  4. C++标准库——STL
  5. 三大报再呼救市:A股估值到了崩溃边缘
  6. office2016 Excel 打开“宏”分三步
  7. 万字长文,带你入门异步编程
  8. Apache漏洞汇总:
  9. vue项目兼容IE浏览器,判断IE11以下,则提示浏览器版本过低,更新浏览器页面
  10. 安装步骤_Saber 2016 安装步骤