使用python模拟登录人人网

人人网每天登陆一次有积分,手机登录也能赚到,所以就打算写一个登录程序,每天运行一次以赚积分。

人人网登录时表单提交是使用post方法,我在网上搜了许多,有一个版本保存了cookies(从csdn上找到),经测试成功

代码如下:

import sys,re,urllib2,urllib,cookielib

class renren(object):

    def __init__ (self):

        self.name=self.pwd=self.content=self.domain=self.origURL=''

        self.loginURL = ''

        self.operate=''

        self.cj=cookielib.CookieJar() 

#        self.cj.revert('renren.coockie')

        self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))

        urllib2.install_opener(self.opener)

    def setinfo(self,username,password,domain,origURL,loginURL):

                self.name=username

                self.pwd=password

                self.domain=domain

                self.origURL=origURL

                self.loginURL = loginURL

    def login(self):

                params={'domain':self.domain,'origURL':self.origURL,'email':self.name,'password':self.pwd}

                print ('login...')

                req=urllib2.Request(self.loginURL,urllib.urlencode(params))

                self.operate=self.opener.open(req)

                print self.operate.geturl()

                print self.operate

                if self.operate.geturl().lower()=='http://www.renren.com/home':

                    print ('ok!!')

                else:

                    print ('no!!')

   先对该对象进行幅值,然后调用login登录

第二种方法:在网上搜了许多,介绍怎么使用python提交表单,分别对’get‘方法和‘post’方法进行了处理,根据这个思路编写了如下代码:

class Renren2(object):

    def __init__(self):

        self.email = self.pwd =''

        self.URL = ''

    def setInfo(self,email,password,loginURL):

        self.email = email

        self.pwd = password

        self.URL = loginURL

    def login(self):

        print 'logining in:'+ self.email

        values = {'email':self.email,'password':self.pwd}

        postData = urllib.urlencode(values)

        request = urllib2.Request(self.URL,postData)

        sock = urllib2.urlopen(request)

        url = sock.geturl()

        url3w = 'http://www.renren.com/home'

        url3g = 'http://3g.renren.com/home.do?sid='

        len1 = len(url3w)

        len2 = len(url3g)

        filename = self.email+'.html'

        file = open(filename,'w')

        file.write(sock.read())

        if url[0: len1].lower() == url3w:

            print self.email + 'login success on \'www\''

        elif url[0: len2].lower() == url3g:

            print self.email + 'login success on \'3g\''

        else:

            print self.email + 'failed' 

同样,先赋值后调用即可

        ren = Renren2()

        ren.setInfo(user, password, url)

        ren.login()

第二种方法将url作为参数传入,并考虑手机登录方式,手机登录url为'http://3g.renren.com/login.do?autoLogin=true'

两种方式都可以登录成功,并没有再测试不同之处

评论

此博客中的热门博文

民国教材胜在情怀