【发布时间】:2018-03-18 17:11:09
【问题描述】:
我们在项目中使用 Google Shortener,看来 Google 有两个限制:
在上午 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());
看起来很奇怪,为什么会这样?缩短谷歌服务的真正局限是什么? 如何绕过这个限制?
另一个注意事项:在单键场景中,如果您的限制超过(每 100 秒 100 次),如果您在 5 分钟后再次尝试使用该键,仍然面临 403 限制超出问题!!! 看来google的限制不像他们说的那样!!!
更新
看完Standard Query Parameters和Capping 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