人人农场机器人 机器人 应用程序错误

您当前的位置: > 开心农场简易外挂的实现 ?r人人网开心农场2
新闻发布时间:2010-07-14 02:37:37
关键字:r人人网开心农场2
而好友列表文件,调用Robot的getFriends()方法就能够生成
  最近
农场非常火,同学用C#模拟鼠标点击操作做了一个小外挂,但是这样做有如下缺点:1、计算机不能做其他事情,2、必须开着浏览器,3、对所有好友点一遍的时间太慢,4、对于开发者来说技术含量低了点,呵呵 所以我尝试着改进这种实现,我的想法是:不用开启浏览器,直接运行一个应用程序,该程序将自己伪装成一个浏览器,与服务器连接,并发送浇水、除虫等命令这样,甚至可以使用多线程向服务器发送命令,无需等待服务器返回一个结果之后再发送下一条命令从而完全避开了上面几个缺点 这样做首先要做的是分析在执行每一个浇水(及其他)动作的时候,浏览器向服务器发送了什么请求,有哪些参数,每一个参数的含义是什么,还有服务器端的返回值及其意义分析完之后,就可以使用J
模拟浏览器与服务器建立连接并发送类似的请求(还有一点,在向服务器端发送浇水请求的时候,你需要知道好友的userId,所以首先需要从服务器获取当前用户的所有好友userId,然后对每一个userId分别进行各种动作) 代码如下:package com.hw; import j
.io.FileI utStream; import j
.io.IOExceptio import j
.io.PrintStream; import j
.io.PrintWriter; import j
.net.MalformedURLExceptio import j
.net.SocketTimeoutExceptio import j
.net.URL; import j
.net.URLCo ectio import j
.util.Iterator; import j
.util.Propertie import j
.util.Sca er; import j
.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * 人人网
农场机器人,能够自动获取好友列表,并对每一个好友的所有作物进行除草、除虫、浇水、摘菜等动作 * @author without me * */ public cla Robot { //三个配置文件 private static final String FARM_FILE = "f.properties"; //存储向服务器发送的两个参数 private static final String OWNER_FILE = "owner_robot.txt"; //存储好友userId列表 private static final String CON_FILE = "c.properties"; ///存储连接的Header信息 //请求服务器的URL private static final String urlStr = "http://xn.hf.fminutes.com/api.php?mod=farmlandsta tu act=#&farmKey=#&farmTime=#&inuId="; private static final String getFriendUrl = "http://xn.hf.fminutes.com/api.php?mod=friend&farm Key=#&farmTime=#&inuId="; //POST参数 private static final String postStr = "Referer=http://xn.cache.fminutes.com/images/v3_3/ module/Main.swf?v=5&Content-type=a lication/x-www- form-urlencoded&Content-length: 31&ownerId=# lace="; private static final String getFriPost = "Referer=http://xn.cache.fminutes.com/images/v3_3/ module/Main.swf?v=5&Content-type+a lication/x-www- form-urlencoded&Content-length=26&fv=1261051588&ref resh=true"; private static final int TIME_OUT = 4000; //超时时间4秒 private static final String IOE_PROPMT = "无法连接至服务器,请检查网络连接,或者服务器地址是否已更改"; //出现IOException时的提示信息 private static final String[] action = { "clearWeed", " raying", "water", "scrounge" }; private String[] owner; private Properties farmProp = new Properties(); private Properties co Prop = new Properties(); /** * 用3个配置文件对当前的Robot进行初始化, * 包括:从OWNER_FILE中读取所有好友信息,从FARM_FILE中读取向服务器发送的两个参数farmKey,farmTime * 从CON_FILE中读取连接的Header信息 * @throws IOException */ public Robot() throws IOException { Sca er scan = new Sca er(new FileI utStream(OWNER_FILE)); owner = new String[scan.nextInt()]; int index = 0; scan.nextLine(); while (scan.hasNext()) { owner[index++] = scan.nextLine(); } scan.close(); farmProp.load(new FileI utStream(FARM_FILE)); co Prop.load(new FileI utStream(CON_FILE)); } /** * 获取所有当前用户的好友,并将好友ID保存至文件OWNER_FILE */ public void getFriends() { try { //新建一个URL连接,连接地址为url String url = getFriendUrl.replaceFirst("#", farmProp.getProperty("farmKey")); url = url.replaceFirst("#", farmProp.getProperty("farmTime")); URLCo ection con = new URL(url).openCo ection(); con.setCo ectTimeout(TIME_OUT); con.setDoOutput(true); //设置该链接的Header,Header的内容由Properties来定义 setCo Header(con, co Prop); //在连接中写入Post的内容 PrintStream printStr = new PrintStream(con.getOutputStream()); printStr.print(getFriPost); printStr.close(); //获取服务器返回内容并解析 Sca er scan = new Sca er(con.getI utStream()); StringBuilder fileBuilder = new StringBuilder(); int cnt = 0; while (scan.hasNext()) { String rtnStr = scan.nextLine(); JSONArray jsonArray = JSONArray.fromObject(''['' + rtnStr + '']'').getJSONObject(0).getJSONArray("data"); cnt += jsonArray.size(); //将服务器返回的所有用户ID加入fileBuilder中 for(int i = 0; i jsonArray.size(); ++ i) fileBuilder.a end(jsonArray.getJSONObject(i).getS tring("userId") + ''n''); } scan.close(); //将所有用户ID写入文件OWNER_FILE PrintWriter writer = new PrintWriter(OWNER_FILE); writer.write(String.valueOf(cnt) + "n" + fileBuilder); writer.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { System.out.println(IOE_PROPMT); } } /** * 对所有好友的所有地进行4种操作:浇水、除虫等,每一个好友由单独一个线程完成 */ public void work() { //为每一个好友建立一个线程并分别执行操作 Thread[] thread = new Thread[owner.length]; for (int k = 0; k owner.length; ++k) { thread[k] = new Thread(new RobotThread(owner[k])); thread[k].start(); } } /** * 机器人线程的内部类,一个这样的线程针对单独一个好友进行操作 * @author without me * */ cla RobotThread implements Ru able { private String owner; public RobotThread(String owner) { this.owner = owner; } @Override public void run() { for (int j = 0; j 4; ++j) { for (int i = 0; i 18; ++i) { URLCo ection co try { //新建一个URL连接,连接地址为tmpUrlStr,将所有urlStr中未设置的参数(即#)修改为farmProp中的值 String tmpUrlStr = urlStr.replaceFirst("#", action[j]); tmpUrlStr = tmpUrlStr.replaceFirst("#", farmProp.getProperty("farmKey")); tmpUrlStr = tmpUrlStr.replaceFirst("#", farmProp.getProperty("farmTime")); URL url = new URL(tmpUrlStr); con = url.openCo ection(); con.setCo ectTimeout(TIME_OUT); //设置连接的Header setCo Header(con, co Prop); con.setDoOutput(true); //在连接中写入Post的内容 PrintStream printStr = new PrintStream(con.getOutputStream()); printStr.print(postStr.replace("#", owner) + i); printStr.close(); //获取服务器返回内容并解析 Sca er scan = new Sca er(con.getI utStream()); if (scan.hasNext()) { JSONArray jsonArray = JSONArray.fromObject(''['' + scan.nextLine() + '']''); JSONObject jsonObject = jsonArray.getJSONObject(0); //将服务器返回的提示(或是错误信息)打印到客户端 if (jsonObject.has("direction")) System.out.println(owner + " : " +jsonObject.getString("direction")); else if (jsonObject.has("error")) System.out.println(owner + " : " +jsonObject.getString("error")); } scan.close(); } catch (SocketTimeoutException ste) { --i; //如果某一操作超时了,返回继续执行该操作 } catch (IOException e) { System.out.println(IOE_PROPMT); } } } } } /** * 设置连接的Header,即设置RequestProperty * @param co 需要设置Header的URLCo ection * @param prop Header内容存储的Properties */ private static void setCo Header(URLCo ection co , Properties prop) { Set keySet = prop.keySet(); Iterator iter = keySet.iterator(); String key; //将Porperties中的所有内容都设置到连接的Header中 while (iter.hasNext()) { key = (String) iter.next(); co .setRequestProperty(key, prop.getProperty(key)); } } }
  其中需要用到3个文件,分别是 1、FARM_FILE:farmKey=78247873dd911c736d3cb15603571c31 farmTime=1261223397 存储向服务器端发送的两个参数(现在明确知道的是第二个参数:是指农场的全局时间,第一个参数应该是请求服务器的一个密钥,如果密钥错误会阻止操作--一般会返回重新登录的提示,一个密钥的可用时间是有限的,所以要过一个小时左右更新一次farmKey,但可惜,我还不知道如何用程序自动更新这个密钥) 2、OWNER_FILE:46 83***909 72***788 26***857 //还有43个好友userId 是所有好友的userId,第一行是好友的数量 3、CON_FILE:Host=xn.hf.fminutes.com User-Agent=Mozilla/5.0 (Window U; Windows NT 5.1; zh-CN; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) Accept=text/html,a lication/xhtml+xml,a lication /xml;q=0.9,*/*;q=0.8 Accept-Language=zh-cn,zh;q=0.5 Accept-Encoding=gzip,deflate Accept-Charset=GB2312,utf-8;q=0.7,*;q=0.7 Keep-Alive=300 Co ection=keep-alive Cookie=__utma=*********.2079770661.1261199924.**** *****.126122***63.*; __utmz=38185962.**********.9.9.utmcsr=a .renren. com|utmccn=(referral)|utmcmd=referral|utmcct=/ha y farm; xn_sig_inu=b910579fd123cfef2d92f7d36bf9626c; xn_sig_user=********; xn_sig_se ion_key=2.1e8b614040cb******5f9395ae413 .3600.1261227600-47305639; __utmc=38185962; __utmb=38185962.1.10.1261223363 是每一个向服务器发送的请求的Header部分,Header部分包括用户的Cookie,通过Cookie服务器识别当前用户是谁,不同的用户该文件内容不一样在程序中使用setCo ectionHeader()方法将每一个请求的Header设置成文件中的内容如果需要使用这个程序的话,必须用firebug获取到你的Cookie的内容,并修改这个文件(由于Cookie中包含了我的用户信息,所以我用*屏蔽掉了一些内容) 程序核心的方法有两个:1、getFriends()用于第一次使用时获取当前用户的好友信息2、work()对所有好友的每块地进行浇水等动作我是对每一个好友都用一个线程单独操作,比如我有46个好友,就会有46个线程同时请求服务器,这样效率高很多(如果想要更快,可以使用更多线程)main函数就两行Robot r = new Robot(); r.work(); ,这是第一次之后的调用,第一次应该先调用getFriends(); 程序的含义看注释应该能够明白,如果要使用程序,一定要将CON_FILE中的Cookie改为你自己的Cookie,其次,FARM_FILE中的farmKey和farmTime可能也需要修改修改完着两个文件,程序应该是能够执行的 PS:程序中用到了JSON-lib来解析服务器返回的数据,JSON-lib下载地址:http://sourceforge.net/projects/json-lib/
天空游戏网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
】 【
】 【
】 【
最新宝典 ·
[06-25]
[06-11]
[06-11]
[05-05]
最新新闻 ·
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
热门点击 ·
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
[07-13]
游戏花边 账号发放 ·
CopyRight 2002-2010 天空游戏网
京ICP证040598
版权所有【求教】人人农场机器人出错
进入贴吧
贴子搜索 |
浏览贴子
吧主: 共有
【求教】人人农场机器人出错
应用程序出现异常,什么不在词典中……登陆以后就一直报错……为什么啊?大神救救我
2011-1-2 17:42
我也是 我大号一直这样了 连登陆都不行··幸亏大号不用怎么管
2011-1-2 17:45
回复:2楼唉我的七八个小号就指着机器人啊……要不然我就累死了
2011-1-2 17:46
回复:3楼
幸亏我只是一个大号·
2011-1-2 17:51
回复:4楼怎么办……丁大吧主出现吧!!!!!!!!!
2011-1-2 17:52
你们俩相拥而泣吧
2011-1-2 17:53
回复:6楼我是男滴……呜呜怎么办啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2011-1-2 17:55
报错没关系的,收获、偷取、呼唤喂食都能正常用,也可以进行设置。就是不能点“用户信息”那个标签,一点就报错。
2011-1-2 17:56
更新以后就是有点问题,没关系的
2011-1-2 17:57
永夜之海
我只知道如果大号机械里只有酒机就会报错。。。其他。。。不知道。。。
2011-1-2 17:57
回复:8楼其实他是不停的弹窗口……每五秒或者是七秒弹一次窗口……
2011-1-2 17:57
不要去点他,点的话一直弹。或者重开也行
2011-1-2 17:59
回复:9楼但是他不停弹窗口好烦呀
回复:10楼= =!没有酒机!恨!
2011-1-2 17:59
回复:10楼
原来是这样…………
2011-1-2 18:00
回复:12楼不去点~嗯~是个好办法……我就把他放在一边吧,可能有点碍眼……
2011-1-2 18:00
我是升到42级,买了西瓜以后出现“不在词典中”的,似乎是因为西瓜、葡萄、酒机之类的东东程序无法支持。
但是没出现过不停弹窗的情况,有时候会出现“无法读取产品数据”什么的,点击确认就行了,或者是把相关的号停止运行再开始运行,也就好了。这样的弹窗出现好像没什么规律,我估计多半是和网络有关系。
2011-1-2 18:03
回复:16楼好吧,谢谢大家我忍了……
2011-1-2 18:04
回复:9楼
吧主大虾啊~!我的也不好用了
我的是无法偷取我的小号了
各种偷取异常 说是无法得到偷取结果!
什么原因啊 ~!急切啊~!
跪求啊~解决方法 ~!
2011-1-2 18:12
分享次数:
分享到:
发表回复
内 容:
用户名:
您目前是匿名发表
验证码:
请点击后输入验证码,加入会员后本吧发贴免验证码。 Ctrl+Enter快捷发表 2011 Baidu| 查看文章 人人农场机器人1.2
2010-05-28
下载地址
修改了奶酪机不能添加的错误
特别声明:
该版本只支持17个号的自动收获、自动喂养、自动偷取。17个号以后的号将不支持自动收获、自动喂养、自动偷取,但可以被别的号请求喂养,也可以用工具按钮上的手工收获、手工喂养。
新的1.2版 数据到42级 喂养的时候不要选蜜蜂 否则会出错
用户数限制20个,应该够用了
送礼物收礼物的小程序,放在机器人目录下运行.不是很完善,能节省体力,大家将就着用吧
| 浏览(
| (73) 最近读者: 网友评论: 1 发表评论: 内 容: 2011 Baidu
可以主动喂养而不是收获后请求喂养吗?
这个版本没有这个功能。如果需求的人多了,可以考虑以后的版本增加。
对于小号喂养很有用,可以主动给好友加最好,而不是只能给自己的号加这样,当然这可能要先加载好友列表了
能和那个助手一起用么?
还有一个问题,如果我大号有10台番茄机,需要2个小号才能满足喂养,只是目前的程序限制只能一个号喂一个号,这个问题怎么解决?
你用一个号设定成空--1/3,保证番茄机不空,用空的时候,就用另一个号将番茄机加满。或者先用一个加,隔几天换一个号加
最好是一台机器或者动物可以由多个小号喂养,排在前面的优先喂养,东西不够时由后面的小号喂养。
觉得可以做到
netman_006说的最好了
在喂养设置里,喂养前不管是空、1/3还是2/3,不用进行判断,直接喂养就行了,像现在晚上没挂机,第二天早上来看,已经是空,但设置的是喂养前1/3,这样机器人就不会喂养,还要手动喂养。
楼主,我的电脑点击了程序没有反应啊。很早的版本就这样了,很郁闷。。。
其实楼主的机器人可以和果汁的ASSIST取长补短。下面有三个建议:
(一)收获后请求好友喂养,每种机器只能设置一次,只能让一个号来喂,很多时候是不够用的。让小号主动喂养应该更好些。
(二)有没有不喂食某种原料的设置?比如摸来的牛奶要攒了装车,万一喂了自己的奶酪机就赔大了。
(三)查看订单需求数时能否选择级别?比如40级之前某种作物的需要量,而不是直接到40几级的。
机器人的操作很明了方便,也很舒服。这是比ASSIST的天然优势。希望机器人能更加完美。楼主辛苦~
好极了,终于更新了
有时添加账号有时显示网络超时 或者账号密码错误,而有时又可以直接添加,不知道怎么回事
回复猩猩要点灯:我也是这样,不过多点几次,或者待会儿在添加就,就会好,不知道什么原因,求老大解答
请问老大,这个是用什么语言编写,什么软件编写制作的??????
请问老大,这个是用什么语言编写,什么软件编写制作的??????
请问老大,这个是用什么语言编写,什么软件编写制作的??????
请问老大,这个是用什么语言编写,什么软件编写制作的??????
顶,会被人人网虐么?
感谢博主啊~~~~
什么时候出一个45级的完整版本,我已经41级了~~
回复Ro oc:应该不会~又没做任何违规的事。 而且原始版本的机器人已经被大家广泛使用很久了
更新下完全订单被。。不要多少工作量额- -
更新下45完全订单被。。不要多少工作量额- -
我刚知道有这个不知道能不能用 我对这个是白菜
还有我下载的是1.2 怎么运行以后是1.1呢?
我的程序 最多添加3个 为什么啊?我添加好半天还是不行啊 为什么?
求LZ 帮助啊
也可以加我405847005细说
能把源程序共享一下吗,现在正在学C#
可以学习一下。
忘记留邮箱了
netmankind@gmail.com
点击说OXC0000135错误怎么办啊?不能用
无法显示啊!
我的网络有点问题下载不了1.2版,lz能帮忙发到我邮箱吗
751107388@qq.com
下的显示1.1版本。。。为什么
求1.2谢谢楼主,80580519@qq.com
楼主 知道怎么越级种作物吗? 网上有人用19级小号忠葡萄喂大号的酒机
为什么我设置的时候只能小号偷大号的,大号不能偷小号,大号四十级现在
大哥 该更新啦
期待更新!
下载不下来
老板,我刚刚达到42级,现在不知道订单缺多少,求更新
同34楼的问题,41级还能用, 42级以后无法察看"用户信息"了.现在只在用喂食功能.仍然很好用!
支持楼主
大神,求更新啊!!!!!!!!!!!!!!
机器人老大,求更新呀
为什么今天所有的机器人都不能用了啊,显示登录错误。
老大快更新,登录不了了
机器人不能用了 !!!!!!!请求更新!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
真惨啊 我的牛都被饿死了
确实不能用了,请求技术支持
楼主救命啊,请求更新
请求更新!楼主辛苦了!感谢楼主!
求更新,现在不可以登陆了~~
支持机器人,希望你快点出更新!!!
求更新,支持大神
小弟基于楼主的dll, 做了修正,解决了登陆问题,
修正版下载地址:
http://blog.163.com/youyiz_hkust/blog/static/173420834201092692021163/
可以用的兄弟们赶紧分享给大家吧,百度人人农场的吧主封我ip,就为阻止我发布这个修正版,mlgb的,看来是renren的或者a ist的狗腿了,c他奶奶的 对分流修改的兄弟表示无限感谢,对机器人大大的无私表示无上敬意,对吧主封修改版发布的IP表示无限鄙视!
ding!!!!!!!!!!!!!!!!!!!!!!!!!!!!

参考资料

 

随机推荐