python - 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”。
解决方案
从您的所有评论中,听起来状态 200 并不表示正确获取了结束页面(您说 response.text 在两种情况下都完全不同 - 即它不是您期望的结束页面)。
在这种情况下,要么:
- 您将获得一个简单的“单击此重定向”页面,并且您从 firefox 体验到的自动重定向正在 javascript 中实现(requets.get 无法处理)。
- 或者,由于缺少其他内容,例如 cookie,网站正在提供另一个“错误”页面(没有 400 系列错误)。
即使allow_redirects
是 True,response.history 仍为空这一事实进一步证明您永远不会得到您在 Firefox 中看到的结束页面,并且您得到的 200 不是结束页面,而是“单击此处”或错误页面。
推荐阅读
- typescript - 将函数标记为异步并将返回作为函数的签名
- pandas - 使用 Tensorflow Transform 的真正优势是什么?
- html - 让一个 div 填满整个屏幕,没有绝对或相对位置
- typescript - TypeScript 从具有单个项目的数组中的联合中获取第一个元素
- django - 如何初始化字段类型可变的Django表单
- asp.net-mvc - System.Web.Helpers dll
- python - 如何解决“未定义名称 xxx”错误
- c++ - 有人可以解释为什么这个输入代码会生成提供的输出吗?
- selenium - Selenium webdriver 进程如何与 Safari 和 Firefox 通信?
- java - 非常困难的 XML -> 用 3 个数组解析 JSON,然后返回第一个以循环另一个