python - 在 Heroku 上使用 python 请求抓取网站时出现 403 禁止错误
问题描述
我编写了一个爬虫脚本,它向“sci-hub.do”发送一个发布请求,并且我已经将它设置为在 Heroku 上运行。但是当它尝试发送帖子或获取请求时,我大多会收到 403 禁止消息。
奇怪的是,这只发生在该脚本在 Heroku 云上运行时,当我在我的 PC 上运行它时,一切都很好,我得到 200 状态代码。
我尝试过使用会话,但它不起作用。我还检查了该网站的 robots.txt 并将 User-Agent 标头设置为“Twitterbot/1.0”,但仍然失败。
我究竟做错了什么?为什么它只在脚本在 Heroku 上运行时发生。
我很确定网络服务器正在将我的脚本检测为爬虫机器人并试图阻止它。但是为什么即使在添加了适当的“用户代理”之后呢?
解决方案
尝试添加一个常用的用户代理,如:
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/
推荐阅读
- python - Pyspark - 随着数据框变大而中断
- heroku - 手动输入路线时部署在 Heroku 上的 Angular 应用程序出现 404 错误
- python - 如何在 spaCy 中提取带有关键短语的句子
- flutter - 来自 sdk 的 flutter_test 与 tiled >=0.4.0 不兼容。添加火焰时:^0.24.0 依赖项
- gradle - 配置 Gradle Shadow 插件以创建仅具有一个重定位依赖项的库 jar
- r - 在 r 中的嵌套数据框列表上应用函数
- javascript - 具有命名解构的一元函数
- powershell - powershell 不将变量扩展为参数
- visual-studio-code - 如何编写clang格式设置?
- php - 将 .csv 文件导入 sql server 时出现问题