Crossin的编程教室

标题: requests.session模拟登录i春秋网站的问题 [打印本页]

作者: missy    时间: 2017-10-8 00:44
标题: requests.session模拟登录i春秋网站的问题
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信息,不知道哪里有问题,希望各位帮忙解惑

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

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

如果你的意思是登陆成功了,但是没有自动跳转。那你就用你登录成功的session去手动请求新的页面
作者: missy    时间: 2017-10-9 22:20
crossin先生 发表于 2017-10-9 16:32
没太懂你说的302跳转是什么意思,发生在哪里的跳转,跳转到哪里
如果是把你跳转到login页面,那应该只是你 ...

我尝试过post数据前先用session去get登录页面,但是还是不行,现在的问题是没有登录成功,如果登录成功状态码会是302,而现在post请求之后的状态码是200,返回的text就是登录页面的源码,没有报错信息。
post提交的内容,我尝试在firefox的hackbar里提交是可以正常登录的,所以我不知道问题出在哪里
作者: crossin先生    时间: 2017-10-10 12:59
missy 发表于 2017-10-9 22:20
我尝试过post数据前先用session去get登录页面,但是还是不行,现在的问题是没有登录成功,如果登录成功状 ...

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

另外它的password应该是要加密过的
作者: 啊猫啊狗    时间: 2017-11-12 00:26
post 完之后,代表登陆了。
然后要 res=  s.get('https://www.ichunqiu.com',headers=header)
----------------------------------------------------------------------------------------
之前遇到过有些企业内部系统,可以直接:
s = requests.Session()
s.post(url, postData)   #因为是用session()对象,所以是可以保留访问信息的
req = s.get()




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5