Python模拟登陆(urllib2)

原创 2015年11月17日 16:19:34
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/49888757

最近需要做个自动化工具,需要自动登录某个网站然后自动进行某些操作,免除人工一个一个操作的烦恼。
第一步就是要登录网站,而目前主流网站的登陆过程大同小异。于是乎,我就拿了人人网(www.renren.com)来试手。至于为什么用它,因为很多网站的登陆过程太复杂了,它稍微简单点。

主要用python实现了对网站的模拟登录。需要自己构造数据接口,这就需要抓包看登陆的时候到底发了什么数据。
firefox有一个很好用的工具HTTPfox来抓取http数据包,主要看url,postdata,header,cookie,user-agent等数据。

我们要构造自己的HTTP数据包,并发送给指定url。我们通过urllib2等几个模块提供的API来实现request请求的发送和相应的接收。
大部分网站登录时需要携带cookie,所以我们还必须设置cookie处理器来保证cookie。


#!/usr/bin/python 
# -*- coding:utf-8 -*-

import urllib
import urllib2
import cookielib

#登录的主页面
hosturl = 'http://www.renren.com/'

#post数据接收和处理的页面,点登陆的时候http POST的链接
posturl = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=20151021027896'

#设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
  
#打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)
h = urllib2.urlopen(hosturl)
  
#构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。
headers = {
			'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0',
			'Referer' : 'http://www.renren.com/'
		   }

#抓包获取参数,password一般会通过某种方式加密。
postData = {
	'email':'xxxxxx',
	'icode':'',
	'origURL':'http://www.renren.com/home',
	'domain':'renren.com',
	'key_id':1,
	'captcha_type':'web_login',
	'password':'xxxxxx',
	'rkey':'70153f87e588d34f588cccecdd878d66',
	'f':''
	} 

postData = urllib.urlencode(postData)

#通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程  
request = urllib2.Request(posturl, postData, headers)

print request
response = urllib2.urlopen(request)
text = response.read()
text = text.replace("true","1").replace("false","0")
text = eval(text)
url = text.get('homeUrl')  # 这个才是你人人主页的真实url
if not url:
	print "error"

response = urllib2.urlopen(url)

result = response.read().decode("utf-8").encode("gbk")
print result


注:
1.登陆一般都会先有一个http GET。用于拉取一些信息及获得Cookie,然后再http POST登陆。
2.http POST登陆的链接有可能是动态的,从GET返回的信息中获取。
3.PASSWORD有些是明文发送,有些是加密后发送,腾讯的更牛逼,动态加密的,里面有很多其他数据的加密信息,不只是密码。不过好像能通过查看JS源码获得加密算法。
4.大多数网站的登陆整体流程类似,可能有些细节不一样。所以不能保证其他网站登陆成功,还有待研究。

Python爬虫之模拟登录总结

备注:python 2.7.9,32位 有些网站需要登录后才能爬取所需要的信息,此时可以设计爬虫进行模拟登录,原理是利用浏览器cookie。 一、浏览器访问服务器的过程:     (1)浏览器(客...
  • churximi
  • churximi
  • 2016年03月17日 21:48
  • 17043

Python使用requests库模拟登陆网站的方式--以豆瓣为例

初次接触爬虫的时候,总会看到模拟登录网站的字眼,然后又是get、post等一堆不知道什么意思的字眼。百度get、post之后也不太清楚什么意思,只知道好像是打开网址的时候顺便提交一些数据。然后又在想:...

python爬虫之模拟登陆csdn

python模拟登陆网页主要使用到urllib、urllib2、cookielib及BeautifulSoup等基本模块,当然进阶阶段我们还可以使用像requests等更高级一点的模块。其中Beaut...

Python爬虫(四)——模拟登录imooc实战(利用cookie)

该实战是模拟登录慕课网,并且进入个人课程页面 一、思路1、获取登录cookie,并保存。2、进入个人课程页面二、代码#!/usr/bin/env python # -*- coding:utf-8 -...
  • w_linux
  • w_linux
  • 2017年11月05日 14:34
  • 112

[Python]网络爬虫(三):使用cookiejar管理cookie 以及 模拟登录知乎

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份、进行session跟踪而储...

Python爬虫----爬虫入门(4)---urllib2 模拟登陆

开发环境,ubuntu 14.0.1自带python 2.7.6接下来要开始抓取需要登陆才能抓取的页面: 这里先抓一个不需要验证的网站:学校的官网: 找到登陆框,输入密码账号,登陆。(先打开开发者...

python爬虫之urllib2登录并抓取HTML页面

Http协议相关知识 验证码实现机制与session的工作原理 urllib2库的使用

Python模拟登陆2:获取电子科大研究生成绩

前面小试了一把 能够成功登陆,但是这下要获取成绩可是废了好多功夫。首先他这个登陆只是登陆了一个frame框架页面,里面还有个js的二次跳转页面。还会自动登陆一次。只有在IE或者谷歌等http抓包才看的...

Python爬虫—京东在线抢购

转载自:http://group.jobbole.com/22908/ 京东抢购 Python爬虫,自动登录京东网站,查询商品库存,价格,显示购物车详情等。 可以指定抢购商品,自动购买下单,...

Python入门:模拟登录(一)urllib

我们很多时候需要用python写测试web的脚本,但现在很多网站都需要登录才能进行下一步操作的,所以python模拟登录在我们的日常操作中很重要,下来我给大家简单介绍一下python是怎样实现web登...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python模拟登陆(urllib2)
举报原因:
原因补充:

(最多只允许输入30个字)