Python2使用 requests管理cookies的bug

一般在訪問網頁的時候,response會向session中寫入cookie,例如:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 41
Access-Control-Allow-Methods: GET,PATCH,PUT,POST,DELETE,OPTIONS
Content-Encoding: gzip
Vary: Accept-Encoding
ETag: "fa4cf03c0ac47ca1c52ed2df2b71dfda86db6655"
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: 
Access-Control-Allow-Headers: 
X-Backend-Server: zhihuaccount.account-api-web.a52568c8---10.64.91.2:31023[10.64.91.2:31023]
Server: ZWS
Expires: Mon, 05 Nov 2018 05:56:33 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Mon, 05 Nov 2018 05:56:33 GMT
Connection: keep-alive
Set-Cookie: tgw_l7_route=1c2b7f9548c57cd7d5a535ac4812e20e; Expires=Mon, 05-Nov-2018 06:11:33 GMT; Path=/
Set-Cookie: capsion_ticket="2|1:0|10:1541397393|14:capsion_ticket|44:ZWU2ZDA5YzNlM2I5NGQ3Y2E4ZjBlOTEwNWUyMDU2ZTI=|68d278e65ecb127845d2caab375312237cf9b9e211fb209bd9771f80248b3c20"; Domain=zhihu.com; expires=Wed, 05 Dec 2018 05:56:33 GMT; httponly; Path=/
Set-Cookie: _xsrf=KklHXAIziThtvjSTe7DSHbECOyr7IIR2; path=/; domain=zhihu.com; expires=Fri, 23-Apr-21 05:56:33 GMT

這裡設置了capsion_ticket,tgw_l7_route,_xsrf三個值到cookies中,如果細心的觀察會發現_xsrf=KklHXAIziThtvjSTe7DSHbECOyr7IIR2是沒有加雙引號的,而這個,capsion_ticket="2|1:0|10:1541397393|14:capsion_ticket|44:ZWU2ZDA5YzNlM2I5NGQ3Y2E4ZjBlOTEwNWUyMDU2ZTI=|68d278e65ecb127845d2caab375312237cf9b9e211fb209bd9771f80248b3c20"是加了雙引號的

在Python2 中通過session.cookies.get_dict()來獲取所有cookies鍵值對,這個時候會發現,'capsion_ticket': '"2|1:0|10:1541397393|14:capsion_ticket|44:ZWU2ZDA5YzNlM2I5NGQ3Y2E4ZjBlOTEwNWUyMDU2ZTI=|68d278e65ecb127845d2caab375312237cf9b9e211fb209bd9771f80248b3c20"',有2個引號,導致後續的很多問題,比如說,本來模擬登陸的流程沒有問題,可是卻顯示登陸不成功,這個在登陸知乎的時候發現的

解決的辦法:手動添加cookies

	session.cookies.set('capsion_ticket', None)
        c = RequestsCookieJar()
        c.set('capsion_ticket', dict['capsion_ticket'].replace('"',''))
        session.cookies.update(c)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值