Python请求GET返回200,但POST返回404

时间:2019-10-14 18:18:37

标签: post python-requests

我正在尝试使用python的请求库登录网站(www.scribd.com)。 登录页面为https://www.scribd.com/login。 当我执行以下操作时,一切正常,并且状态码为200,因此我知道该页面存在:

import requests
BASE_URL = "https://www.scribd.com/"
LOGIN_URL = BASE_URL + "login"
r=requests.get(LOGIN_URL)
print(r.status_code)
print(r.reason)

但是,如果我发出POST请求(无论是否包含我的登录详细信息,是否包含标题,等等),我将始终收到404响应。我已经在其他网站上尝试了相同的模式,并且对于POST和GET,我将为其他网站获得200 OK状态代码。 即:

BASE_URL_IG='https://www.instagram.com/'
LOGIN_URL_IG=BASE_URL_IG+'accounts/login'

r = requests.get(LOGIN_URL_IG)
print(r.reason)
print(r.status_code)

r = requests.post(LOGIN_URL_IG)
print(r.reason)
print(r.status_code)

我不确定还有什么尝试,但是我似乎无法在任何其他站点上复制此问题。我也在Postman中尝试过,但是遇到了同样的问题。

1 个答案:

答案 0 :(得分:0)

后端可以为GET而不是POST打开路由。因此,这不足为奇。例如,您可以允许用户在购物网站上获取商品列表,但仅允许经过验证和授权的用户发布新商品。

在这里,您可以使用浏览器将请求复制为CURL。

https://developers.google.com/web/updates/2015/05/replay-a-network-request-in-curl

当我使用上述方法为登录请求复制CURL命令时,得到200响应。但是,其编码混乱了。重要的是,API确实返回200响应。您只需要微调参数。祝你好运:)