用 Requests 出了一些问题,求大侠指导,谢谢

2014-07-06 03:40:06 +08:00
 kchum
A:登陆url B:会员中心(登陆访问) C:申请页面(需登陆访问)

1.登陆A
s = requests.Session()
data = {'username': 'value1', 'password': 'value2'}
r = s.post("http://example.com/login", data = data)

2.请求B
r = s.get("http://example.com/member")
r.text
里有username了,说明登陆成功了吧

3.请求C
r = s.get("http://example.com/apply")
r.text
里提示
a).your session has timed-out.
b).you don't have 'cookies' enabled on your browser.
session都是用同一个对象去请求的,应该不是这个原因吧

headers,抓包信息排查过了
那么是不是基本下定论是cookies的原因?
我看到页面有看到用js操作cookies的,是不是这个原因?
Python里有什么简单快速的方案解决这个问题,能获取js生成到cookies?

求大侠指点下,非常感谢!
2893 次点击
所在节点    Python
5 条回复
sandtears
2014-07-06 04:53:26 +08:00
读一下 JS 源码照着生成一下呗,反正 js 这种东西都是公开的
kchum
2014-07-06 07:39:43 +08:00
@sandtears 重新抓包看了下各个url请求header cookie信息和Python的对比,name数是一样的。
应该跟Js无关。

抓包流程
登陆A时setcookie Auth=xxxxxx
Code = xxxxxxxx

请求B,还是A的Cookies

请求C,又setcookie History=xxxxx
Code = xxxxxxxxx

Python在C这一步获取不到C设置的cookie(也就是C页面没设置成功History,新Code)

请问,有哪些情况会导致这种情况出现?

谢谢~~
ushuz
2014-07-06 09:13:48 +08:00
把headers设置成和浏览器一模一样试试,可能在apply那一步加了一些对headers的验证。
sandtears
2014-07-06 10:09:25 +08:00
@kchum 没看明白你的意思,你请求 C 不是设置了新的 Cookie -> History 么, name 数怎么会一样
jsonline
2014-07-06 11:22:38 +08:00
cookie过期时间多久?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX