gpt4 book ai didi

python - 如何在 Python 中注销请求 session

转载 作者:行者123 更新时间:2023-11-28 22:44:02 26 4
gpt4 key购买 nike

我已经使用 python 成功登录到一个站点并发送一个带有用户名和密码的 POST 请求作为负载。

然后当我在浏览器中访问同一个站点时,该网站通知我当前有人登录了我的帐户(猜猜是谁)。

我的问题是:如何退出请求 session ?

到目前为止,在 stackoverflow 上发现这个问题后,我尝试使用 c.cookies.clear() 清除 cookie:Clear cookies from Requests Python

我已验证 cookie 已创建,然后被清除,但我在随后使用浏览器时仍然遇到相同的登录重复问题。

我已经查看了 Requests 文档和之前的一些问题,但找不到答案。

为了您的引用,我在下面粘贴了一个通用版本的代码。

另请注意,当我注销浏览器时,会发送一个 GET 请求。这是我需要模拟的东西吗?我已经尝试将它与 cookie 一起发送,但结果相同。这看起来应该很简单。目前我可以通过浏览器注销来使用它,但从长远来看会很痛苦。

感谢您的协助。干杯,smaug。

import requests

payload = {'userid': 'my username value',
'passwd': 'my password value'
}

with requests.Session() a c:
c.post('http://www.examplewebsite.com/login.html', data = payload)
print 'cookies', requests.utils.dict_from_cookiejar(c.cookies)
c.cookies.clear()
print 'cookies', requests.utils.dict_from_cookiejar(c.cookies)

最佳答案

如果网站有一个 API 需要您注销,requests 不可能知道这一点。您必须明确发出 logout API 请求。

虽然 requests 有一个叫做 Session 的东西,许多 Web 服务框架也有,但 session 实际上并不是像 TCP 套接字那样两台计算机之间的持久连接。

  • Web 服务框架 session 本质上只是一种在 cookie 中将 ID 来回传递给客户端并将其映射到某些数据库记录或等效项的方法。它仍然一次只能看到一个请求,除非您告诉它,否则它知道您已完成的唯一方法是暂时看不到您的 session ID。
  • requests session 本质上只是一个像浏览器那样存储跨多个请求的 cookie 的地方,因此网络服务框架的 session 将以与在浏览器中相同的方式工作。

因此,清除 cookie 不会执行服务器可见的任何操作。服务器看不到你做的任何事情,除了你发送的请求。

关于python - 如何在 Python 中注销请求 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30024717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com