Python模拟登陆(使用requests库)

原创 2015年11月19日 15:14:48
之前使用 Python自带urllib2库做了一个简单的模拟登陆 人人网 的功能。发现很多网站都比人人网的登陆流程复杂的多,需要好好抓包研究每一步请求过程及需要的Cookie,urllib2的cookie处理器就有点相形见绌了。很多都需要自己实现。

而由于urllib2本身的使用起来不方便,所以改用第三方库requests库,这个库也是使用很广泛的一个Python库。


当然了,每个网站的登陆流程略有不同,代码不可能完全通用,需要自己抓包分析过程,(使用HTTPFox等),弄懂原理,然后稍作修改。

# -*- coding:utf-8 -*-
import urllib
import ssl
import requests

g_cookie = ''

def login_web():
	url = 'https://www.xxx.com'
	
	#verify和allow_redirects看需要,我这边需要取到每一步的cookie所以禁用重定向。前面的get请求一般都是为了获取Cookie
	resp = requests.get(url, verify=False, allow_redirects=False)
	
	g_cookie = resp.headers['set-cookie']
	
	get_url = url + resp.headers['location']
	
	headers = {'Cookie':g_cookie}
	
	resp = requests.get(get_url,headers=headers,verify=False, allow_redirects=False)
	
	#print "resp.headers:",resp.headers
	get_url = resp.headers['location']
	resp = requests.get(get_url,verify=False, allow_redirects=False)
	#print "===>",resp.headers
	post_url = resp.headers['location']

	headers = {
		'Content-type':'application/x-www-form-urlencoded'
	}
	
	data = {'username':'test','password':'password','other':'other'}
	
	#这里才是真正的登陆过程,data里面是抓包获取的账号密码及其他信息。
	resp = requests.post(post_url, urllib.urlencode(data),
		headers=headers,
		verify=False,
		allow_redirects=False)
	
	get_url = resp.headers['location']
	
	headers = {'Cookie':resp.headers['set-cookie']}
	
	#我要登陆的网站重定向比较多,所以不停的get。
	r = requests.get(get_url,headers=headers,verify=False,allow_redirects=False)
	
	get_url	= r.headers['location']
	headers = {'Cookie':g_cookie}  # 最开始获得的Cookie派上用场了
	resp = requests.get(get_url,headers=headers,verify=False,allow_redirects=False)
	
	get_url = 'https://www.xxx.com'
	resp = requests.get(get_url, headers=headers,verify=False,allow_redirects=False)
	
	file = open('login_info.txt','w')
	file.write(resp.content)

if __name__ == '__main__':
	login_web()



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

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

Python Requests快速入门

快速上手 迫不及待了吗?本页内容为如何入门Requests提供了很好的指引。其假设你已经安装了Requests。如果还没有, 去 安装 一节看看吧。 首先,确认一下: Request...
  • iloveyin
  • iloveyin
  • 2014年03月18日 10:09
  • 183826

AsyncHttpClient 中的重定向和 setEnableRedirects 方法异常解决

今天使用 AsyncHttpClient  开源库,遇到个很崩溃的问题: 方法  setEnableRedirects(false); 从名称上看应该是重定向开关的方法,设置为 false 后则普通请...

python的requests在网络请求中添加cookies参数

哎,好久没有学习爬虫了,现在想要重新拾起来。发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧。废话不宜多,直接上内容。 我们平时使用requests获取网络内容很简...

requests有关cookie的使用

requests有关cookie的使用最近用requests把百度贴吧的脚本重写了一遍,把用urllib模拟登陆的部分全部重写了一遍,算是渗入接触了一下requests,感觉确实方便了很多。...
  • zhu_free
  • zhu_free
  • 2016年01月22日 18:47
  • 20277

Python Post and Get 登陆web后台系统并抓取页面

Python Post and Get 登陆web后台系统并抓取处理页面内容
  • zhtsuc
  • zhtsuc
  • 2013年10月29日 19:04
  • 3506

Python使用Requests第三方库自动登陆知乎

写爬虫就是我学习python的动力,刚开始学习的时候是用python自带的urllib和urllib2的库写爬虫,感觉有点繁琐,今天学习了Requests库感觉用起来比之前用的库方便多了。对网页的分析...
  • Win_Man
  • Win_Man
  • 2016年01月23日 20:32
  • 3866

Python 使用requests发送POST请求

一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行  请求报头  消息主体 HTTP协议规定post提交的数据必须放在消息主体中,但是协议并...

python requests 模拟网站登录

目的 最近在做接口自动化的工作,尝试模拟登陆公司的网站。 思路 使用Python 的requests 模块 安装:pip install requests 中文DOC:API说明...

python2+requests+模拟用户登录+重定向

利用python的requests库进行重定向的模拟用户登录
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python模拟登陆(使用requests库)
举报原因:
原因补充:

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