Ограничение API Google Shortener

Мы используем Google Shortener в наших проектах, похоже, у Google есть два ограничения:

  • 100 запросов на пользователя за 100 секунд
  • 1000000 запросов в день. Ограничение API Google Shortener

В 11:00 у нас есть задание cron, которое запускает код и сокращает около 15000 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 (ограничения превышают) Ограничение API Google Shortener

Ограничение API Google Shortener

кажется странным, почему это происходит? Каковы истинные ограничения службы сокращения строк Google?как я могу обойти это ограничение?

Другое примечание: в сценарии с одним ключом, если вы превысите ограничение (100 на 100 секунд), если вы попытаетесь использовать этот ключ снова через 5 минут, все еще столкнетесь с 403 проблемой превышения ограничений !!! похоже ограничения гугла не такие как они сказали !!!

Обновлять

После прочтения Стандартные параметры запроса и Ограничение использования API Я изменил свой запрос на следующий

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

Какой userID является уникальным идентификатором пользователя для каждого запроса (потому что мы генерируем каждый URL-адрес для каждого пользователя). но все равно сталкиваюсь с 403 !!!

Ограничение API Google Shortener

Любая идея?

их api, вероятно, достаточно умен, чтобы понимать, что все запросы поступают из одного источника

Professor Abronsius 13.03.2018 09:32

Для протокола я не голосовал против, но спасибо за вотум доверия

Professor Abronsius 13.03.2018 09:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
444
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лимит будет зависеть от проекта и пользователя. однако он также может быть основан на IP.

обходные пути

  1. создавать несколько проектов на консоли разработчиков Google. каждый с одним ключом API.
  2. отправлять необязательный идентификатор пользователя parm с каждым запросом, использующим случайную переменную.
  3. проверьте вкладку квоты в консоли разработчика, посмотрите, можете ли вы увеличить квоту, на ней будет значок карандаша.

Обратите внимание, что время, на которое вы заблокированы, должно составлять около часа.

quotaUser Alternative to userIp. Lets you enforce per-user quotas from a server-side application even in cases when the user's IP address is unknown. This can occur, for example, with applications that run cron jobs on App Engine on a user's behalf. You can choose any arbitrary string that uniquely identifies a user, but it is limited to 40 characters. Overrides userIp if both are provided. Learn more about Capping API usage.

Вы добавляете его как дополнительный параметр в свой запрос

quotaUser=xxxx

спасибо за внимание, как я могу отправить идентификатор пользователя в качестве параметра на конечную точку?

Yuseferi 14.03.2018 07:27

проверьте обновление, у меня было неправильное имя, кстати, это не всегда работает, они могут видеть, что вы отправляете img с того же IP-адреса

DaImTo 14.03.2018 10:04

случайная строка, которую вы хотите использовать для идентификации пользователя. это не даст вам неограниченного количества, они все еще могут видеть, что он исходит с того же IP, но это должно помочь

DaImTo 14.03.2018 10:44

Я попробую и сообщу о результате. Мне не нужен безлимитный доступ, просто нужно 20 000 запросов за один указанный час в день.

Yuseferi 14.03.2018 11:21

Я пробовал, но, к сожалению, у меня это не сработало, и после 4000 запросов 4000 уникальных userId столкнулись с 403 :(

Yuseferi 18.03.2018 09:28

Я обновил свой вопрос, вы знаете, почему это происходит?

Yuseferi 18.03.2018 10:11

это происходит из-за того, что вы отправляете запрос с того же IP-адреса, что и защита от флуда. вам нужно поделиться API с другими. замедлите ваши звонки, нет возможности увеличить эту квоту.

DaImTo 18.03.2018 19:40

@DaImTo есть ли способ увеличить лимит до более чем 100 запросов за 100 секунд?

DMEM 31.03.2018 03:44

Нет, эту цитату нельзя продлить

DaImTo 31.03.2018 12:20

@DaImTo вы можете увидеть в документации, используя quotaUser, сделайте его unquie IP. > quotaUser Произвольная строка, однозначно идентифицирующая пользователя. Позволяет применять квоты для каждого пользователя из серверного приложения даже в тех случаях, когда IP-адрес пользователя неизвестен. Это может происходить, например, с приложениями, которые запускают задания cron в App Engine от имени пользователя. Вы можете выбрать любую произвольную строку, которая однозначно идентифицирует пользователя, но она ограничена 40 символами.

Yuseferi 04.04.2018 08:24

Google знает IP-адрес, с которого исходит запрос. Вы можете отправить случайное значение quotaUser, если хотите. Это немного помогает, но в конечном итоге Google выясняет, что вы делаете, и вы все равно получите квоту на основе IP-адреса машины, выполняющей запрос.

DaImTo 04.04.2018 08:25

@DaImTo мои пользователи уникальны, я имею в виду, что для каждого запроса я отправляю уникальный идентификатор пользователя как quotaUser

Yuseferi 04.04.2018 08:43

Да, должно работать, но только с ограничениями. Не ожидайте получения 100 запросов в секунду на пользователя, выполняющего задание cron за одним и тем же IP-адресом. Квота на запрос пользователя работает лучше всего, когда запрос выполняет другой компьютер.

DaImTo 04.04.2018 08:49

@DaImTo, он должен работать, но не работает, в developers.google.com/analytics/devguides/reporting/core/v4/‌… ничего не упоминается об IP и unqiue IP, есть ли у вас предложения? мы пока боремся с этой проблемой.

Yuseferi 04.04.2018 09:41

Я предлагаю отказаться и принять ограничение. Я создал настраиваемую задачу SSIS, которая обращалась к API Google Analytics. Я пробовал все больше года, чтобы заставить его работать быстрее и не достичь этой квоты. Притормози и попробуйте еще раз. Это было лучшее, что я когда-либо придумал daimto.com/google-apis-flood-buster

DaImTo 04.04.2018 09:51

@DaImTo, к сожалению, мы используем PHP, а PHP - отстой в многопоточности, и мы не можем заблокировать спящий поток на 1 секунду. как вы знаете, Google собирается закрыть службу goo.gl (заменить ее на FDL) к следующему году, и мы собираемся внедрить нашу службу сокращения в июне, нам просто нужно временное решение для снижения наших расходов на sms .. спасибо за внимание и время.

Yuseferi 04.04.2018 11:26

@DaIm: Конечно, я ищу способ затронуть Google, который принимает запрос с quotaUser в качестве уникального пользователя, я добавлю его к вашему ответу и, если не смогу найти, я приму ваш ответ в обоих условиях; - ). спасибо за время.

Yuseferi 04.04.2018 12:43

Другие вопросы по теме