首页 > 解决方案 > Python 请求给出 200 响应,而 FireFox 获得重定向

问题描述

很简单的问题。当我在任何浏览器中访问我的网站时,它都会重定向。当我requests.get(my_url)对完全相同的 URL 和协议执行操作时,我得到 200 响应。为什么?不管我将allow_redirects 设置为True 还是False,我仍然会得到相同的行为。我尝试设置一个标头,以便请求假装是 Firefox,我仍然得到相同的行为。

我怎样才能让 requests.get 给我一个浏览器在完全相同的 URL 上获得的重定向?

#!/usr/bin/env/python

import requests

result = requests.get("https://bgjkfgbjfgghbjdfbhdgfjkh.fake")

print(result.status_code)

上面打印“200”。

标签: pythonpython-requests

解决方案


从您的所有评论中,听起来状态 200 并不表示正确获取了结束页面(您说 response.text 在两种情况下都完全不同 - 即它不是您期望的结束页面)。

在这种情况下,要么:

  • 您将获得一个简单的“单击此重定向”页面,并且您从 firefox 体验到的自动重定向正在 javascript 中实现(requets.get 无法处理)。
  • 或者,由于缺少其他内容,例如 cookie,网站正在提供另一个“错误”页面(没有 400 系列错误)。

即使allow_redirects是 True,response.history 仍为空这一事实进一步证明您永远不会得到您在 Firefox 中看到的结束页面,并且您得到的 200 不是结束页面,而是“单击此处”或错误页面。


推荐阅读