使用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'
两种方式都可以登录成功,并没有再测试不同之处
评论
发表评论