Сервис «Яндекс.Карты» неверно считает запросы http api и нарушает собственные правила

У меня есть сайт недвижимости tvoyadres.ru с посещаемостью 30 000 человек в сутки, и я использую геокодер Яндекс карт (JavaScript API и HTTP API Геокодера) и следующий, код, каждый запрос к геокодеру я записываю в счеткик, который обновляется в 23-00 раз в сутки.

С JavaScript API я укладываюсь в 25000 запросов в день, но с HTTP API не получается там лимит 1000, хотя использую 12 в день об этом ниже.

Вот выдержка из правил:

В бесплатной версии JavaScript API и HTTP API Геокодера установлен лимит на общее число запросов. Запросы в считаются суммарно по следующей формуле:

число запросов в Геокодер + число запросов в Маршрутизатор + 5 × число запросов к Панорамам

Их количество не должно превышать 25 000 в сутки, из которых количество запросов к HTTP API Геокодера не должно превышать 1000 в сутки. В случае превышения установленного лимита по JavaScript API или по HTTP Геокодера следует перейти на коммерческое использование API, в котором этот лимит устанавливается тарифом.

Источник https://yandex.ru/dev/maps/jsapi/doc/2.1/terms/index.html/ #index__limit-desc

Мой код

if (mb_strpos('Москва|Санкт-Петербург|Севастополь', $form['city']) !== false) { unset($form['region']); } $params = [ 'geocode' => preg_replace(['#^(, )#', '#(, ){2,}#', '#(, )$#'], ['', ', ', ''], getnamebyid('region', $form['region']) . ', ' . $form['city'] . ', ' . $form['street'] . ', ' . $form['house'] . ', ' . $form['name']), 'format' => 'json', 'results' => 1, 'apikey' => 'абракадабра' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://geocode-maps.yandex.ru/1.x/?' . http_build_query($params, '', '&')); curl_setopt($ch, CURLOPT_ENCODING, 0); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($ch, CURLOPT_TIMEOUT, 15); $response = json_decode(curl_exec($ch)); curl_close($ch); if ($response->response->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found > 0) { $coordinate = explode(' ', $response->response->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos); $form['coordinates'] = $coordinate[1] . ',' . $coordinate[0]; } else { $form['coordinates'] = '55.75399400,37.62209300'; } file_put_contents(PATH . '/map/geocode.yandex.http.txt', intval(file_get_contents(PATH . '/map/geocode.yandex.http.txt')) + 1); chown(PATH . '/map/geocode.yandex.http.txt', 'tvoyadres'); chgrp(PATH . '/map/geocode.yandex.http.txt', 'tvoyadres');

Cудя по-моему счетчику я максимум делаю 12 запросов в день, а Яндекс в статистике же мне пишет > 1000, но это чисто физически не возможно.

Снимки экрана из личного кабинета

В техническую поддержку я написал 18.11.2020, сегодня мне ответили

К нам не поступают обращения о некорректном подсчете статистики в кабинете, на текущий момент сервис работает корректно.

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

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

Если проверка на новом ключе не принесет описанных мной результатов, пожалуйста, сообщите нам, приведя примеры запросов и их временные метки.

Я передам информацию специалистам.

Виктор Азимов, Поддержка Яндекса

Я им ответил

Давайте чтоб все было по честному, выгрузите пожалуйста в виде excel все 1062 запроса к http api, тогда увидите что их не было, к сожалению в личном кабинет нету такого отчета у меня, а другие люди просто до конца не разобрались.

Я

Если кто столкнулся с таким отпишитесь здесь, особенно те у кого большие сайты.

33
1 комментарий

Добрый день! А не может быть такого, что по вашему ключу еще кто-то запросы в API Геокодера слал?

Ответить