如何用python实现网页自动登录

Python011

如何用python实现网页自动登录,第1张

以登陆百度为例子,如下:

import urllib,urllib2,httplib,cookielib

def auto_login_hi(url,name,pwd):

url_hi="http://passport.baidu.com/?login"

#设置cookie

cookie=cookielib.CookieJar()

cj=urllib2.HTTPCookieProcessor(cookie)

#设置登录参数

postdata=urllib.urlencode({'username':name,'password':pwd})

#生成请求

request=urllib2.Request(url_hi,postdata)

#登录百度

opener=urllib2.build_opener(request,cj)

f=opener.open(request)

print f

#打开百度HI空间页面

hi_html=opener.open(url)

return hi_html

if __name__=='__main__':

name='name'

password='password'

url='yoururl'#例如:url='http://hi.baidu.com/cdkey51'

h=auto_login_hi(url,name,password)

print h.read()#h里面的内容便是登录后的页面内容

首先需要你开始手动登录一下,在该文件的目录下生成一个“renren.coockie”的文件,再可以每次运行该脚本就可以直接进入你的人人网的主页,实现代码如下:

#!/usr/bin/env python

#encoding=gb2312

import sys

import re

import urllib2

import urllib

import cookielib

import webbrowser

class Renren(object):

def __init__(self):

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

self.operate = ''#登录进去的操作对象

self.cj = cookielib.LWPCookieJar()

try:

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

except Exception,e:

print e

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

urllib2.install_opener(self.opener)

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

'''设置用户登录信息'''

self.name = username

self.pwd = password

self.domain = domain

self.origURL = origURL

def login(self):

'''登录人人网'''

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

print 'login.......'

req = urllib2.Request(

'http://www.renren.com/PLogin.do',

urllib.urlencode(params)

)

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

if self.operate.geturl() == 'http://www.renren.com/*********': #用你的人人登录以后的首页地址,后面有一串数字

print 'Logged on successfully!'

self.cj.save('renren.coockie')

else:

print 'Logged on error'

ren = Renren()

username = ''#你的人人网的帐号

password = ''#你的人人网的密码

domain = 'http://www.renren.com'#人人网的地址

origURL = 'http://www.renren.com/*********'#用你的人人登录以后的首页地址,后面有一串数字

ren.setinfo(username,password,domain,origURL)

ren.login()

webbrowser.open(origURL) #自动打开网站

先用chrome的调试器抓取登录的POST请求,对照网页里表单的代码,你就清楚该网站登录的接口,之后用requests写就是了。

我一般用更省事的方法,勾选自动登录,然后把cookies存下来给程序用,免登录,也不用处理登录验证码。当然需要增加检测是否需要重登录的逻辑。

少数情况下网站会拒绝常见浏览器以外的客户端请求,需要伪造user-agent,例如https://proxy.org 这个网站,直接用requests抓会返回一个“你丫是爬虫吧”的错误页面。