`
smartzxy
  • 浏览: 196019 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

被偷无奈写个收菜外挂

阅读更多

     无聊的时候玩玩人人农场,不知不觉等级就高了,于是乎就招偷了……作为一个玩农场的程序员,不能对此束手无策的!写个收菜的程序吧,顺便练练Python!

 

     研究了一下人人网的wap页面,写下了如下的代码:

#! /usr/bin/env python
#coding=utf-8
import urllib2,urllib
from xml.dom import minidom
from HTMLParser import HTMLParser
LOGIN_URL='http://3g.renren.com/login.do?fx=0&autoLogin=true'

def login(user, passwd):
    data=urllib.urlencode({
    'origURL':'/home.do',
    'email':user,
    'password':passwd,
    'login':'\xe7\x99\xbb\xe5\xbd\x95'
    })
    fd=urllib2.urlopen(LOGIN_URL,data)
    return fd.read()
    
def getAppUrl(page):
    doc=minidom.parseString(page)
    appDiv=doc.getElementsByTagName('body')[0].getElementsByTagName('div')[3]
    for a in appDiv.getElementsByTagName('a'):
        url=a.getAttribute('href')
        if url and 'apps.do' in url:
            return url
    else:
        print '没有找到“应用”页面的链接'.decode('utf-8').encode('gbk')
        
def getFarmUrl(page):
    doc=minidom.parseString(page)
    farmDiv=doc.getElementsByTagName('body')[0].getElementsByTagName('div')[5]
    for a in farmDiv.getElementsByTagName('a'):
        url=a.getAttribute('href')
        if url and 'appid=53429' in url:
            return url
    else:
        print '没有找到“人人农场”页面的链接'.decode('utf-8').encode('gbk')


def visitUrl(url):
    fd=urllib2.urlopen(url)
    return fd.read()

def harvestFarm(user, passwd):
    print '收获'.decode('utf-8').encode('gbk')+user+\
    '的农场……'.decode('utf-8').encode('gbk')
    appurl=getAppUrl(login(user, passwd))
    farmurl=getFarmUrl(visitUrl(appurl))
    tp=TargetsParser()
    tp.feed(visitUrl(farmurl))
    linkLists= tp.getTargets()
    for url in linkLists:
        hlp=HarvestLinkParser()
        hlp.feed(visitUrl(url))
        if hlp.getHarvestLink():
            visitUrl(hlp.getHarvestLink())
    print '收工离开此农场'.decode('utf-8').encode('gbk')
            
class TargetsParser(HTMLParser):
    def __init__(self):
        self.targets=[]
        HTMLParser.__init__(self)
    def handle_starttag(self, tag, attrs):
        if tag!='a':
            return
        href=[value for key,value in attrs if key=='href']
        for url in href:
            if 'myCropAction.php' in url or 'myTreeAction.php' in url or\
            'myAnimalAction.php' in url or 'myMachineAction.php' in url:
                self.targets.append('http://mapp.renren.com'+url)
    def getTargets(self):
        return self.targets

class HarvestLinkParser(HTMLParser):
    def __init__(self):
        self.link=''
        HTMLParser.__init__(self)
    def handle_starttag(self, tag, attrs):
        if tag!='a':
            return
        href=[value for key,value in attrs if key=='href']
        for url in href:
            if 'wap,reapAllAction.php' in url:
                self.link='http://mapp.renren.com'+url
    def getHarvestLink(self):
        return self.link

if __name__=='__main__':
    userList=[('email','password')]
    for u,p in userList:
        harvestFarm(u,p)

      经过测试,已经可以实现收菜功能了。接下来的任务是:定时收菜、自动定时收菜、收菜时顺便偷菜……

 

      嘿嘿,分享代码仅作为技术交流~

分享到:
评论
40 楼 peteryao 2011-01-04  
唉。。。。python调试相当恶心
39 楼 smartzxy 2010-08-16  
caohuilin 写道
一直想搞一个java的,可是就是没有人给个思路什么的...
哪位高人前辈能否给个样例来启发一下,最好是源码里有注释的...

在电脑上上手机版的人人,一步步点进农场,并观察链接,你发现了什么?你想到了什么?呵呵
38 楼 caohuilin 2010-08-16  
一直想搞一个java的,可是就是没有人给个思路什么的...
哪位高人前辈能否给个样例来启发一下,最好是源码里有注释的...
37 楼 cana_xu 2010-06-29  
刚看过rails的源码,和派森半斤八两啊
36 楼 smartzxy 2010-06-28  
Michael.Tuan 写道
又见【.decode('utf-8').encode('gbk')】,pythoner有没有 更 甜的方法 啊,每写俩汉字都需要转码

可以的,可以让代码字符集默认为gbk,我也不知道为什么鬼使神差的用了种烦人的方式……
35 楼 Michael.Tuan 2010-06-28  
又见【.decode('utf-8').encode('gbk')】,pythoner有没有 更 甜的方法 啊,每写俩汉字都需要转码
34 楼 kfhacker-ping 2010-06-24  
这也是一种学习的方式 
33 楼 mice_003 2010-06-23  
d大哥给点思路,我想用flash实现下。。
32 楼 alswl 2010-06-23  
很早之前写了一个java的,后来加密算法变了就失效了
31 楼 tongxiaobai 2010-06-22  
能不能写一个qq农场/牧场的外挂,这个需求很大~
30 楼 catlovefox 2010-06-22  
你不知道,人人农场,在wap端,设置了偷菜上限了吗?

倒是可以改为,1.偷等级高的 2.偷贵的 3.优先偷机械、动物、果树(农田,就不用了吧,都种便宜的喂动物,送机械的)。 
29 楼 catlovefox 2010-06-22  
你不知道,人人农场,在wap端,设置了偷菜上限了吗?

倒是可以改为,1.偷等级高的 2.偷贵的 3.优先偷机械、动物、果树(农田,就不用了吧,都种便宜的喂动物,送机械的)。 
28 楼 heqishan 2010-06-22  
smartzxy 写道
showr 写道
能写个JAVA版的学习么?

Java也差不多思路嘛,找个HTML的库来解析网站的页面代码,提取出有用的URL,用HttpClient库来访问相应URL即可……一样很简单~嘿嘿



"找个HTML的库来解析网站的页面代码"这句话你解析一下吗?
27 楼 smartzxy 2010-06-21  
cugwei 写道
楼主威武
我也用python写了一个 已经实现偷人家的、收自己的、喂养自己的,不过采用的是selenium实现的,呵呵,不如楼主的解析html方便
目前主要问题是,人人农场每日偷菜数量是有上限的,所以需要对各种农作物(果树、畜牧、机械)等按照价值排序只偷贵的,不知这块楼主是否有考虑或是否有相关数据?

偷菜有上限的啊?没研究过~如果我写,不会自动偷所有人的,会设个参数,比如只偷好友列表前几的。因为我自己在好友列表里排第二,偷低等级农场的菜没有意义啊……
偷菜不难实现,多解析几次页面就是了,但我觉得吧,偷菜都做成自动化了,游戏就真没什么意义了……嘿嘿
PS:我最近一篇博客上的代码结构比较清楚,这个是最初的版本~
26 楼 orcl_zhang 2010-06-21  
cugwei 写道
楼主威武
我也用python写了一个 已经实现偷人家的、收自己的、喂养自己的,不过采用的是selenium实现的,呵呵,不如楼主的解析html方便
目前主要问题是,人人农场每日偷菜数量是有上限的,所以需要对各种农作物(果树、畜牧、机械)等按照价值排序只偷贵的,不知这块楼主是否有考虑或是否有相关数据?

你很强大。
25 楼 cugwei 2010-06-21  
楼主威武
我也用python写了一个 已经实现偷人家的、收自己的、喂养自己的,不过采用的是selenium实现的,呵呵,不如楼主的解析html方便
目前主要问题是,人人农场每日偷菜数量是有上限的,所以需要对各种农作物(果树、畜牧、机械)等按照价值排序只偷贵的,不知这块楼主是否有考虑或是否有相关数据?
24 楼 smartzxy 2010-06-20  
ccxw1983 写道
虽然不懂 Python 还是看得出来大概意思的
做程序员的好处就是自己要什么就可以做什么,搞点自己的小工具娱乐下是个好主意,赞一个

哈哈,志同道合!
23 楼 ccxw1983 2010-06-20  
虽然不懂 Python 还是看得出来大概意思的
做程序员的好处就是自己要什么就可以做什么,搞点自己的小工具娱乐下是个好主意,赞一个
22 楼 smartzxy 2010-06-20  
showr 写道
能写个JAVA版的学习么?

Java也差不多思路嘛,找个HTML的库来解析网站的页面代码,提取出有用的URL,用HttpClient库来访问相应URL即可……一样很简单~嘿嘿
21 楼 smartzxy 2010-06-20  
nrxqq 写道
实在没法看懂 本人就会一门java和javascript暂时还在学习中,请教要看懂得具备哪些知识

学习一下最基本的Python用法就行啦,我觉得吧,随便一门语言学好了,看其他语言都应该差不多能看懂啊……

相关推荐

Global site tag (gtag.js) - Google Analytics