首页 > 解决方案 > 在 Heroku 上使用 python 请求抓取网站时出现 403 禁止错误

问题描述

我编写了一个爬虫脚本,它向“sci-hub.do”发送一个发布请求,并且我已经将它设置为在 Heroku 上运行。但是当它尝试发送帖子或获取请求时,我大多会收到 403 禁止消息。

奇怪的是,这只发生在该脚本在 Heroku 云上运行时,当我在我的 PC 上运行它时,一切都很好,我得到 200 状态代码。

我尝试过使用会话,但它不起作用。我还检查了该网站的 robots.txt 并将 User-Agent 标头设置为“Twitterbot/1.0”,但仍然失败。

我究竟做错了什么?为什么它只在脚本在 Heroku 上运行时发生。

我很确定网络服务器正在将我的脚本检测为爬虫机器人并试图阻止它。但是为什么即使在添加了适当的“用户代理”之后呢?

标签: pythonherokupython-requestsweb-crawlerhttp-status-code-403

解决方案


尝试添加一个常用的用户代理,如:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36

也许您需要为每个请求使用随机用户代理。然后你可以安装和使用https://pypi.org/project/fake-useragent/


推荐阅读