【问题标题】:Cannot get cookies with python requests while postman, curl, and wget workpostman、curl 和 wget 工作时无法通过 python 请求获取 cookie
【发布时间】:2019-04-19 21:10:24
【问题描述】:

我正在尝试在一家法国供水商网站上进行身份验证,以获取我的用水量数据。该网站不提供任何 api,我正在尝试制作一个在网站上进行身份验证并抓取数据的 python 脚本。我的工作基于working Domoticz python 脚本和shell script。 工作流程如下:

  1. 从网站获取令牌
  2. 在步骤 1 使用登录名、密码和令牌获取身份验证
  3. 从第 2 步获取 1 个或多个 cookie
  4. 使用来自 3 的 cookie 获取数据

我被困在第 2 步,无法使用我的 python 脚本获取 cookie。我尝试使用邮递员、curl 和 wget,它正在工作。我什至使用了邮递员生成的python代码,但我仍然没有得到cookie。

这是我邮递员post请求的截图 这会在响应中提供两个 cookie。

这是我的python代码:

import requests

url = "https://www.toutsurmoneau.fr/mon-compte-en-ligne/je-me-connecte"

querystring = {"_username":"mymail@gmail.com","_password":"mypass","_csrf_token":"knfOIFZNhiCVxHS0U84GW5CrfMt36eLvqPPYGDSsOww","signin[username]":"mymail@gmail.com","signin[password]":"mypass","tsme_user_login[_username]":"mymail@gmail.com","tsme_user_login[_password]":"mypass"}

payload = ""
headers = {
    'Accept': "application/json, text/javascript, */*; q=0.01",
    'Content-Type': "application/x-www-form-urlencoded",
    'Accept-Language': "fr,fr-FR;q=0.8,en;q=0.6",
    'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Mobile Safari/537.36",
    'Connection': "keep-alive",
    'cache-control': "no-cache",
    'Postman-Token': "c7e5f7ca-abea-4161-999a-3c28ec979628"
    }

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.cookies.get_dict())

输出为{}

我无法弄清楚我做错了什么。 如果您有任何帮助,我将很高兴得到它。

感谢阅读。

编辑:

我的一些假设是错误的。 shell 脚本确实在工作,但不是 Postman。由于收到的回复 200,我感到很困惑。

【问题讨论】:

  • 您要登录网站吗?
  • 是的。这就是我想要实现的目标。
  • 问题是网站有ReCaptcha。这使得登录非常困难(几乎不可能)
  • 但是我可以使用postman

标签: python cookies python-requests


【解决方案1】:

所以我回答我自己的问题。

首先,在第 1 步获取令牌时,我收到一个 cookie。我应该在登录时使用这个 cookie,而我以前没有这样做过。

然后,当使用此 cookie 和令牌登录步骤 2 时,我无法在连接良好时收到的响应中看到任何 cookie(我在内容中找到了一个“断开连接”字符串,即此处仅在良好登录的情况下)。这是正常行为,因为 cookie 不会在发布请求的响应中发送。

我必须创建一个requests.session 来发布我的登录表单,并且会话存储 cookie。

现在,我可以使用这些信息从服务器获取数据。 希望对其他人有所帮助。

【讨论】:

  • 能否请您添加一个相同的代码 sn-p。我也面临同样的问题。
猜你喜欢
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 2021-12-27
  • 1970-01-01
  • 2014-12-09
相关资源
最近更新 更多