Обойти ограничения скорости IP API геокодирования Google

Мы являемся подразделением крупной корпорации и столкнулись с серьезной проблемой, связанной с Google maps и API геокодирования. Проблема в том, что все 70 подразделений нашей корпорации находятся за одним IP-адресом. Таким образом, агент по обслуживанию клиентов в Индии, похоже, приходит с того же IP-адреса, что и разработчик в Кливленде, штат Огайо, который, как представляется, приходит с того же IP-адреса, что и президент подразделения в Западной Европе. С более чем 130 000 сотрудников нас обычно блокируют за превышение предела скорости IP.

Помимо отдельных пользователей, которые просто заходят на веб-сайты, использующие карты Google с запросами геокодирования на стороне клиента, любое подразделение, которое пытается выполнить пакетное геокодирование или предоставляет свое собственное приложение для отображения карт, будет способствовать достижению одного и того же ограничения! Фактически мы используем нашу собственную службу "Где купить", которая является общедоступной (http://www.ridgid.com/Tools/Where-To-Buy/), чтобы предоставлять клиентам информацию о местных дистрибьюторах.

Хотя мы не находимся в пределе API (по крайней мере пока, и когда мы делаем, мы всегда можем купить корпоративную лицензию), мы сталкиваемся с ограничением скорости IP и в настоящее время не имеем обходного пути. Мы уже следуем передовым методам с точки зрения кэширования результатов геокодирования и сокращения расточительных вызовов. К счастью, это не проблема для наших клиентов, поскольку они не имеют тот же IP, что и пользователи в нашей корпорации.

Вопрос в том, есть ли ЛЮБОЙ способ получить исключение от Google для нашего конкретного IP-адреса, чтобы улучшить ограничения на основе IP, учитывая нашу настройку? Это действительно вопрос для Google. Спасибо за вашу помощь!

6 ответов

Подразделение крупной корпорации с десятками тысяч сотрудников должно иметь корпоративную лицензию.

Я не думаю, что есть предел, связанный с IP, если вы используете геокодирование на стороне клиента, как описано здесь:

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

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

Геокодирование на стороне клиента через браузер ограничено по скорости в сеансе карты, поэтому геокодирование> распределяется по всем вашим пользователям и масштабируется в соответствии с вашей базой пользователей.

"Сеанс карты" означает каждый раз, когда загружается API Javascript Map. Однако на это также может быть наложено ограничение, независимо от того, связано ли оно с IP / доменом / субдоменом / URL, и требует дальнейшего уточнения.

И "ограниченная скорость" на стороне клиента не означает, что существует дневная квота или что-то в этом роде, я тестировал этот метод, за один день он может геокодировать более 2500 адресов. Вам нужно будет подумать и проверить, как работает "ограничение скорости". Мое наблюдение заключается в том, что он позволяет быстро набрать около 10 адресов, а затем ограничить вас скоростью около 1 геокода в секунду для следующего запроса 150, дальнейший запрос от той же "сессии" займет экспоненциально больше времени.

Ограничение в стандартной лицензии составляет от 50 до 100 QPS (запросов в секунду) в зависимости от услуги (т. Е. Служба Elevation имеет ограничение 50 QPS, геокодирование имеет ограничение 100 QPS). Несмотря на то, что у вас может быть более высокая квота, вы не можете выполнять более 50 запросов в секунду, в противном случае сервер заблокирует ваш IP-адрес примерно на 2 часа (исходя из моего опыта). Решение состоит в том, чтобы кэшировать запросы и выполнять их по расписанию, а не при возникновении.

Интересно, есть ли много совпадений в запросах, как все продолжают искать те же самые 50 местоположений? Вы пишете кеширующий прокси-сервер, который сначала отправляет запросы во внутреннюю базу данных, а затем запрашивает у Google, когда результаты не найдены. Это можно сделать на программном уровне, изменив вызов GeoCode на InternalGeoCode или, возможно, на сетевом уровне и перехватить все запросы к серверам Google Geocode и перенаправить их? Я не на 100% уверен, насколько сложно это реализовать, или, если это поможет, возможно, все запросы уникальны.

Одна из возможностей - использовать пакет с обратным геокодом вместо одного запроса. Google позволяет использовать до 24 путевых точек в одном направлении. Вместо отправки одного обратного геокода вы можете подождать, пока в пакете не будет накоплено 24 обратных геокода. Или вы можете использовать карту Yahoo, как в этом ответе: проблема в отображении статических карт Google.

Если вы делаете только прямое геокодирование, я предлагаю попробовать GeocodeFarm. На днях я только что получил от них электронное письмо, в котором говорилось, что скоро они тоже начнут выпускать "обратное" геокодирование и что они все еще решают проблемы. Возможно, это поможет вам, так как у них нет ограничений на количество запросов, и единственным ограничением является ваш ежедневный лимит в 2500, такой же, как в Google... IDK. Просто предложение..

http://www.geocodefarm.com/ == ссылка

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