设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6534|回复: 4
打印 上一主题 下一主题

requests.session模拟登录i春秋网站的问题

[复制链接]

1

主题

0

好友

17

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-10-8 00:44:23 |只看该作者 |倒序浏览
import requests

header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Content-Type': 'application/x-www-form-urlencoded','Referer': 'https://user.ichunqiu.com/login?r=https%3A%2F%2Fwww.ichunqiu.com%2F'}
postdata={'username':'xxxx','password':'xxxx','yzm':''}
s=requests.Session()
res=s.post('https://user.ichunqiu.com/login/signin',headers=header,data=postdata)
print res.text

想用requests.session来模拟登录i春秋,但是res.text返回的就是https://user.ichunqiu.com/login/这个登录页面的内容,并没有登录成功跳转至https://www.ichunqiu.com页面,请求过程中有302跳转,但是自己理解的是requests是会主动跟随跳转,而且requests.session可以保存Cookie信息,不知道哪里有问题,希望各位帮忙解惑
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2017-10-9 16:32:17 |只看该作者
没太懂你说的302跳转是什么意思,发生在哪里的跳转,跳转到哪里
如果是把你跳转到login页面,那应该只是你请求发送的信息有问题,没有登录成功,这跟你session没多大关系,你本身也没有在post之前去请求页面,就算是这个问题,那你应该先用这个session去get一下登录页面,然后再post登录请求。

你可以把返回的 text 保存到html里面打开看下,是不是有报错提示。

如果你的意思是登陆成功了,但是没有自动跳转。那你就用你登录成功的session去手动请求新的页面
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

17

积分

新手上路

Rank: 1

板凳
发表于 2017-10-9 22:20:11 |只看该作者
crossin先生 发表于 2017-10-9 16:32
没太懂你说的302跳转是什么意思,发生在哪里的跳转,跳转到哪里
如果是把你跳转到login页面,那应该只是你 ...

我尝试过post数据前先用session去get登录页面,但是还是不行,现在的问题是没有登录成功,如果登录成功状态码会是302,而现在post请求之后的状态码是200,返回的text就是登录页面的源码,没有报错信息。
post提交的内容,我尝试在firefox的hackbar里提交是可以正常登录的,所以我不知道问题出在哪里
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2017-10-10 12:59:01 |只看该作者
missy 发表于 2017-10-9 22:20
我尝试过post数据前先用session去get登录页面,但是还是不行,现在的问题是没有登录成功,如果登录成功状 ...

可能还是你的headers信息不全。
我刚试了下,headers里面加上cookie字段应该可以,至少会返回“用户名密码错误”的提示了

另外它的password应该是要加密过的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

5#
发表于 2017-11-12 00:26:16 |只看该作者
post 完之后,代表登陆了。
然后要 res=  s.get('https://www.ichunqiu.com',headers=header)
----------------------------------------------------------------------------------------
之前遇到过有些企业内部系统,可以直接:
s = requests.Session()
s.post(url, postData)   #因为是用session()对象,所以是可以保留访问信息的
req = s.get()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 13:47 , Processed in 0.022868 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部