gpt4 book ai didi

amazon-web-services - 阻止 API Gateway 接收对 robots.txt 文件的请求

转载 作者:行者123 更新时间:2023-12-01 10:30:32 25 4
gpt4 key购买 nike

我一直在开发一个新项目,该项目利用映射到 lambda 函数的 API 网关。 lambda 函数包含一个 Kestrel .NET Web 服务器,该服务器通过 API 网关通过代理接收请求。我已将 API Gateway 重新映射到实际子域以确保某些品牌一致性。一切正常;然而,我最近实现了 Elmah.IO,以便更好地了解在这种不寻常的情况下会出现什么错误。

现在,每天大约一到五次,api 网关 URL 收到无法完成的 robots.txt 文件的请求。我不希望 API 能够完成这个请求,因为 API 不是为了提供静态内容。我的问题是;如何防止提出这些请求?

是什么导致请求 API 网关 URL?是因为它是通过我的主机站点的链接直接检测到的吗?它使用 CORS 访问 API,因此机器人可能将 API 检测为完全独立的域并尝试对其进行爬网。如果是这样,是否有一些配置可以添加到我的 Web API 中以强制对 robots.txt 请求进行设计的文本响应?

最佳答案

是什么导致请求 API 网关 URL?

网络爬虫寻找他们能找到的任何 URL,并希望将所有内容编入索引。如果在任何地方都有对您的 API 网关 URL 的引用,那么 Googlebot 及其 friend 很可能会找到它。他们没有任何理由提前知道域仅用于编程访问,从他们的角度来看,API URL 与其他 URL 一样。

行为良好的网络爬虫会在请求任何其他内容之前请求域的 robots.txt 文件,以查看它们是否应该加载域上的任何其他页面。

如何防止这些请求被提出?

我讨厌告诉人们他们问错了问题,但实际上您希望爬虫提出请求。这就是您可以告诉抓取工具您不希望他们请求的其他页面的方式。 robots.txt 约定的目的是它应该是一种向爬虫传达您的愿望的简单方法。在 Web 的早期,将文本文件放入根文件夹非常容易。随着网络的发展,站点更多地由程序驱动而不是文件驱动,因此约定有点难以处理。但是您无法真正阻止爬虫请求 robots.txt,因为在处理它之前,它们无法知道是否应该访问该主机名上的其他 URL,因此它们总是会尝试请求它。你只需要处理它。

是否有一些配置可以添加到我的 Web API 以强制对 robots.txt 请求进行设计的文本响应?

以下是我为 API 网关创建 robots.txt 的步骤:

  • 创建一个新资源,名称为 robots.txt和路径 robots.txt .请注意,控制台将尝试将路径设为 robots-txt (使用连字符代替)默认情况下,因此您需要确保更改它。

    Create Resource

    Set Resource Name
  • 为该资源创建一个新方法,用于 GET。

    Create Method

    New Method is for GET
  • 选择 Mock 的集成类型。

    Integration type is Mock
  • 在“集成响应”部分,展开状态 200 部分,展开“ body 映射模板”部分,然后单击 application/json .将内容类型更改为 text/plain ,并将所需的 robots.txt 内容¹ 放入模板框中。单击保存。

    Go to Integration Response section

    Expand status 200

    Expand Body Mapping Templates

    Edit application/json

    Change content type, include robots.txt content, and Save
  • 返回并打开“方法响应”部分。展开状态 200 部分,单击铅笔图标以编辑 application/json响应体类型。将其更改为 text/plain ,然后单击对勾进行保存。

    Go to Method Response section

    Expand section for status 200

    Click pencil to edit

    Change to text/plain and Save
  • 重复步骤 2 到 5,但使用 HEAD 而不是 GET。 (我相信在使用 GET 获取文件之前,可能会有机器人使用 HEAD 检查是否存在。)看起来您需要将相同的 robots.txt 内容放入模板框中,即使实际上不会发送响应对于 HEAD 请求,发送正确的 Content-Length header 。
  • 部署到您的测试阶段,并确保 robots.txt URL 正常工作,并以 text/plain 进行响应。 HEAD 和 GET 的内容类型。
  • 准备好后部署到您的生产阶段。


  • ¹ 我希望大多数 API 系统都希望使用 standard method to exclude all robots :

    User-agent: *
    Disallow: /

    关于amazon-web-services - 阻止 API Gateway 接收对 robots.txt 文件的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43239958/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com