python重定向cookie_模拟登陆中 302 重定向和 cookies 的一些困惑
我想写一个查询话费和流量的爬虫,关键是实现模拟登陆的这个部分。
在登陆过程中,点击登陆之后,登陆表单会 post 到一个地址(这一步浏览器不显示),然后会 302 跳转到登陆成功的页面。
我现在想得到登陆成功的 cookies ,不知道该怎么提取,requests.session()并没有得到登陆成功的 cookies.
得不到登陆成功的 cookies ,代码就不能爬取登陆之后的查询信息。
我有三个问题
1.post 表单这个过程,也就是图一中的 cookies 是怎么生成的,因为我发现 post 表单过程中的 cookies 比在进入登陆页面中的多。
2.登陆过程中有两次 302 ,最后再 200 到登陆成功页面,我该怎么得到 200 的这个 cookie 。
3.request.sission()是会自动管理登陆过程中的 cookies 吗,用不用单独提取登陆之后的 cookies 。
代码如下,谢谢大家
#coding=utf-8
import requests
import re
# request headers
Head ={'Accept-Language': 'zh-CN,zh;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch', 'Host': 'ah.189.cn',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Upgrade-Insecure-Requests': '1', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'}
# Chrome 打开登陆页面提取的 cookies
Cook = {'Hm_lvt_333c7327dca1d300fd7235c159b7da04': '1469964315',
'lid': '', '_gscu_1758414200': '69964315ee6pb621', 'v_lasttime': '1469964315502',
'_gscs_1758414200': '69964315tq317521|pv:1', 'Hm_lvt_c7c8eed8670bd7fffefc8b202fe0904d': '1469964315',
'v_url_code': 'http%3A//ah.189.cn/sso/login%3FreturnUrl%3D%252Fbiz%252Fservice%252Faccount%252Finit.action',
'JSESSIONID_SSO': 'Jh1GXdgDZJqdZqpLvRQvZzdlvT7y6BxHhCny9MhbKh1Kw1hSLNt2Q1c6231LrHQWrpDL4m115pz0YTLJN7jx2fmpTfPBx1JwlYvvkLBRySmy18tnW1c2Q7qPvQqK9kJP!463350529',
'v_trackId': '1BD7B46E79FE234CE9C67E49D95245FB', 'Hm_lpvt_333c7327dca1d300fd7235c159b7da04': '1469964315',
'_gscbrs_1758414200': '1', 'Hm_lpvt_c7c8eed8670bd7fffefc8b202fe0904d': '1469964315',
'JSESSIONID_PERSONWEB': 'p2MyXdgGd8f5phjTTv2CJMr6J8QYhSyLX0kkZHlSwpppjhYGf3qm!1538637772'}
#登陆提交的表单
postdata = {'remPwd': '0',
'loginName': '',
'returnUrl': '/biz/service/account/init.action',
'validCode': '',
'loginType': '4', 'sysId': '1003', 'passType': '0',
'csrftoken': '',
'accountType': '9', 'ssoAuth': '0',
'passWord': '',
'latnId': '551'}
#登陆页面
baseurl = 'http://ah.189.cn/sso/login?returnUrl=%2Fbiz%2Fservice%2Faccount%2Finit.action'
#登陆表单 post 的地址
posturl = 'http://ah.189.cn/sso/LoginServlet'
sess = requests.session()
sess.headers.update(Head)
def getP(url,cookies):
"""带 session()requests 的 get 方法"""
pre = sess.get(url,cookies = cookies)
return pre
def getVerifyURL(url):
"""从主页提取验证码地址"""
reg = r'/sso/VImage.servlet\?random=0\.[0-9]+' #正则表达式匹配验证码图片链接
img = re.search(reg,getP(url,cookies = Cook).content).group()
imge = "http://ah.189.cn" + img #得到验证码图片链接
return imge
def getCodePic():
"""下载验证码图片"""
verifyURL = getVerifyURL(baseurl)
codePic = getP(verifyURL,cookies = Cook).content
print verifyURL
with open('x.jpeg','wb') as jpg:
jpg.write(codePic)
def postData():
"""post 表单信息更新"""
username = raw_input("输入手机号")
code = raw_input("输入密码")
passwd = raw_input("输入验证码")
postdata['loginName'] = str(username)
postdata['validCode'] = str(code)
postdata['passWord'] = str(passwd)
getCodePic()
postData()
postover = sess.post(posturl,postdata) #post 表单
cookLogin = postover.cookies #查看 post 表单之后的 cookies
print cookLogin
con = sess.get('http://ah.189.cn/biz/service/account/init.action')
#登陆成功的页面
print "登陆成功",con
python重定向cookie_模拟登陆中 302 重定向和 cookies 的一些困惑相关推荐
- python项目实战:模拟登陆CSDN
2019独角兽企业重金招聘Python工程师标准>>> 前言 今天为大家介绍一个利用Python模拟登陆CSDN的案例,虽然看起来很鸡肋,有时候确会有大用处,在这里就当做是一个案例练 ...
- python模拟登陆遇到重定向_Python requests jira登录302重定向
总结一下自己在用Python requests库对jira进行的一个bug统计时,在登录遇到的问题,以前也遇到过登录302重定向的问题,那个时候用requests同样的方法没有获取到cookie,但是 ...
- python如何实现模拟登录_超详细的Python实现新浪微博模拟登陆(小白都能懂)
最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少走点弯路,这里我把我的分析过程和代码都附上来. 首先,我们先用正 ...
- 超详细的Python实现百度云盘模拟登陆(模拟登陆进阶) 1
这是第二篇从简书搬运过来的文章(大家别误会,是我原创的).因为前一篇文章,我看反响还挺好的,所以把这篇也搬运过来了,其实目的还是为宣传自己的分布式微博爬虫(该项目的内容和工作量都很饱满啊,大家如果觉得 ...
- Python爬虫之模拟登陆
女神找我倾诉,实验室实验选不上,刚出来就被秒了,让我帮她选实验,我想我这万年单身的手速估计还是抢不过我这些师兄们,干脆写一个脚本吧,这样以后女神就找我选实验了,废话少说,切入主题,看这篇教程首先得保证 ...
- python 大众点评模拟登陆_python项目实战:模拟登陆163邮箱,简单到爆
前言 相信大家都会做一些有趣的Python项目,对于小白的我们来说,如果成功了的话,那成就感是非常爆棚的的,这也是非常有助学习. 接下来,为大家介绍一个selenium 模拟登陆163邮箱的代码 首先 ...
- 利用python requests库模拟登陆知乎
当初搜模拟登陆的时候在知乎上也找到一些内容. 以下是代码 import requests import time import json import os import re import sys ...
- python爬虫(一):模拟登陆微博
最近花了不少时间来学python爬虫,觉得还是有很多问题的,比如说requests.get获得Pixiv的网页源代码,一直获取不到,不过我猜测大概是headers的问题,准备之后处理. 废话少说我们先 ...
- python之scrapy模拟登陆人人网
1.settings.py主要配置信息,包括USER_AGENT等 # -*- coding: utf-8 -*-# Scrapy settings for renren project # # Fo ...
最新文章
- C4D灯光照明技术学习教程
- iOS 网络状态判断方案(支持iOS11和iPhoneX)
- 盘点丨春节假期里你错过的人工智能重要新闻
- 05.analysis-normalizer应用
- 升讯威微信营销系统开发教程:(1)订阅号和服务号深入分析
- java中的path类_详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
- ios信号从4g变成无服务器,苹果信号满格显示是4g却没网络
- dnf加物理攻击的卡片有哪些_DNF:节日宝珠之外百分比神器附魔,拍卖行100w,实用不氪金...
- 追踪盗窃12亿用户登录数据的网络犯罪团伙
- 未知账户(S-1-5-21)无法删除的问题
- 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_4_TCP通信的服务器端代码实现...
- 2022年上半年网络工程师下午真题及答案
- 中华文字改革第一人——仓颉
- PLSQL Developer破解注册码
- UE4 虚幻 常用的流程控制蓝图节点介绍
- 笔试题目——研发工程师笔试题
- 360无线wifi 无法连接服务器,360wifi连接上但上不了网的解决方法
- 关于手机app合并m3u8文件失效,pc端合成方法
- 高德地图显示服务器加载失败,常见问题
- el-select 远程搜索时 没有箭头图标