论坛首页 编程语言技术论坛

被偷无奈写个收菜外挂

浏览 31227 次
精华帖 (2) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-14  

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

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

 

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

   发表时间:2010-06-15  
........又一个GEA应用.....

我看到了定时二字...
0 请登录后投票
   发表时间:2010-06-15  
dreampuf01 写道
........又一个GEA应用.....

我看到了定时二字...

GEA是什么东东?
我昨天看了一下GAE文档,好像不支持对请求新开线程进行操作,不支持由请求触发的长时间运行的操作……好像也就没法把这外挂放GAE上运行吧~
0 请登录后投票
   发表时间:2010-06-17  
楼主再写个web版,偷菜外挂吧
0 请登录后投票
   发表时间:2010-06-17  
在gae上部署了web版的吧
0 请登录后投票
   发表时间:2010-06-18  
呵呵,这样子还有什么乐趣可言
0 请登录后投票
   发表时间:2010-06-18  
不要code
  只需外挂和使用教程 
 
0 请登录后投票
   发表时间:2010-06-18  
和python不熟的,飘过,没有括号,看起来忒别扭
0 请登录后投票
   发表时间:2010-06-18  
种菜就是让人偷的,哈哈
0 请登录后投票
   发表时间:2010-06-18  
强人~~~~~有时也可以学习学习啊,在快乐中学习
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics