首页 > 解决方案 > 为什么网站给我一个 403 禁止错误?Python/请求

问题描述

我需要从站点解析 html,如果我在 localhost 上运行,则抓取工作正常,仅在部署中我得到 403 Forbidden 并且我已经尝试了 user-agent 和 referer,如下所示:

Obs:这个站点和我来自巴西,我的代码是使用 Heroku 部署的。

代码:

header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
    "referer": 'https://www.guichevirtual.com.br'
    }
url = 'https://www.guichevirtual.com.br/passagem-de-onibus/campo-grande-ms/sao-paulo-todas-sp'
r = requests.get(url, headers=header)
print(r.text)

输出:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
</body>
</html>

如果有英文错误,对不起。我在学。

标签: pythonpython-requests

解决方案


以下是一些可能在这里发挥作用的可能性:

  1. 站点需要更多标题才能让您访问页面。如果您对如何添加请求头文件感到困惑,我建议您查看请求标头文档,但我看到您已经User-Agent配置了标头,因此添加更多内容应该相当容易。

  2. 您尝试访问的资源要求您登录,或以其他方式使用 page/API 进行身份验证403 Forbidden表明您对内容没有适当的权利。您可能需要在请求中传递一个X-UsernameX-Password/X-Pin标头,或者您可能根本无法抓取页面。

  3. 您的用户代理不是站点/API 可接受的用户代理。您可能需要将其更改为其他内容。根据这个问题/答案,阻止特定的用户代理相当简单。您是否看过评论中链接的这个问题?如果没有,它可能会帮助你。


推荐阅读