【问题标题】:python flask requests works on localhost but does not work on remote serverpython烧瓶请求适用于本地主机但不适用于远程服务器
【发布时间】:2021-05-28 12:05:44
【问题描述】:

我正在尝试从网站“https://www.wallpaperflare.com”制作壁纸页面,

当我尝试在 localhost 上运行它时,它总是可以工作并显示网站的原始页面。

但是当我部署到 Heroku 时,该页面不会显示来自网站的原始页面,而是“错误获取请求,代码 403”,这意味着请求不适用于该 url。

这是我的代码:

@app.route("/wallpapers", methods=["GET"])
def wallpaper ():
    page = requests.get("https://www.wallpaperflare.com")
    if page.status_code == 200:
        return page.text
    else:
        return "Error Get Request, Code {}".format(page.status_code)

有办法解决吗?

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。

标签: python python-3.x flask python-requests


【解决方案1】:

HTTP 错误代码 403 表示 Forbidden。你可以阅读更多here

这意味着wallpaperflare.com 不允许您提出请求。这是因为网站通常不希望脚本向它们发出请求。请务必阅读站点的robots.txt 以查看其脚本抓取策略。更多关于 here

它可以在您的本地计算机上运行,​​因为它尚未被 wallpaperflare.com 列入黑名单

【讨论】:

    【解决方案2】:

    这里有两件事:

    • 用户代理 - 除非你欺骗它,否则请求模块将使用它自己的字符串,很明显你是一个机器人
    • IP 地址 - 您的服务器 IP 地址可能因各种原因被拒绝,而您的家庭 IP 地址工作正常。

    远程站点也可能会根据客户端应用不同的策略,如果您是机器人,那么您可能会被允许抓取一点,但可能会应用速率限制措施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 2012-09-23
      • 2020-06-17
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      相关资源
      最近更新 更多