【问题标题】:Python Requests gives a different status code compared to website call与网站调用相比,Python 请求提供了不同的状态码
【发布时间】:2012-11-20 15:11:52
【问题描述】:

我使用请求,并且某些 URL 给出的响应代码与浏览器中具有相同 URL 的调用不同。

例如:

import requests
req = requests.get('http://www.jordaaninfo.nl')
responsecode = req.status_code
# responsecode == 500

当页面 http://www.jordaaninfo.nl 可通过 Chrome/FF/Safari 访问时,给出响应代码 500。

谢谢, 尼尔斯

【问题讨论】:

  • 请不要包含提示中的人字形。
  • 这里已经被问过好几次了。提问前请先搜索答案。
  • @PiotrDobrogost 如果您可以链接到副本,这将非常有用。
  • @Marcin 通常我会这样做,但这样做我有点累,尤其是当其他人什么都不做,而是跳到回答以获得宝贵的声誉......
  • @PiotrDobrogost 我也是。正是出于这个原因,有一个基于重复的关闭选项。即使您无法投票关闭,您也可以将链接放在评论中,并为管理员举旗。

标签: python python-requests


【解决方案1】:

在我的 Firefox 中,www.jordaaninfo.nl 也会出现 500 状态代码,但无论如何都会显示该页面。这可以在 Firebug 的 Net 选项卡中看到。 我在 Linux 上的 Chromium 浏览器获得了 200 OK。

问题(和解决方案)出在请求的 Accept-Language 标头中。 显然,服务器在这方面有特殊需求;-)

问题和解决方法可以用wget演示:

$ wget 'http://www.jordaaninfo.nl/'
--2012-11-20 23:15:20--  http://www.jordaaninfo.nl/
Resolving www.jordaaninfo.nl... 87.250.155.10
Connecting to www.jordaaninfo.nl|87.250.155.10|:80... connected.
HTTP request sent, awaiting response... 500 Internal Server Error
2012-11-20 23:15:22 ERROR 500: Internal Server Error.

$ wget --header="Accept-Language: Accept-Language: en;q=0.8,en-us;q=0.5" 'http://www.jordaaninfo.nl/'
--2012-11-20 23:16:01--  http://www.jordaaninfo.nl/
Resolving www.jordaaninfo.nl... 87.250.155.10
Connecting to www.jordaaninfo.nl|87.250.155.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
....

我的 Firefox 中的 500 错误是由语言 'nl' 作为 Accept-Language 设置中的第一个条目引起的:

nl,en;q=0.8,en-us;q=0.5,fy;q=0.3 --> 500 ERROR
en,nl;q=0.8,en-us;q=0.5,fy;q=0.3 --> 200 OK

【讨论】:

  • 谢谢朋友。这就是诀窍。 >>> headers = {'Accept-Language': 'en'} >>> req = requests.get('jordaaninfo.nl',headers=headers) >>> req.status_code 200
猜你喜欢
  • 2018-02-19
  • 2021-08-15
  • 2013-07-25
  • 2021-01-31
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多