【问题标题】:Google Shortener API limitationGoogle Shortener API 限制
【发布时间】:2018-03-18 17:11:09
【问题描述】:

我们在项目中使用 Google Shortener,看来 Google 有两个限制:

  • 100 秒内每个用户 100 个请求
  • 每天 1000000 个请求。

在上午 11:00,我们有一个运行代码的 cron 作业,需要缩短大约 15,000 个 URL,

昨天我们只使用了一个键,但是今天我们添加了 6 个键来绕过这个限制,并且每分钟使用其中一个键,代码如下

    $googleAPIKeys = [
        'KEY1CODE',
        'KEY2CODE',
        'KEY3CODE',
        'KEY4CODE',
        'KEY5CODE',
        'KEY6CODE'
    ];
    $roundRobinKey = date('i') % count($googleAPIKeys);
    try {
        $req = $client->post('https://www.googleapis.com/urlshortener/v1/url?key=' . $googleAPIKeys[$roundRobinKey], [
            'json' => [
                'longUrl' => $url
            ]
        ]);
    } catch (ClientException $e) {
        return $url;
    }

    $result = json_decode($req->getBody()->getContents());

但仍面临 403(限制超出

看起来很奇怪,为什么会这样?缩短谷歌服务的真正局限是什么? 如何绕过这个限制?

另一个注意事项:在单键场景中,如果您的限制超过(每 100 秒 100 次),如果您在 5 分钟后再次尝试使用该键,仍然面临 403 限制超出问题!!! 看来google的限制不像他们说的那样!!!

更新

看完Standard Query ParametersCapping API usage 我已将我的请求更改为以下内容

  $req = $client->post('https://www.googleapis.com/urlshortener/v1/url?quotaUser=' . $userID . '&key=' . $myKey, [
    'json' => [
        'longUrl' => $url
    ]
]);

userID 是每个请求的唯一用户 ID(因为我们为每个用户生成每个 url)。但仍然面对 403 !!!

有什么想法吗?

【问题讨论】:

  • 他们的 api 可能足够聪明,可以意识到所有请求都来自同一个来源
  • 为了记录,我没有否决这个问题,但感谢信任投票

标签: php google-api google-url-shortener


【解决方案1】:

限制将基于项目和用户。但是它也可以是基于 ip 的。

解决办法

  1. 在 Google 开发者控制台上创建多个项目。每个都有一个 API 密钥。
  2. 使用随机变量随每个请求发送可选参数用户 ID。
  3. 检查开发者控制台中的配额选项卡,看看您是否可以增加配额,它会有一个铅笔图标。

请注意,您被锁定的时间应该在一个小时左右。

quotaUser 替代 userIp。允许您强制执行每用户配额 来自服务器端应用程序,即使在用户 IP 的情况下 地址不详。例如,这可能发生在应用程序中 代表用户在 App Engine 上运行 cron 作业。您可以选择 任何唯一标识用户的任意字符串,但它是 限制为 40 个字符。如果两者都提供,则覆盖 userIp。学 有关 Capping API 使用的更多信息。

您将其作为附加参数添加到您的请求中

quotaUser=xxxx

【讨论】:

  • 感谢您的关注,如何将用户 ID 作为参数发送到端点?
  • 检查更新我的名字错了顺便说一句这不会总是有效,他们可以看到你是从同一个 ip 发送的
  • 您想用来标识用户的随机字符串。这不会给你无限的我们他们仍然可以看到它来自同一个 ip 但它应该会有所帮助
  • 我会尝试并通知您结果。我不想要无限制的访问,只想要一天中每个指定小时 20,0000 个请求。
  • @DaImTo,不幸的是,我们正在使用 PHP,而 PHP 在多线程方面很糟糕,我们无法阻止线程休眠 1 秒。如您所知,谷歌将在明年关闭 goo.gl 服务(将其替换为 FDL),我们将在 6 月实施我们的缩短服务,我们只需要临时解决方案来降低我们的短信成本。谢谢注意力和时间。
猜你喜欢
  • 2017-02-09
  • 2013-07-20
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多