【问题标题】:Bypass Google Geocoding API IP Rate Limits绕过 Google Geocoding API IP 速率限制
【发布时间】:2012-02-27 22:23:59
【问题描述】:

我们是一家大公司的一个部门,在使用 Google 地图和地理编码 API 时遇到了一个重大问题。问题是我们公司的所有 70 个部门都在同一个 IP 地址后面。因此,印度的客户服务代理似乎与俄亥俄州克利夫兰的开发人员来自同一个 IP 地址,而后者似乎与西欧的部门总裁来自同一个 IP 地址。我们拥有超过 130,000 名员工,经常因为超出 IP 速率限制而被阻止。

除了只是浏览网站的个人碰巧使用带有客户端地理编码请求的 Google 地图之外,任何尝试进行批量地理编码或提供自己的地图显示应用程序的部门都将导致相同的限制!我们实际上在内部使用自己的 Where To Buy 服务,该服务是公开的 (http://www.ridgid.com/Tools/Where-To-Buy/),为客户提供有关当地经销商的信息。

虽然我们没有遇到 API 限制(至少现在还没有,而且当我们这样做时,我们总是可以购买企业许可证),但我们遇到了 IP 速率限制,目前没有解决方法。在缓存地理编码结果和减少浪费调用方面,我们已经在遵循最佳实践。值得庆幸的是,这对我们的客户来说不是问题,因为他们与我们公司的用户不在同一个 IP 上。

问题是我们是否有任何方法可以让 Google 对我们的特定 IP 地址进行例外处理,以改善我们设置的基于 IP 的限制?这确实是谷歌的问题。感谢您的帮助!

【问题讨论】:

  • 我建议直接联系 Google 的 Map for Business 团队:support.google.com/enterprisehelp/bin/…
  • 我会试一试。虽然谷歌论坛说现在在这里发布问题。
  • 是的,但在许可方面,您应该联系 Google Maps for Business 团队。您的问题本质上并不是真正的技术问题——您问的是业务问题。
  • 我刚刚在 Google API 控制台中发现了一些有趣的东西。您可以为 API 设置每个用户每秒最大请求数的参数。默认值为每个用户每秒 1 个请求(也称为 IP 地址)。虽然我认为这不是我们遇到的问题,但我认为将其更新为更高的数字(例如 100 而不是 1)可能有助于减少因内部使用我们的公共网站而遇到问题的可能性。
  • 假设我们可能会被阻止浏览到使用谷歌地图的网站的个人——无论我们是使用自己的服务还是编写批量地理编码过程。如果我们相信其他公司不会从听到这个问题的答案中受益,我很高兴从 stackoverflow 中退出这个问题。如果答案是“购买企业许可证,谷歌将手动取消我们 IP 的速率限制”,我仍然认为这对其他人有好处。其他人有想法吗?

标签: google-maps google-maps-api-3 google-geocoder


【解决方案1】:

拥有数万员工的大型公司的部门应拥有企业许可证。

【讨论】:

  • 我们没有超出我们的 API 限制。这是我们超出的基于 IP 的速率限制。据我了解,购买企业许可证不会影响速率限制。我们每天处理的地理编码请求不超过 2500 个。
  • 来自 Google 的地理编码策略“你应该小心地只实现服务器端,因为如果你的地理编码太快或太多,你很可能会遇到配额问题。如果在设计你的网站之后,你'仍然遇到配额问题,您可以考虑使用 Maps API for Business 许可证"
  • 让我换一种说法。如果我们公司的太多员工在某一天浏览了碰巧使用谷歌地图或服务的第三方网站,我们可能会被阻止,因为每个人都在同一个 IP 上。即使我们没有自己的应用程序,这个问题也可能存在。我已向 Google 业务团队提交了一份请求,以查看他们的意见。我会在收到他们的回复后更新这个问题。
  • @jakejgordon 这根本不是真的。客户端 IP 限制基于每个地图会话,而不是每天。
  • @rickyduck 你的意思是没有IP地址的速率限制?鉴于这件事自 2012 年 2 月以来一直开放,届时情况也可能会发生变化。实际上,我们最近没有被阻止,因此这也可能表明发生了变化,因为我怀疑我们公司内的用户只是在减少使用 Google 地图。
【解决方案2】:

如果您使用此处所述的客户端地理编码,我认为没有与 IP 相关的限制:

https://developers.google.com/maps/articles/geocodestrat

服务器端通过地理编码网络服务进行地理编码有配额 每个 IP 每天 2,500 个请求,因此一天内的所有请求都计算在内 反对配额。另外,Web Service 是有速率限制的,所以 来得太快的请求会导致阻塞。

客户端通过浏览器进行的地理编码在每个地图会话中受到速率限制,因此地理编码 > 分布在您的所有用户中,并随您的用户群扩展。

“地图会话”是指每次加载 Javascript 地图 API 时。不过这也可能有限制,是否与IP/域/子域/URL相关仍需进一步澄清。

而且客户端的“速率限制”并不意味着每天有配额什么的,我已经测试过这种方法,在一天之内,它可以对超过 2500 个地址进行地理编码。您将不得不考虑并测试“速率限制”是如何工作的,我的观察是它让您立即爆发到大约 10 个地址,然后将您限制为下一个 150 个请求每秒大约 1 个地理编码的速率,进一步请求来自同一个“会话”的时间将成倍增长。

【讨论】:

    【解决方案3】:

    一种可能是使用一批反向地理编码而不是单个请求。谷歌在一个方向请求中最多允许 24 个航点。您可以等到批量累积 24 个反向地理编码,而不是发送单个反向地理编码。或者您可以像在这个答案中一样使用雅虎地图:Issue in displaying static Google maps

    【讨论】:

    • 我们没有超出我们的 API 限制。这是我们超出的基于 IP 的速率限制。据我了解,购买企业许可证不会影响速率限制。我们每天消耗的地理编码请求不超过 2500 个。我们与用户的每次会话也不会有超过一个地理编码请求。我们的分销商位置已为此目的进行地理编码和缓存。
    • @jakejgordon:那么这不是 stackoverflow 的问题。我相信当你购买 10k 的许可证时,谷歌会给你一个例外。至少你在这里留下的印象是非常聪明的人。
    • @jakejgordon:我已经编辑了我的答案。您可以使用其他地图吗?
    【解决方案4】:

    我想知道请求中是否有很多重叠,例如每个人都在查找相同的 50 个位置?您编写了一个缓存代理,它首先向内部数据库发出请求,然后在未找到结果时从 Google 发出请求。这可以在软件级别完成,将 GeoCode 调用更改为 InternalGeoCode,或者在网络级别完成,并将所有请求捕获到 Google Geocode 服务器并重定向它们?我不是 100% 很难实现,或者如果它会有所帮助,也许这些请求都是独一无二的。

    【讨论】:

    • 很好的建议,但根据 Google 的建议,我们在首次推出时确实构建了自己的缓存。实现起来相当容易。
    【解决方案5】:

    如果您只进行正向地理编码,我建议您尝试 GeocodeFarm。前几天我刚收到他们的一封电子邮件,说他们也将很快开始发布“反向”地理编码,并且他们仍在解决问题。也许这会对您有所帮助,因为他们没有请求速率限制,唯一的限制是您的每日 2,500 限制,与谷歌... IDK 相同。只是一个建议..

    http://www.geocodefarm.com == 链接

    【讨论】:

      【解决方案6】:

      标准许可的限制为 50 到 100 QPS(每秒查询数)限制,具体取决于服务(即高程服务有 50 QPS 限制,地理编码有 100 QPS 限制)。 尽管您可能有更高的配额,但您每秒不能执行超过 50 个请求,否则服务器将阻止您的 IP 大约 2 小时(根据我的经验)。解决方案是缓存请求并按计划而不是在发生时执行它们。

      【讨论】:

        猜你喜欢
        • 2011-12-18
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 2016-05-20
        • 2018-09-23
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        相关资源
        最近更新 更多