If you are comfortable in the registry:
open run: regedit
and Try this:
HKEY_LOCAL_MACHINESoftwarePoliciesMicrosoftWindowsCurrentVersionInternet Settings
On the right side, you’ll find a file named:
«ProxySettingsPerUse
» or «Default
»
Click it and change its value to «1» (obviously without the » «).
Then you accept.
From:
Gabriel Lobo on https://support.google.com/chrome/thread/34982026?hl=en
A few responses said it worked for them.
It worked for me too
Полезная информация
Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.
№108-11-2015 20:38:53
- PRESIDENT
- Участник
- Группа: Members
- Зарегистрирован: 09-04-2015
- Сообщений: 885
- UA:
42.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
========================================================================
Обсуждение скриптов и вопросов связанных с борьбой с капчами.
========================================================================
Начну пожалуй.
reCaptcha 2 сохранение на компьютер.
Директорию C:CapNum, куда сохранять и имя файла/капчи cap.jpg, естественно можете заменить на свои.
Уменьшение картинки/капчи в размерах.
Тут есть много вариантов, приведу парочку.
Вариант 1
Использование сторонней программы.
Качаем convert.exe и распаковываем в папку куда сохраняются капчи (допустим C:CapNum).Вот этот код уменьшит и обрежет картинку/капчу cap.jpg в 2 раза (создаст рядом уменьшенную cap2.jpg)
Вариант 2
Использование PHP
Качаем вот это и распаковываем в папку C:CapNum.
Создаём файлик 1.php в папке куда сохраняются капчи C:CapNum.Вот этот код, для запуска 1.php, уменьшит картинку/капчу cap.jpg в 2 раза (создаст рядом уменьшенную cap2.jpg).
И так же пронумерует все варианты ответов (маленькие картинки) от 1 до 9 .
=====================================================
RECAPTCHA
=====================================================
скрипт рекапчи, с уменьшением размера картинки и отправлением на рукапчу для распознания
=====================================================
SOLVEMEDIA
=====================================================
Пытаемся взломать или ищем флеш капчу.
Солвемедия ломается без проблем, если у вас динамический IP.
После каждого распознавания капчи, нужно менять IP, чистить куки и желательно подменять узер агент, т.е. версию операционки и браузера.
Сначала качаем вот это и распаковываем в папку C:CapNum
Обратите внимание, я в скрипте ввёл свои сокращения (мне так удобнее) t0 t3
И если будете копировать только кусок скрипта то и шапку копируйте.
https://pastebin.mozilla.org/8867297
to be continued…
Отредактировано PRESIDENT (19-04-2016 18:30:59)
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
№35217-02-2016 20:34:26
- PRESIDENT
- Участник
- Группа: Members
- Зарегистрирован: 09-04-2015
- Сообщений: 885
- UA:
44.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Сессия рекапчи живет 2 минуты, тебе нужно за это время успеть с капчой совладать.
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
№35317-02-2016 22:08:57
- mmmaks2004
- Участник
- Группа: Members
- Зарегистрирован: 24-03-2015
- Сообщений: 50
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Romstar08
Аудио капчу Solvemedia пробовал распознать?
Отсутствует
№35418-02-2016 06:27:30
- Shkiperr88
- Участник
- Группа: Members
- Зарегистрирован: 17-02-2016
- Сообщений: 7
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
PRESIDENT пишет
Сессия рекапчи живет 2 минуты
рекапча сразу обновляется, как только скриншотишь ее
Отсутствует
№35518-02-2016 10:03:22
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Shkiperr88
У меня такая строчка, ничего не обновляет, как ушла, так и пришла и вставилось все нормально
Отсутствует
№35618-02-2016 10:57:18
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Мэтры, объясните пожалуйста такую непонятку.
скрытый текст
У меня скрипт решает капчу, через гугло поиск,
насколько эффективно, другой вопрос, нормально, меня устраивает.
Иногда капча повисает, выдает ошибку как на картинке, и скрипт решает ее
количество раз, сколько задано в алгоритме, капча не обновляется, скрипт
«решает» только ее.
Ошибка такая:
Ошибка:недействительные параметры API. Перезагрузите страницу.
Можно ли это обойти?
Спасибо.
Отредактировано Egorushka1974 (18-02-2016 11:12:24)
Отсутствует
№35718-02-2016 11:21:44
- melena083
- Забанен
- Группа: Members
- Зарегистрирован: 15-12-2015
- Сообщений: 26
- UA:
8.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Egorushka1974
скрытый текст
один из вариантов значение za конечно своё у тебя будет(это пример просто)
скрытый текст
у тебя на картинке ясно видно что просит сделать не одно задание или выбрать все картинки и тогда капча не поменяется так как ответ по ней не дан полностью,тогда поможет вот это(значение ‘style=»outline’ подходит ко всем этим трем требованиям что появляются в низу капчи),и капча сменится,а так просто пока у тебя скрипт гонял картинки по гуглу сессия сгорела уже,и тогда тебе просто нужно перезапустить страницу всего сайта и все по новой делать
Отредактировано melena083 (18-02-2016 11:57:06)
Отсутствует
№35818-02-2016 11:32:16
- Shkiperr88
- Участник
- Группа: Members
- Зарегистрирован: 17-02-2016
- Сообщений: 7
- UA:
44.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Egorushka1974 пишет
скрытый текст
у меня таким образом только подложку, без картинок скриншотит(( а с предыдущей строчкой
капчу копирует, но она обновляется, сразу как скопировал. Даже не знаю что и делать
Отсутствует
№35918-02-2016 12:08:07
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
melena083
спасибо за подсказки, буду реализовывать.
Что касается сгоревшей капчи, пока по гуглопоиску гоняет, если не решилась капча, то она обновляется, а ищет он секунд за 40 все 9 картинок.
Но все равно спасибо.
Добавлено 18-02-2016 12:14:10
Shkiperr88 пишет
капчу копирует, но она обновляется, сразу как скопировал.
Может я ошибаюсь, посмотри нет ли у тебя после копирования такого «#recaptcha-reload-button» BUTTON=0
может потому и обновляет, а вообще выложи кусок кода до и после копирования, посмотрит народ.
И глянь первые посты ветки, там рабочий скрипт лежит от ПРЕЗИДЕНТА, сравни со своим.
Отредактировано Egorushka1974 (18-02-2016 12:17:54)
Отсутствует
№36018-02-2016 12:31:03
- melena083
- Забанен
- Группа: Members
- Зарегистрирован: 15-12-2015
- Сообщений: 26
- UA:
27.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Egorushka1974
скрытый текст
я это и имел ввиду что когда нет возможности найти правильный ответ тогда капча и стоит на месте без обновления,ну к примеру просит выбрать все картинки а гугл не дает тебе их все для ответа вот тогда и сгорает сессия так как капча всё время стоит одна и таже,в таких случаях можно просто даже не перезагружать капчу а просто во втором варианте(что выложил)не делать перезапуск капчи а добавить ещё один ответ по картинке любой и она сама обновится сразу,это тоже хорошо срабатывает и есть вариант попадания на верный ответ,так что думай сам это так мысли вслух
Отредактировано melena083 (18-02-2016 12:42:49)
Отсутствует
№36118-02-2016 12:55:42
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
melena083
melena083 пишет
а знаки ,улицы,указатели можно вообще пропускать вставив вот такое на пример
скрытый текст
Спасибо за науку, на это у меня есть может не такое изящное, но решение, у меня есть
набор ключевых слов из заголовков капчей, по которым скрипт определяет, что решать, и там
если есть ключевое слово, скрипт решает капчу через гуглопоиск, если нет он обновляет капчу.
дорожные знаки и улицы и указатели в ключевых словах отсутствуют, их скрипт игнорирует.
Там зависит все от того насколько точно подобраны эти слова, но за 5 попыток решается в итоге 80% капчей.
Отсутствует
№36218-02-2016 12:57:18
- raileb
- Участник
- Группа: Members
- Зарегистрирован: 18-02-2016
- Сообщений: 3
- UA:
47.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Отредактировано raileb (18-02-2016 15:58:02)
Отсутствует
№36318-02-2016 13:01:14
- Shkiperr88
- Участник
- Группа: Members
- Зарегистрирован: 17-02-2016
- Сообщений: 7
- UA:
44.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
вот код
Отредактировано Shkiperr88 (18-02-2016 13:33:10)
Отсутствует
№36418-02-2016 13:07:05
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
raileb пишет
при воспроизведении кода, галочка не ставится
какой код вы используете для нажатия на галочку?
Нужно еще номер фрейма найти, без него не видит.
Посмотри первый пост ветки, там все есть.
Добавлено 18-02-2016 13:08:58
Shkiperr88
Код запихай в спойлер, админ будет ругаться.
Выдели все нажми Code потом еще раз все выдели и нажми Spoiler
Отредактировано Egorushka1974 (18-02-2016 13:09:29)
Отсутствует
№36518-02-2016 13:18:38
- melena083
- Забанен
- Группа: Members
- Зарегистрирован: 15-12-2015
- Сообщений: 26
- UA:
27.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Egorushka1974
скрытый текст
я видел твой код,ты его выкладывал,это уже дело вкуса,просто дал совет и всё,зачем к примеру столько парса в скрипте если всё это можно и не проделывать а только то что нужно,но это только мнение а не совет,я не пошол таким путем по разгадыванию рекапчи, но твой вариант отличный скажу не кривя,
вот кто то спрашивал по звуковой проверке рекапчи,тут осталось вам сделать сущие пустяки практически,всё уже есть и не в одном варианте, тоже просто набросок ,решать каждому самому,нужен или нет
Отредактировано melena083 (18-02-2016 13:20:50)
Отсутствует
№36618-02-2016 13:32:05
- Shkiperr88
- Участник
- Группа: Members
- Зарегистрирован: 17-02-2016
- Сообщений: 7
- UA:
44.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Отсутствует
№36718-02-2016 13:33:12
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
melena083
скрытый текст
Если честно, код не мой. Я писал в том посте. Я довольно посредственный программист, так чужое почистить, протестировать,
логику работы проверить, ошибки поискать. Автор скрипта известен под ником mmmaks2004 на форуме.
У нас с ним симбиоз, он мне скрипт, я его гоняю, ищу глюки, ошибки, он правит, пользуемся оба.
Ну и на форуме по скрипту вопросы задаю, конечно многому, чего раньше не умел, научился, но пока создать
нечто подобного уровня неспособен.
Я увы тока через пару лет до этого уровня дойду.
Звуковая капча у нас тоже есть, даже объединена в один скрипт, если картинками не сломали решает звуковую, или
всякие знаки указатели на нее переводим.
не смотря на все ваши подсказки с ПРЕЗИДЕНТОМ, пока не получается повторить ваш результат по рекапче.
Отсутствует
№36818-02-2016 16:41:14
- Koks
- Участник
- Группа: Members
- Зарегистрирован: 02-10-2015
- Сообщений: 151
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
melena083
я правильно вставил этот код?
браузер начинает вылетать
заменил на этот код перестал вылетать
Отредактировано Koks (18-02-2016 18:29:36)
Отсутствует
№36918-02-2016 18:43:12
- PRESIDENT
- Участник
- Группа: Members
- Зарегистрирован: 09-04-2015
- Сообщений: 885
- UA:
44.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Почувствуй себя богатым !!!
Один из вариантов взлома капчь.
Наблюдайте и радуйтесь как растёт баланс.
Что за фигня не знаю, но баланс растёт прикольно.
Просто кто то в личку просил тамошнюю детскую капчу сломать,
вот я игрался, сразу и скриптик сляпал.
А капча там действительно детская,
вот бы везде такая была, был бы рай для ботов.
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
№37018-02-2016 18:54:28
- melena083
- Забанен
- Группа: Members
- Зарегистрирован: 15-12-2015
- Сообщений: 26
- UA:
27.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Koks
скрытый текст
всё правильно ,я же не говорил что именно этот код подойдет тебе,а как вариант просто дал,у меня к примеру вот смотри и фрейм капчи совсем по иному ищется ,и этот вариант работает именно с капчами которые на сайте только девять картинок высвечивают и не каких больше,постоянно девять ,а браузер у тебя даже и не понимаю причем тут выбрасывает,что то не то ты говоришь,причем тут уже браузер если у тебя уже стоит капча на сайте и ты по ней уже работаешь ,смотри значить где то функция смены у тебя завалялась между строк,а для такой как у меня идет код то и подменивать его не нужно,она всегда будет стоять такая
Отредактировано melena083 (18-02-2016 18:59:53)
Отсутствует
№37118-02-2016 19:38:37
- Koks
- Участник
- Группа: Members
- Зарегистрирован: 02-10-2015
- Сообщений: 151
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
melena083
зато мой вариант и с 16 картинками справляется
Отсутствует
№37218-02-2016 20:08:48
- dvitkovs
- Участник
- Группа: Members
- Зарегистрирован: 08-11-2015
- Сообщений: 266
- UA:
25.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Здравствуйте! На счет флеш-плеер-капчи на солвемедия. Вот можно вызывать эту капчу (кнопку Плей) разными способами. Например сменой IP-адреса и подменой юзер агента. Есть и другие способы, более мудрёные.
Но как быть если сайт никогда не выдает Плей-флеш-солвемедия-капчу, даже не смотря на смену IP и подмену агента. Может ли быть такое, чтоб адимны сайта просто-напросто ставили запрет у себя на серваках появляться такой Плей-капче на сайтах?
Можно ли, в принципе, как-то вызывaть Плей-солвемедия капчу на таких сайтах, где кнопка Плей никогда не появляется в обычных условиях?
Отредактировано dvitkovs (18-02-2016 23:36:24)
Отсутствует
№37318-02-2016 20:14:06
- melena083
- Забанен
- Группа: Members
- Зарегистрирован: 15-12-2015
- Сообщений: 26
- UA:
27.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Koks я тебе в личку отправил видео,думаю так будет понятней
Отсутствует
№37418-02-2016 21:31:59
- Egorushka1974
- Участник
- Группа: Members
- Зарегистрирован: 07-05-2015
- Сообщений: 180
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
PRESIDENT пишет
Чёто сайт фигня какая то, но ради прикола регнитесь, это 10 сек займёт, и запустите скрипт
скрытый текст
Фигня полная, скрипт наколотил 7500 рэ минут за 15, а потом началось, купите рефералов, бла бла бла…………..
Отсутствует
№37518-02-2016 21:49:38
- PRESIDENT
- Участник
- Группа: Members
- Зарегистрирован: 09-04-2015
- Сообщений: 885
- UA:
44.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Egorushka1974
Смысл поста, показать один из вариантов взлома капчи, хотя там и ломать то нечего
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
№37619-02-2016 09:51:41
- Shkiperr88
- Участник
- Группа: Members
- Зарегистрирован: 17-02-2016
- Сообщений: 7
- UA:
48.0
Re: iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media.
Подскажите а как отлавливать такие кнопки?
Отредактировано Shkiperr88 (19-02-2016 09:52:36)
Отсутствует
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
В этом документе указаны некоторые коды ошибок и сообщения о них, получаемые от API Google. В список включены те ошибки, которые относятся к глобальному (используемому по умолчанию) домену для API Google. Многие API также определяют собственные домены, в которых могут быть свои ошибки, отсутствующие в глобальном домене. У таких ошибок в ответе JSON будет указано значение свойства domain
, относящееся к конкретному API, например youtube.parameter
.
На этой странице перечислены ошибки, систематизированные по кодам статуса HTTP, определения которых приведены в спецификации RFC 7231.
Вот пример ответа JSON, передающего информацию об ошибке, относящейся к глобальному домену:
{ "error": { "errors": [ { "domain": "global", "reason": "invalidParameter", "message": "Invalid string value: 'asdf'. Allowed values: [mostpopular]", "locationType": "parameter", "location": "chart" } ], "code": 400, "message": "Invalid string value: 'asdf'. Allowed values: [mostpopular]" } }
Ошибки
- MOVED_PERMANENTLY (301)
- SEE_OTHER (303)
- NOT_MODIFIED (304)
- TEMPORARY_REDIRECT (307)
- BAD_REQUEST (400)
- UNAUTHORIZED (401)
- PAYMENT_REQUIRED (402)
- FORBIDDEN (403)
- NOT_FOUND (404)
- METHOD_NOT_ALLOWED (405)
- CONFLICT (409)
- GONE (410)
- PRECONDITION_FAILED (412)
- REQUEST_ENTITY_TOO_LARGE (413)
- REQUESTED_RANGE_NOT_SATISFIABLE (416)
- EXPECTATION_FAILED (417)
- PRECONDITION_REQUIRED (428)
- TOO_MANY_REQUESTS (429)
- INTERNAL_SERVER_ERROR (500)
- NOT_IMPLEMENTED (501)
- SERVICE_UNAVAILABLE (503)
MOVED_PERMANENTLY (301)
Код ошибки | Описание |
---|---|
movedPermanently |
Запрос был отправлен на URL, который больше нельзя использовать. Все запросы для той же операции теперь необходимо отправлять на URL, указанный в заголовке Location полученного ответа. |
SEE_OTHER (303)
Код ошибки | Описание |
---|---|
seeOther |
Запрос успешно обработан. Чтобы получить ответ, отправьте запрос GET на URL, указанный в заголовке Location . |
mediaDownloadRedirect |
Запрос успешно обработан. Чтобы получить ответ, отправьте запрос GET на URL, указанный в заголовке Location . |
NOT_MODIFIED (304)
Код ошибки | Описание |
---|---|
notModified |
Условие, заданное для заголовка If-None-Match, не было выполнено. Этот ответ означает, что запрошенный документ не был изменен и что должен быть получен кешированный ответ. Проверьте значение заголовка If-None-Match в HTTP-запросе. |
TEMPORARY_REDIRECT (307)
Код ошибки | Описание |
---|---|
temporaryRedirect |
Чтобы ваш запрос был обработан, повторно отправьте его на URL, указанный в заголовке Location этого ответа. |
BAD_REQUEST (400)
Код ошибки | Описание |
---|---|
badRequest |
Запрос к API недействителен или неправильно сформирован. Поэтому сервер API не может его распознать. |
badBinaryDomainRequest |
Двоичный запрос к домену недействителен. |
badContent |
Тип данных запроса или тип контента части пакетного запроса не поддерживается. |
badLockedDomainRequest |
Запрос к заблокированному домену недействителен. |
corsRequestWithXOrigin |
Запрос CORS содержит заголовок X-Origin XD3, то есть этот запрос составлен неправильно. |
endpointConstraintMismatch |
Обработать запрос не удалось, так как он не соответствует указанному API. Убедитесь, что вы указали правильный URL. |
invalid |
Обработать запрос не удалось, так как он содержал недопустимое значение. Это может быть значение параметра, заголовка или свойства. |
invalidAltValue |
В значении параметра alt указан неизвестный формат вывода. |
invalidHeader |
Обработать запрос не удалось, так как он содержал недопустимый заголовок. |
invalidParameter |
Обработать запрос не удалось, так как он содержал недопустимый параметр или значение параметра. Чтобы определить, какие параметры можно использовать для запроса, изучите документацию API. |
invalidQuery |
Запрос недействителен. Узнайте, какие параметры можно использовать для запроса, и убедитесь, что запрос не содержит недопустимую комбинацию параметров или недействительные значения параметров. Для этого изучите документацию API. Проверьте значение параметра q . |
keyExpired |
Срок действия ключа API, указанного в запросе, истек. Это означает, что сервер API не может проверить лимит квоты для приложения, отправляющего запрос. Чтобы узнать больше или получить новый ключ, перейдите в Google Developers Console. |
keyInvalid |
Указанный в запросе ключ API недействителен. Это означает, что сервер API не может проверить лимит квоты для приложения, отправляющего запрос. Попробуйте найти ключ с помощью Google Developers Console или получите новый. |
lockedDomainCreationFailure |
Токен OAuth был получен в строке запроса. API запрещает это для всех форматов ответа, кроме JSON и XML. Попробуйте отправить токен OAuth в заголовке Authorization. |
notDownload |
На URL типа /download/* могут быть отправлены только запросы на скачивание мультимедиа. Отправьте запрос на тот же адрес, но без префикса /download . |
notUpload |
На URI с префиксом /upload/* можно отправлять только запросы на загрузку. Ваш запрос не относится к их числу, поэтому обработать его не удалось. Отправьте запрос на тот же адрес, но без префикса /upload . |
parseError |
Сервер API не может обработать тело запроса. |
required |
В запросе отсутствует обязательная информация. Возможно, это параметр или свойство ресурса. |
tooManyParts |
Обработать пакетный запрос не удалось, так как в нем слишком много частей. |
unknownApi |
API, к которому обращается запрос, не распознан. |
unsupportedMediaProtocol |
Медиапротокол клиента не поддерживается. |
unsupportedOutputFormat |
В значении параметра alt указан формат вывода, который не поддерживается этим сервисом. Проверьте значение параметра запроса alt . |
wrongUrlForUpload |
Обработать запрос на загрузку не удалось из-за неправильного URI. Такие запросы можно отправлять только на URI с префиксом /upload/* . Отправьте запрос на тот же адрес, но с префиксом /upload . |
Код ошибки | Описание |
---|---|
unauthorized |
У пользователя нет прав для выполнения этого запроса. |
authError |
Для запроса указаны неправильные учетные данные. Проверьте значение заголовка Authorization в HTTP-запросе. |
expired |
Время сеанса истекло. Проверьте значение заголовка Authorization в HTTP-запросе. |
lockedDomainExpired |
Обработать запрос не удалось, так как истек срок действия заблокированного домена. |
required |
Для выполнения этого запроса к API пользователю необходимо войти в систему. Проверьте значение заголовка Authorization в HTTP-запросе. |
PAYMENT_REQUIRED (402)
Код ошибки | Описание |
---|---|
dailyLimitExceeded402 |
Достигнут дневной лимит бюджета, установленный разработчиком. |
quotaExceeded402 |
Для запрошенной операции необходимо больше ресурсов, чем доступно по квоте. Чтобы выполнить эту операцию, требуется платеж. |
user402 |
Чтобы выполнить запрошенную операцию, требуется платеж от аутентифицированного пользователя. |
FORBIDDEN (403)
Код ошибки | Описание |
---|---|
forbidden |
Запрошенная операция запрещена, и ее нельзя завершить. |
accessNotConfigured |
Для вашего проекта не настроен доступ к этому API. Активируйте API для проекта в Google Developers Console. |
accessNotConfigured |
Проект заблокирован из-за нарушения правил. См. http://support.google.com/code/go/developer_compliance. |
accessNotConfigured |
Проект подлежит удалению. |
accountDeleted |
Аккаунт, связанный с указанными в запросе учетными данными, был удален. Проверьте значение заголовка Authorization в HTTP-запросе. |
accountDisabled |
Аккаунт, связанный с указанными в запросе учетными данными, был отключен. Проверьте значение заголовка Authorization в HTTP-запросе. |
accountUnverified |
Адрес электронной почты пользователя, делающего запрос, не подтвержден. Проверьте значение заголовка Authorization в HTTP-запросе. |
concurrentLimitExceeded |
Обработать запрос не удалось, так как достигнут лимит параллельных соединений. |
dailyLimitExceeded |
Достигнут ежедневный лимит квоты для API. |
dailyLimitExceeded |
Достигнут ежедневный лимит квоты, и проект заблокирован из-за нарушения правил. Подробную информацию можно найти на форуме поддержки по правилам API Google. |
dailyLimitExceededUnreg |
Обработать запрос не удалось, так как достигнут предел анонимного использования API в день. Чтобы продолжить работу с API, войдите в Google Developers Console. |
downloadServiceForbidden |
API не поддерживает скачивание. |
insufficientAudience |
Запрос не может быть выполнен для этой аудитории. |
insufficientAuthorizedParty |
Запрос не может быть выполнен для этого приложения. |
insufficientPermissions |
У аутентифицированного пользователя недостаточно прав для выполнения этого запроса. |
limitExceeded |
Запрос нельзя выполнить из-за ограничений по доступу или частоте. |
lockedDomainForbidden |
API не поддерживает заблокированные домены. |
quotaExceeded |
Для запрошенной операции необходимо больше ресурсов, чем доступно по квоте. |
rateLimitExceeded |
В течение определенного промежутка времени было отправлено слишком много запросов. |
rateLimitExceededUnreg |
Превышен лимит частоты запросов. Чтобы продолжить использование API, зарегистрируйте приложение. Для этого создайте аккаунт, используя Google Developers Console. |
responseTooLarge |
Невозможно получить запрошенный ресурс, так как его размер слишком велик. |
servingLimitExceeded |
Достигнут лимит на частоту запросов для этого API. |
sslRequired |
Эта операция возможна только с применением SSL. |
unknownAuth |
Сервер API не распознает схему авторизации, используемую для запроса. Проверьте значение заголовка Authorization в HTTP-запросе. |
userRateLimitExceeded |
Обработать запрос не удалось, так как частота запросов от этого пользователя превышает допустимую. |
userRateLimitExceededUnreg |
Обработать запрос не удалось, так как достигнут предел частоты запросов от этого пользователя и в запросе не указан разработчик клиента. Создайте проект для вашего приложения в Google Developer Console (https://console.developers.google.com). |
variableTermExpiredDailyExceeded |
Обработать запрос не удалось, так как истек срок действия временной квоты и была исчерпана стандартная дневная. |
variableTermLimitExceeded |
Обработать запрос не удалось, так как была исчерпана временная квота, действующая в указанный период. |
NOT_FOUND (404)
Код ошибки | Описание |
---|---|
notFound |
Не удалось выполнить операцию, так как не найден ресурс, указанный в запросе. |
notFound |
Не найден ресурс, указанный в запросе. Если вы не пользовались этим API в последние две недели, выполните повторное развертывание приложения App Engine и попробуйте вызвать API ещё раз. |
unsupportedProtocol |
Не поддерживается протокол, используемый в запросе. |
METHOD_NOT_ALLOWED (405)
Код ошибки | Описание |
---|---|
httpMethodNotAllowed |
Не поддерживается метод HTTP, связанный с запросом. |
CONFLICT (409)
Код ошибки | Описание |
---|---|
conflict |
Не удалось выполнить запрос к API, так как запрошенная операция может вызвать конфликт с уже существующим объектом. Например, это случается, если запрашивается создание повторяющегося элемента, однако при таких конфликтах, как правило, ошибки диагностируются более конкретно. |
duplicate |
Не удалось выполнить запрошенную операцию, так как она требует создания уже существующего ресурса. |
GONE (410)
Код ошибки | Описание |
---|---|
deleted |
Обработать запрос не удалось, так как указанный в нем ресурс был удален. |
PRECONDITION_FAILED (412)
Код ошибки | Описание |
---|---|
conditionNotMet |
Не было выполнено условие, заданное для заголовка If-Match или If-None-Match в HTTP-запросе. Чтобы узнать больше, прочитайте раздел ETag спецификации HTTP. Проверьте значение заголовка If-Match . |
REQUEST_ENTITY_TOO_LARGE (413)
Код ошибки | Описание |
---|---|
backendRequestTooLarge |
Слишком большой запрос. |
batchSizeTooLarge |
Пакетный запрос содержит слишком много элементов. |
uploadTooLarge |
Обработать запрос не удалось, так как в нем слишком много данных. |
REQUESTED_RANGE_NOT_SATISFIABLE (416)
Код ошибки | Описание |
---|---|
requestedRangeNotSatisfiable |
В запросе указан недопустимый диапазон. |
EXPECTATION_FAILED (417)
Код ошибки | Описание |
---|---|
expectationFailed |
Сервер не может выполнить запрос клиента. |
PRECONDITION_REQUIRED (428)
Код ошибки | Описание |
---|---|
preconditionRequired |
Запрос должен содержать условие. Укажите в запросе заголовки If-Match или If-None-Match , чтобы он был успешно обработан. |
TOO_MANY_REQUESTS (429)
Код ошибки | Описание |
---|---|
rateLimitExceeded |
В течение определенного промежутка времени отправлено слишком много запросов. |
INTERNAL_SERVER_ERROR (500)
Код ошибки | Описание |
---|---|
internalError |
Не удалось обработать запрос из-за внутренней ошибки. |
NOT_IMPLEMENTED (501)
Код ошибки | Описание |
---|---|
notImplemented |
Запрошенная операция не была реализована. |
unsupportedMethod |
Обработать запрос не удалось, так как для этого необходимо выполнить неизвестный метод или операцию. |
SERVICE_UNAVAILABLE (503)
Код ошибки | Описание |
---|---|
backendError |
Произошла ошибка серверного кода. |
backendNotConnected |
Обработать запрос не удалось из-за ошибки подключения. |
notReady |
Сервер API не готов принимать запросы. |
Ошибки, связанные непосредственно с Indexing API
Во всех описанных ниже ситуациях запрос отклоняется, а Googlebot не сканирует соответствующий URL. То же происходит в случае основных ошибок.
BAD_REQUEST (400)
Сообщение об ошибке | Описание |
---|---|
Missing attribute. 'url' attribute is required. |
Пользователь не указал URL в запросе. |
Invalid attribute. 'url' is not in standard URL format |
Пользователь ввел некорректный URL, например «abcd». |
Unknown type. 'type' attribute is required and must be 'URL_REMOVED' or 'URL_UPDATED'. |
Пользователь не указал тип уведомления. |
Invalid value at 'url_notification.type' (TYPE_ENUM) |
Пользователь указал в типе уведомления не URL_REMOVED или URL_UPDATED , а другое значение. |
FORBIDDEN (403)
Сообщение об ошибке | Описание |
---|---|
Permission denied. Failed to verify the URL ownership. |
Пользователь не прошел процедуру подтверждения права собственности или пытается обновить URL, который ему не принадлежит. |
TOO_MANY_REQUESTS (429)
Сообщение об ошибке | Описание |
---|---|
Insufficient tokens for quota 'indexing.googleapis.com/default_requests' |
Пользователь исчерпал свою квоту Indexing API. |
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2022-03-29 UTC.
Содержание:
- Общие сведения
- Формат ошибок
- Формат ответа методов API в случае ошибок
- Структура ответа
- Описание параметров
- Формат ответа методов API в случае ошибок
- Описание общих ошибок API
Общие сведения
В документе описан формат ошибок методов API, а также приведен перечень общих ошибок, которые могут возникать при обращении к методам API.
Формат ошибок
Формат ответа методов API в случае ошибок
Структура ответа
- JSON
- XML
{ "metadata":{ "status":400, "detail":"abc", "generated_at":"2015-06-18 12:37:28" }, "errors":[ { "code":281016, "title":"ошибка упрощённой отправки", "detail":"контрагент с минимальным набором данных не может быть отправителем по заказу", "link":"https://dev.dellin.ru/api/ordering/request/#error_281016", "fields":["receiver"] }, { "code":281017, "title":"Недопустимое значение параметра", "detail":"Данный параметр может содержать только значения из списка доступных значений", "link":"https://dev.dellin.ru/api/ordering/request/#error_281017", "fields":["requester"], "validValues":[1, 2, 3] }, { "code":117004, "title":"значение не найдено в справочнике", "detail":"необходимо выбрать значение из соответствующего справочника", "link":"https://dev.dellin.ru/calculation/pickup/#error_117004", "fields":["requester"], "badValues":["0xa77fcf6a449164ed490133777a68bd00"] } ] }
<response> <metadata> <status>400</status> <detail>abc</detail> <generated_at>2015-06-18 12:37:28</generated_at> </metadata> <errors> <code>281016</code> <title>ошибка упрощённой отправки</title> <detail>контрагент с минимальным набором данных не может быть отправителем по заказу</detail> <link>https://dev.dellin.ru/api/ordering/request/#error_281016</link> <fields>receiver</fields> </errors> <errors> <code>281017</code> <title>Недопустимое значение параметра</title> <detail>Данный параметр может содержать только значения из списка доступных значений</detail> <link>https://dev.dellin.ru/api/ordering/request/#error_281017</link> <fields>requester</fields> <validValues>1</validValues> <validValues>2</validValues> <validValues>3</validValues> </errors> <errors> <code>117004</code> <title>значение не найдено в справочнике</title> <detail>необходимо выбрать значение из соответствующего справочника</detail> <link>https://dev.dellin.ru/calculation/pickup/#error_117004</link> <fields>requester</fields> <badValues>0xa77fcf6a449164ed490133777a68bd00</badValues> </errors> </response>
Описание параметров
Response | ||
---|---|---|
Параметр | Тип | Описание |
metadata | object | Информация об оформленной заявке |
metadata.status | integer |
Эмуляция http-кода состояния |
metadata.detail | string | Текстовое описание ответа сервера |
metadata.generated_at | string | Дата и время генерации ответа сервера |
errors | array of Response.Errors | Перечень ошибок |
Response.Errors | ||
---|---|---|
Параметр | Тип | Описание |
code | integer | Номер ошибки |
title | string |
Краткое описание ошибки |
detail | string | Детальное описание ошибки |
link | string | Ссылка на документацию |
fields | array of string | Список параметров в запросе к методу, вызвавших ошибку |
validValues | array of string | Список доступных значений параметра |
badValues | array of string | Список ошибочных значений, переданных в параметре |
Номер ошибки | http-код | Краткое описание ошибки | Детальное описание ошибки |
---|---|---|---|
100001 |
415 | Некорректный content-type | Допустимые значения content-type: application/json (стандарт RFC4627) и text/xml (стандарт RFC3023) |
100002 |
404 | Метод не найден | Проверьте правильность адреса метода |
100003 |
410 | Метод отключен | Запрошенный метод более не доступен |
100004 |
403 | Отсутствует доступ к методу | Доступ к методу предоставляется по требованию. Для получения доступа обратитесь к персональному менеджеру или в техническую поддержку |
100005 |
429 | Количество запросов к превышено | Превышена допустимая частота запросов. Для увеличения лимита обратитесь к персональному менеджеру или в техническую поддержку |
100006 |
500 | Внутренняя ошибка сервера | Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки |
101001 |
401 | Требуется авторизация | Не передан API-ключ |
101002 |
401 | Требуется авторизация | Передан недействительный API-ключ |
101003 |
401 | Требуется авторизация | Требуется передать параметр sessionID |
101004 |
401 | Требуется авторизация | Время жизни сессии истекло |
101005 |
401 | Требуется авторизация | Сессия не найдена или создана с другим API-ключом |
101006 |
401 | Требуется авторизация | Неверный логин или пароль |
101007 |
401 | Требуется авторизация | API-ключ заблокирован. Обратитесь в техническую поддержку |
101008 |
401 | Ошибка парсинга | Запрос не соответствует формату json |
101009 |
401 | Ошибка парсинга | Запрос не соответствует формату xml |
110001 |
400 | Неверный формат параметра | Значение, переданное в параметре, не соответствует требуемому формату |
110002 |
400 | Ошибка типизации | Значение, переданное в параметре, имеет некорректный тип |
110003 |
400 | Отсутствует обязательный параметр | Отсутствует обязательный параметр |
110004 |
400 | Не передан ни один из обязательных параметров | В запросе должен присутствовать хотя бы один параметр из совокупности, однако не указано ни одного |
110005 |
400 | Допустима передача только одного из параметров | Указаны взаимоисключающие параметры, только один из которых может присутствовать в запросе |
110006 |
400 | Превышено ограничение на длину списка | Количество элементов в списке превышает максимально допустимое |
110007 |
400 | Объект не существует | Не найден объект с указанным ID. Проверьте правильность переданного значения |
110008 |
400 | Недопустимый набор параметров | Указанные параметры не должны участвовать в запросе |
120001 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки (Причина: Сервис calculateCustomers не отвечает) |
120002 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки (Причина: Сервис calculateCustomers вернул неизвестную ошибку) |
120101 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки (Причина: Сервис calculateCustomersV2 не отвечает) |
120102 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки (Причина: Сервис calculateCustomersV2 вернул неизвестную ошибку) |
120201 |
400 | Ошибка в параметрах запроса |
Переданы неправильные параметры в запрос (Причина: Переданы некорректные данные в getOrdersTracker) |
120301 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки (Причина: Сервис getPaymentsByOrders не отвечает) |
121001 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки |
121002 |
500 | Внутренняя ошибка сервера |
Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки |
130001 |
500 | Внутренняя ошибка сервера | Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки |
130002 |
400 | Ошибка выполнения запроса | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130003 |
400 | Указан некорректный документ, удостоверяющий личность | Проверьте правильность переданных значений |
130004 |
400 | Не передан ни один из обязательных параметров |
В запросе должен присутствовать хотя бы один параметр из совокупности, однако не указано ни одного |
130005 |
400 | Отсутствует обязательный параметр | Отсутствует обязательный параметр |
130006 |
400 | Значение превышает допустимое | Габариты превышают допустимые размеры |
130007 |
400 | Неверный формат параметра | Значение, переданное в параметре, не соответствует требуемому формату |
130008 |
400 |
Недопустимое значение параметра | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130009 |
400 | Превышено ограничение на длину значения | Превышена максимально допустимая длина значения поля |
130010 |
400 | Отсутствует согласие с тарифами и правилами перевозки | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130014 |
400 | Ошибка наложенного платежа | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130015 |
400 | Ошибка оформления услуги | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130017 |
400 | Невозможно оформить заявку на указанное время | — |
130021 |
400 | Услуга недоступна | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130022 |
400 | Указан некорректный адрес | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
130023 |
400 | Выбран недопустимый терминал | Выбран недопустимый терминал |
130024 |
400 | Превышено ограничение на длину списка | Превышено максимальное количество контрагентов в адресной книге (10000). Необходимо удалить часть записей или обратиться в службу поддержки |
150001 |
500 | Внутренняя ошибка сервера | Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки |
150002 |
500 | Внутренняя ошибка сервера | Попробуйте вызвать метод через некоторое время. При повторении ошибки обратитесь в службу поддержки |
180001 |
400 | Указан некорректный документ, удостоверяющий личность | Проверьте правильность переданных значений |
180002 |
400 | Указан некорректный адрес | Указан некорректный адрес |
180003 |
400 | Выбран недопустимый терминал | Выбранный терминал не может принять груз с указанными ВГХ |
180004 |
400 | Услуга недоступна | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180005 |
400 | Значение превышает допустимое | Весогабаритные характеристики груза превышают допустимые для приёма на терминалах города |
180006 |
400 | Ошибка в параметрах запроса | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180007 |
400 | Недопустимое значение параметра | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180008 |
400 | Ошибка упрощенной отправки | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180009 |
400 | Ошибка оформления услуги Доставка в день заказа | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180010 |
400 | Ошибка оформления услуги Доставка в точное время | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180011 |
400 | Указан некорректный период работы | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180012 |
400 | Выбранная дата недоступна | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180013 |
400 | Ошибка параметров оплаты | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180014 |
400 | Ошибка наложенного платежа | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180015 |
400 | Ошибка оформления услуги | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180016 |
400 | Ошибка при сохранении заявки | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
180017 |
400 | Невозможно оформить заявку на указанное время | Детальное описание ошибки содержит уточняющую информацию. Текст варьируется в зависимости от проверяемого параметра |
Коды статусов и ошибок
Коды состояния и ошибок — это число в заголовке ответа, который указывает общую классификацию ответа — например, был ли запрос успешным (200), привел ли к ошибке сервера (500), были ли проблемы с авторизацией (403), и так далее. Стандартные коды состояния обычно не требуют большого количества документации, но пользовательские коды состояния и ошибки, специфичные для API, нужны. Коды ошибок, в частности, помогают в устранении неисправных запросов.
Содержание раздела
Пример кода статуса в заголовке curl
Где перечислять HTTP-ответ и коды ошибок
Где взять коды статусов и ошибок
Как перечислить коды состояния
Коды состояния и ошибок помогают в устранении неполадок
Примеры кодов статусов и шибок
-
Context.io
-
Twitter
-
Mailchimp
-
Flickr
Практическое занятие: Коды статусов и ошибок
Пример кода статуса в заголовке curl
Коды статусов не отображаются в тебе ответа. Они содержатся в хэдере, который может быть не видим по умолчанию.
Помните, когда мы отправляли обратный вызов в разделе Создание curl запроса? Чтобы получить заголовок ответа, добавляем —include или -i к запросу curl. Если нужно, чтобы в ответе возвращался только заголовок ответа (и ничего больше), используем заглавную букву -I, например:
curl -I -X GET "https://api.openweathermap.org/data/2.5/weather?zip=95050&appid=fd4698c940c6d1da602a70ac34f0b147&units=imperial"
Заголовок ответа выглядит следующим образом:
HTTP/1.1 200 OK Server: openresty Date: Thu, 06 Dec 2018 22:58:41 GMT Content-Type: application/json; charset=utf-8 Content-Length: 446 Connection: keep-alive X-Cache-Key: /data/2.5/weather?units=imperial&zip=95050 Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST
Первая строка, HTTP / 1.1 200 OK
, сообщает нам статус запроса (200
). Большинство API REST следуют стандартному протоколу для заголовков ответов. Например, 200
— это не просто произвольный код, выбранный разработчиками OpenWeatherMap API. 200
— это общепринятый код для успешного HTTP-запроса. (Если изменить метод, то получим другой код состояния.)
С помощью запроса GET довольно легко определить, успешен ли запрос, потому что получаем ожидаемый ответ. Но предположим, делаем запрос POST, PUT или DELETE, когда мы меняем данные, содержащиеся в ресурсе. Как узнать, был ли запрос успешно обработан и получен API? Коды ответа HTTP в заголовке ответа будут указывать, была ли операция успешной. Коды состояния HTTP — это просто сокращения длинных сообщений.
Коды состояния довольно тонкие, но когда разработчик работает с API, коды могут быть единственным «интерфейсом», который имеет разработчик. Если получится контролировать сообщения, которые видит разработчик, это будет большой победой юзабилити.
Слишком часто коды состояния неинформативны, плохо написаны и сообщают мало или вообще никакой полезной информации пользователю для преодоления ошибки. По большому счету, коды состояния должны помогать пользователям в восстановлении после ошибок.
Можно посмотреть список общих кодов состояния REST API здесь и общий список кодов HTTP статусов здесь. Хотя, возможно, было бы полезно включить несколько стандартных кодов состояния, нет необходимости в полном документировании всех стандартных кодов состояния, особенно если они редко запускаются в API.
Где перечислять HTTP-ответ и коды ошибок
Практичнее, если API будут иметь одну страницу с ответами и кодами ошибок ко всему API. Отдельная страница с перечнем кодов состояния (вместо добавления кода состояния в каждую конечную точку) позволяет более детально описать каждый код без переполнения других частей документации. Такой подход уменьшает избыточность и ощущение информационной перегрузки.
С другой стороны, если какие-то коды состояния и ошибок больше подходят к определенным конечным точкам, чем другие, имеет смысл вывести такие коды состояния и ошибок на страницы с описаниями конечных точек.
Такая стратегия может заключаться в том, чтобы привлечь внимание к каким-либо особенно важным кодам состояния или ошибок для конкретной конечной точки, а затем перейти к централизованной странице «Коды ответов и состояний» для получения полной информации.
Где взять коды статусов и шибок
Коды состояния и ошибок могут быть неочевидны в документации API. Вероятно, придется попросить разработчиков предоставить список всех кодов состояния и ошибок, которые уникальны для API. Иногда разработчики хардкодят коды состояния и ошибок непосредственно в программном коде, и у них нет простых способов передать полный список (что также затрудняет локализацию).
В результате может потребоваться танцы с бубнами, чтобы найти все коды. В частности, возможно придется сломать API, чтобы увидеть все возможные коды ошибок. Например, если превысить ограничение скорости для определенного запроса, API может вернуть специальную ошибку или код состояния. Такой пользовательский код обязательно нужно задокументировать. В разделе устранения неполадок в API можно специально разместить примеры получения кодов ошибок.
Как перечислить коды состояния
Коды статусов и ошибок можно привести в виде списка определений или таблицы, например так:
Status code | Значение |
---|---|
200 |
Успешный запрос и ответ |
400 |
Неверно заданные параметры или другой неверный запрос |
Коды состояния и ошибок помогают в устранении неполадок
Коды состояния и ошибок особенно полезны при устранения неполадок. Таким образом, можно рассматривать коды ошибок как дополнение к разделу по устранению неполадок.
Каждая часть документации может быть полезна в разделе, посвященном устранению неполадок. В разделе, посвященном устранению неполадок, можно описать, что происходит, когда пользователи уходят с проторенной дорожки и спотыкаются в темном лесу. Коды состояния похожи на подсказки, которые помогут пользователям вернуться на правильный путь.
В разделе по устранению неполадок можно перечислить сообщения об ошибках, связанных со следующими ситуациями:
- использование неправильных API ключей;
- использование неверных API ключей;
- параметры не соответствуют типам данных;
- API выдает исключение;
- нет данных для возврата ресурса;
- превышен предел скорости;
- параметры находятся за пределами приемлемых максимальной и минимальной границ;
- обязательный параметр отсутствует в конечной точке.
текст ошибки должен точно документироваться, чтобы она легко появлялась при поиске.
Примеры кодов статусов и ошибок
Ниже приведены несколько вариантов разделов с кодами статусов и ошибок.
Context.io
Коды статусов и ошибок Conext.io
Clearbit не только документирует стандартные коды состояния, но также описывает уникальные параметры, возвращаемые их API. Большинство разработчиков, вероятно, знакомы с кодами 200, 400 и 500, поэтому эти коды не требуют много пояснений. Но если API имеет уникальные коды, описывать их нужно адекватно и подробно.
Коды статусов и ошибок Twitter
В Twitter не только описывается код и состояние, но также предоставляется полезная информация по устранению неполадок, потенциально помогая в устранении ошибок. Например, про ошибку 500
не просто сказано, что статус относится к неработающей службе, но и есть объяснение: «Обычно это временная ошибка, например, в ситуации высокой нагрузки или если у конечной точки временно возникают проблемы. Посетите форумы разработчиков на случай, если у других возникнут аналогичные проблемы, или повторите попытку позже».
Полезные сообщения такого рода — то, к чему должны стремиться технические писатели в разделе кодов состояния (по крайней мере, делать описания тех кодов, которые указывают на проблемы)
Mailchimp
Коды статусов и ошибок Mailchimp
Mailchimp предоставляет удобочитаемые и понятные описания сообщений об ошибке. Например, в ошибке 403
вместо того, чтобы просто написать «Запрещено», Mailchimp объясняет причины, по которым можно получить ошибку запрещенного кода. У Mailchimp существует несколько типов ошибок 403. Запрос может быть запрещен из-за отключенной учетной записи пользователя или запроса, направленного не в тот центр обработки данных. В случае ошибки «WrongDataCenter» Mailchimp отмечает, что «она часто связана с неправильно настроенными библиотеками» и ссылается на дополнительную информацию о центрах обработки данных. Такой тип документации кода ошибки очень полезен для пользователей.
Flickr
Коды статусов и ошибок Flikr
В Flickr раздел «Коды ответов» встроен в описание каждой адресной темы API. Описания ошибок выглядят короткими. Хотя встраивание кодов ответов в каждую тему делает коды ошибок более заметными, в некоторых случаях такой подход менее полезен. Поскольку он встроен в каждую тему API, описания кодов ошибок должны быть краткими, иначе их содержимое будет перегружено информацией о запросе конечной точки.
Напротив, отдельная страница с перечнем кодов ошибок позволяет более подробно раскрывать каждый код, не вытесняя другую документацию. Отдельная страница также уменьшает избыточность и увеличивает объем информации.
👨💻 Практическое занятие: Коды статусов и ошибок
В своем найденном опен-сорс проекте найдем информацию о кодах статусов и ошибок. Ответим на следующие вопросы:
- присутствуют описания кодов статусов и ошибок в проекте?
- где находится информация о кодах статусов и ошибок в контексте документации? Как отдельная тема? Ниже каждой конечной точки? Где-нибудь еще?
- имеет ли API какой-либо уникальный код статусов и ошибок?
- помогают ли коды ошибок пользователям восстанавливаться после ошибок?
- сделаем запрос на одну из конечных точек, затем целенаправленно изменим параметр, чтобы сделать недействительный запрос. Какой код статуса возвращается в ответе? Этот код состояния задокументирован?
🔙
Go next ➡
Стандартные коды ошибок:
Ошибка | Значение |
unspecified | Тип ошибки не указан. Подробности смотрите в сообщении. |
invalid_api_key | Указан неправильный ключ доступа к API. Проверьте, совпадает ли значение api_key со значением, указанным в личном кабинете. |
access_denied | Доступ запрещён. Проверьте, включён ли доступ к API в личном кабинете и не обращаетесь ли вы к методу, прав доступа к которому у вас нет. |
unknown_method | Указано неправильное имя метода. |
invalid_arg | Указано неправильное значение одного из аргументов метода. |
not_enough_money | Не хватает денег на счету для выполнения метода. |
retry_later | Временный сбой. Попробуйте ещё раз позднее. |
api_call_limit_exceeded_for_api_key | Сработало ограничение по вызову методов API в единицу времени. На данный момент это 1200 вызовов в минуту. Для метода sendEmail — 60. |
api_call_limit_exceeded_for_ip | Сработало ограничение по вызову методов API в единицу времени. На данный момент это 1200 вызовов в минуту. Для метода sendEmail — 60. |
Частые ошибки без указания типа:
Ошибка | Значение |
«These list ids=»…» has no confirmation letters» | Не создано письмо подтверждение для списка, на который подписывается адресат. Откройте в личном кабинете список контактов на который настроена подписка, внизу слева есть пункт «Инструменты подписки и отписки». Заполните все поля на этой странице и сохраните. Инструкция по созданию письма подтверждения. |
“Contacts test@example.org and +77777777 already exist but owned by different subscribers” | Вы добавляете email и телефон контакта, который уже есть в вашем кабинете. Укажите email или телефон, который не принадлежит другому адресату. |
«Call to a member function getMessage() on boolean» | Вызов осуществляется с одновременным использованием методов GET и POST. Выполняйте запрос только одним из данных методов. |
Кроме этих ошибок, могут быть и другие, указанные в описаниях конкретных методов.
Пример ответа с ошибкой:
{"error":"AK100310-02","code":"invalid_api_key"}
Стандартные коды ошибок:
Ошибка | Значение |
unspecified | Тип ошибки не указан. Подробности смотрите в сообщении. |
invalid_api_key | Указан неправильный ключ доступа к API. Проверьте, совпадает ли значение api_key со значением, указанным в личном кабинете. |
access_denied | Доступ запрещён. Проверьте, включён ли доступ к API в личном кабинете и не обращаетесь ли вы к методу, прав доступа к которому у вас нет. |
unknown_method | Указано неправильное имя метода. |
invalid_arg | Указано неправильное значение одного из аргументов метода. |
not_enough_money | Не хватает денег на счету для выполнения метода. |
retry_later | Временный сбой. Попробуйте ещё раз позднее. |
api_call_limit_exceeded_for_api_key | Сработало ограничение по вызову методов API в единицу времени. На данный момент это 1200 вызовов в минуту. Для метода sendEmail — 60. |
api_call_limit_exceeded_for_ip | Сработало ограничение по вызову методов API в единицу времени. На данный момент это 1200 вызовов в минуту. Для метода sendEmail — 60. |
Частые ошибки без указания типа:
Ошибка | Значение |
«These list ids=»…» has no confirmation letters» | Не создано письмо подтверждение для списка, на который подписывается адресат. Откройте в личном кабинете список контактов на который настроена подписка, внизу слева есть пункт «Инструменты подписки и отписки». Заполните все поля на этой странице и сохраните. Инструкция по созданию письма подтверждения. |
“Contacts test@example.org and +77777777 already exist but owned by different subscribers” | Вы добавляете email и телефон контакта, который уже есть в вашем кабинете. Укажите email или телефон, который не принадлежит другому адресату. |
«Call to a member function getMessage() on boolean» | Вызов осуществляется с одновременным использованием методов GET и POST. Выполняйте запрос только одним из данных методов. |
Кроме этих ошибок, могут быть и другие, указанные в описаниях конкретных методов.
Пример ответа с ошибкой:
{"error":"AK100310-02","code":"invalid_api_key"}
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
В этом документе указаны некоторые коды ошибок и сообщения о них, получаемые от API Google. В список включены те ошибки, которые относятся к глобальному (используемому по умолчанию) домену для API Google. Многие API также определяют собственные домены, в которых могут быть свои ошибки, отсутствующие в глобальном домене. У таких ошибок в ответе JSON будет указано значение свойства domain
, относящееся к конкретному API, например youtube.parameter
.
На этой странице перечислены ошибки, систематизированные по кодам статуса HTTP, определения которых приведены в спецификации RFC 7231.
Вот пример ответа JSON, передающего информацию об ошибке, относящейся к глобальному домену:
{ "error": { "errors": [ { "domain": "global", "reason": "invalidParameter", "message": "Invalid string value: 'asdf'. Allowed values: [mostpopular]", "locationType": "parameter", "location": "chart" } ], "code": 400, "message": "Invalid string value: 'asdf'. Allowed values: [mostpopular]" } }
Ошибки
- MOVED_PERMANENTLY (301)
- SEE_OTHER (303)
- NOT_MODIFIED (304)
- TEMPORARY_REDIRECT (307)
- BAD_REQUEST (400)
- UNAUTHORIZED (401)
- PAYMENT_REQUIRED (402)
- FORBIDDEN (403)
- NOT_FOUND (404)
- METHOD_NOT_ALLOWED (405)
- CONFLICT (409)
- GONE (410)
- PRECONDITION_FAILED (412)
- REQUEST_ENTITY_TOO_LARGE (413)
- REQUESTED_RANGE_NOT_SATISFIABLE (416)
- EXPECTATION_FAILED (417)
- PRECONDITION_REQUIRED (428)
- TOO_MANY_REQUESTS (429)
- INTERNAL_SERVER_ERROR (500)
- NOT_IMPLEMENTED (501)
- SERVICE_UNAVAILABLE (503)
MOVED_PERMANENTLY (301)
Код ошибки | Описание |
---|---|
movedPermanently |
Запрос был отправлен на URL, который больше нельзя использовать. Все запросы для той же операции теперь необходимо отправлять на URL, указанный в заголовке Location полученного ответа. |
SEE_OTHER (303)
Код ошибки | Описание |
---|---|
seeOther |
Запрос успешно обработан. Чтобы получить ответ, отправьте запрос GET на URL, указанный в заголовке Location . |
mediaDownloadRedirect |
Запрос успешно обработан. Чтобы получить ответ, отправьте запрос GET на URL, указанный в заголовке Location . |
NOT_MODIFIED (304)
Код ошибки | Описание |
---|---|
notModified |
Условие, заданное для заголовка If-None-Match, не было выполнено. Этот ответ означает, что запрошенный документ не был изменен и что должен быть получен кешированный ответ. Проверьте значение заголовка If-None-Match в HTTP-запросе. |
TEMPORARY_REDIRECT (307)
Код ошибки | Описание |
---|---|
temporaryRedirect |
Чтобы ваш запрос был обработан, повторно отправьте его на URL, указанный в заголовке Location этого ответа. |
BAD_REQUEST (400)
Код ошибки | Описание |
---|---|
badRequest |
Запрос к API недействителен или неправильно сформирован. Поэтому сервер API не может его распознать. |
badBinaryDomainRequest |
Двоичный запрос к домену недействителен. |
badContent |
Тип данных запроса или тип контента части пакетного запроса не поддерживается. |
badLockedDomainRequest |
Запрос к заблокированному домену недействителен. |
corsRequestWithXOrigin |
Запрос CORS содержит заголовок X-Origin XD3, то есть этот запрос составлен неправильно. |
endpointConstraintMismatch |
Обработать запрос не удалось, так как он не соответствует указанному API. Убедитесь, что вы указали правильный URL. |
invalid |
Обработать запрос не удалось, так как он содержал недопустимое значение. Это может быть значение параметра, заголовка или свойства. |
invalidAltValue |
В значении параметра alt указан неизвестный формат вывода. |
invalidHeader |
Обработать запрос не удалось, так как он содержал недопустимый заголовок. |
invalidParameter |
Обработать запрос не удалось, так как он содержал недопустимый параметр или значение параметра. Чтобы определить, какие параметры можно использовать для запроса, изучите документацию API. |
invalidQuery |
Запрос недействителен. Узнайте, какие параметры можно использовать для запроса, и убедитесь, что запрос не содержит недопустимую комбинацию параметров или недействительные значения параметров. Для этого изучите документацию API. Проверьте значение параметра q . |
keyExpired |
Срок действия ключа API, указанного в запросе, истек. Это означает, что сервер API не может проверить лимит квоты для приложения, отправляющего запрос. Чтобы узнать больше или получить новый ключ, перейдите в Google Developers Console. |
keyInvalid |
Указанный в запросе ключ API недействителен. Это означает, что сервер API не может проверить лимит квоты для приложения, отправляющего запрос. Попробуйте найти ключ с помощью Google Developers Console или получите новый. |
lockedDomainCreationFailure |
Токен OAuth был получен в строке запроса. API запрещает это для всех форматов ответа, кроме JSON и XML. Попробуйте отправить токен OAuth в заголовке Authorization. |
notDownload |
На URL типа /download/* могут быть отправлены только запросы на скачивание мультимедиа. Отправьте запрос на тот же адрес, но без префикса /download . |
notUpload |
На URI с префиксом /upload/* можно отправлять только запросы на загрузку. Ваш запрос не относится к их числу, поэтому обработать его не удалось. Отправьте запрос на тот же адрес, но без префикса /upload . |
parseError |
Сервер API не может обработать тело запроса. |
required |
В запросе отсутствует обязательная информация. Возможно, это параметр или свойство ресурса. |
tooManyParts |
Обработать пакетный запрос не удалось, так как в нем слишком много частей. |
unknownApi |
API, к которому обращается запрос, не распознан. |
unsupportedMediaProtocol |
Медиапротокол клиента не поддерживается. |
unsupportedOutputFormat |
В значении параметра alt указан формат вывода, который не поддерживается этим сервисом. Проверьте значение параметра запроса alt . |
wrongUrlForUpload |
Обработать запрос на загрузку не удалось из-за неправильного URI. Такие запросы можно отправлять только на URI с префиксом /upload/* . Отправьте запрос на тот же адрес, но с префиксом /upload . |
Код ошибки | Описание |
---|---|
unauthorized |
У пользователя нет прав для выполнения этого запроса. |
authError |
Для запроса указаны неправильные учетные данные. Проверьте значение заголовка Authorization в HTTP-запросе. |
expired |
Время сеанса истекло. Проверьте значение заголовка Authorization в HTTP-запросе. |
lockedDomainExpired |
Обработать запрос не удалось, так как истек срок действия заблокированного домена. |
required |
Для выполнения этого запроса к API пользователю необходимо войти в систему. Проверьте значение заголовка Authorization в HTTP-запросе. |
PAYMENT_REQUIRED (402)
Код ошибки | Описание |
---|---|
dailyLimitExceeded402 |
Достигнут дневной лимит бюджета, установленный разработчиком. |
quotaExceeded402 |
Для запрошенной операции необходимо больше ресурсов, чем доступно по квоте. Чтобы выполнить эту операцию, требуется платеж. |
user402 |
Чтобы выполнить запрошенную операцию, требуется платеж от аутентифицированного пользователя. |
FORBIDDEN (403)
Код ошибки | Описание |
---|---|
forbidden |
Запрошенная операция запрещена, и ее нельзя завершить. |
accessNotConfigured |
Для вашего проекта не настроен доступ к этому API. Активируйте API для проекта в Google Developers Console. |
accessNotConfigured |
Проект заблокирован из-за нарушения правил. См. http://support.google.com/code/go/developer_compliance. |
accessNotConfigured |
Проект подлежит удалению. |
accountDeleted |
Аккаунт, связанный с указанными в запросе учетными данными, был удален. Проверьте значение заголовка Authorization в HTTP-запросе. |
accountDisabled |
Аккаунт, связанный с указанными в запросе учетными данными, был отключен. Проверьте значение заголовка Authorization в HTTP-запросе. |
accountUnverified |
Адрес электронной почты пользователя, делающего запрос, не подтвержден. Проверьте значение заголовка Authorization в HTTP-запросе. |
concurrentLimitExceeded |
Обработать запрос не удалось, так как достигнут лимит параллельных соединений. |
dailyLimitExceeded |
Достигнут ежедневный лимит квоты для API. |
dailyLimitExceeded |
Достигнут ежедневный лимит квоты, и проект заблокирован из-за нарушения правил. Подробную информацию можно найти на форуме поддержки по правилам API Google. |
dailyLimitExceededUnreg |
Обработать запрос не удалось, так как достигнут предел анонимного использования API в день. Чтобы продолжить работу с API, войдите в Google Developers Console. |
downloadServiceForbidden |
API не поддерживает скачивание. |
insufficientAudience |
Запрос не может быть выполнен для этой аудитории. |
insufficientAuthorizedParty |
Запрос не может быть выполнен для этого приложения. |
insufficientPermissions |
У аутентифицированного пользователя недостаточно прав для выполнения этого запроса. |
limitExceeded |
Запрос нельзя выполнить из-за ограничений по доступу или частоте. |
lockedDomainForbidden |
API не поддерживает заблокированные домены. |
quotaExceeded |
Для запрошенной операции необходимо больше ресурсов, чем доступно по квоте. |
rateLimitExceeded |
В течение определенного промежутка времени было отправлено слишком много запросов. |
rateLimitExceededUnreg |
Превышен лимит частоты запросов. Чтобы продолжить использование API, зарегистрируйте приложение. Для этого создайте аккаунт, используя Google Developers Console. |
responseTooLarge |
Невозможно получить запрошенный ресурс, так как его размер слишком велик. |
servingLimitExceeded |
Достигнут лимит на частоту запросов для этого API. |
sslRequired |
Эта операция возможна только с применением SSL. |
unknownAuth |
Сервер API не распознает схему авторизации, используемую для запроса. Проверьте значение заголовка Authorization в HTTP-запросе. |
userRateLimitExceeded |
Обработать запрос не удалось, так как частота запросов от этого пользователя превышает допустимую. |
userRateLimitExceededUnreg |
Обработать запрос не удалось, так как достигнут предел частоты запросов от этого пользователя и в запросе не указан разработчик клиента. Создайте проект для вашего приложения в Google Developer Console (https://console.developers.google.com). |
variableTermExpiredDailyExceeded |
Обработать запрос не удалось, так как истек срок действия временной квоты и была исчерпана стандартная дневная. |
variableTermLimitExceeded |
Обработать запрос не удалось, так как была исчерпана временная квота, действующая в указанный период. |
NOT_FOUND (404)
Код ошибки | Описание |
---|---|
notFound |
Не удалось выполнить операцию, так как не найден ресурс, указанный в запросе. |
notFound |
Не найден ресурс, указанный в запросе. Если вы не пользовались этим API в последние две недели, выполните повторное развертывание приложения App Engine и попробуйте вызвать API ещё раз. |
unsupportedProtocol |
Не поддерживается протокол, используемый в запросе. |
METHOD_NOT_ALLOWED (405)
Код ошибки | Описание |
---|---|
httpMethodNotAllowed |
Не поддерживается метод HTTP, связанный с запросом. |
CONFLICT (409)
Код ошибки | Описание |
---|---|
conflict |
Не удалось выполнить запрос к API, так как запрошенная операция может вызвать конфликт с уже существующим объектом. Например, это случается, если запрашивается создание повторяющегося элемента, однако при таких конфликтах, как правило, ошибки диагностируются более конкретно. |
duplicate |
Не удалось выполнить запрошенную операцию, так как она требует создания уже существующего ресурса. |
GONE (410)
Код ошибки | Описание |
---|---|
deleted |
Обработать запрос не удалось, так как указанный в нем ресурс был удален. |
PRECONDITION_FAILED (412)
Код ошибки | Описание |
---|---|
conditionNotMet |
Не было выполнено условие, заданное для заголовка If-Match или If-None-Match в HTTP-запросе. Чтобы узнать больше, прочитайте раздел ETag спецификации HTTP. Проверьте значение заголовка If-Match . |
REQUEST_ENTITY_TOO_LARGE (413)
Код ошибки | Описание |
---|---|
backendRequestTooLarge |
Слишком большой запрос. |
batchSizeTooLarge |
Пакетный запрос содержит слишком много элементов. |
uploadTooLarge |
Обработать запрос не удалось, так как в нем слишком много данных. |
REQUESTED_RANGE_NOT_SATISFIABLE (416)
Код ошибки | Описание |
---|---|
requestedRangeNotSatisfiable |
В запросе указан недопустимый диапазон. |
EXPECTATION_FAILED (417)
Код ошибки | Описание |
---|---|
expectationFailed |
Сервер не может выполнить запрос клиента. |
PRECONDITION_REQUIRED (428)
Код ошибки | Описание |
---|---|
preconditionRequired |
Запрос должен содержать условие. Укажите в запросе заголовки If-Match или If-None-Match , чтобы он был успешно обработан. |
TOO_MANY_REQUESTS (429)
Код ошибки | Описание |
---|---|
rateLimitExceeded |
В течение определенного промежутка времени отправлено слишком много запросов. |
INTERNAL_SERVER_ERROR (500)
Код ошибки | Описание |
---|---|
internalError |
Не удалось обработать запрос из-за внутренней ошибки. |
NOT_IMPLEMENTED (501)
Код ошибки | Описание |
---|---|
notImplemented |
Запрошенная операция не была реализована. |
unsupportedMethod |
Обработать запрос не удалось, так как для этого необходимо выполнить неизвестный метод или операцию. |
SERVICE_UNAVAILABLE (503)
Код ошибки | Описание |
---|---|
backendError |
Произошла ошибка серверного кода. |
backendNotConnected |
Обработать запрос не удалось из-за ошибки подключения. |
notReady |
Сервер API не готов принимать запросы. |
Ошибки, связанные непосредственно с Indexing API
Во всех описанных ниже ситуациях запрос отклоняется, а Googlebot не сканирует соответствующий URL. То же происходит в случае основных ошибок.
BAD_REQUEST (400)
Сообщение об ошибке | Описание |
---|---|
Missing attribute. 'url' attribute is required. |
Пользователь не указал URL в запросе. |
Invalid attribute. 'url' is not in standard URL format |
Пользователь ввел некорректный URL, например «abcd». |
Unknown type. 'type' attribute is required and must be 'URL_REMOVED' or 'URL_UPDATED'. |
Пользователь не указал тип уведомления. |
Invalid value at 'url_notification.type' (TYPE_ENUM) |
Пользователь указал в типе уведомления не URL_REMOVED или URL_UPDATED , а другое значение. |
FORBIDDEN (403)
Сообщение об ошибке | Описание |
---|---|
Permission denied. Failed to verify the URL ownership. |
Пользователь не прошел процедуру подтверждения права собственности или пытается обновить URL, который ему не принадлежит. |
TOO_MANY_REQUESTS (429)
Сообщение об ошибке | Описание |
---|---|
Insufficient tokens for quota 'indexing.googleapis.com/default_requests' |
Пользователь исчерпал свою квоту Indexing API. |
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons «С указанием авторства 4.0», а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2023-02-22 UTC.
Страница с ошибкой при обращении к WordPress-сайту всегда вызывает неудобства, вне зависимости от того, ваш это сайт или чужой. Как и в случае со многими другими кодами ответов HTTP, ошибка 401 не содержит детальных данных для диагностики и решения проблемы.
Ошибка 401 может появиться в любом браузере. В большинстве случаев ее легко решить.
В этой статье мы расскажем, что означает 401 ошибка, почему она происходит, и какие методы ее устранения существуют.
Итак, приступим!
Содержание
- Код ошибки 401 – что это?
- Что вызывает ошибку 401
- Как исправить ошибку 401 (5 методов)
Код ошибки 401 – что это?
Коды состояния HTTP 400 возникают в случае проблем с выполнением запросов. В частности, ошибка 401 появляется, когда браузер отказывает вам в доступе к странице, которую вы хотите посетить.
В результате вместо загрузки страниц браузер выведет сообщение об ошибке. Ошибки 401 могут возникать в любом браузере, потому отображаемое сообщение может варьироваться.
К примеру, в Chrome и Edge вы, скорее всего, увидите иконку бумаги с простым сообщением о том, что запрашиваемая страница не отвечает. Вы увидите фразу «HTTP Error 401». Вам будет предложено связаться с владельцем сайта, если ошибка не пропадет:
В иных случаях и в других браузерах вы можете получить менее дружелюбное предупреждение. К примеру, может выводиться пустая страница с сообщением «401 Authorization Required»:
Другие вариации текста:
- HTTP 401 Error – Unauthorized
- 401 Unauthorized
- Access Denied
Эти ошибки часто появляются на сайтах, где требуется вводить данные для входа. В большинстве случаев это означает, что что-то не так с учетными данными. Возможно, браузер перестал считать их действительными.
Эта ошибка похожа на HTTP 403 Forbidden Error, когда доступ к сайту для пользователя запрещен. Однако, в отличие от ошибки 403, сообщение об ошибке 401 указывает, что процесс аутентификации завершился неудачно.
Код ошибки передается через заголовок WWW-Authenticate, который отвечает за определение метода аутентификации, используемого для предоставления доступа к веб-странице или ресурсу.
Что вызывает ошибку 401
Если вы столкнулись с кодом ошибки в кодах 400, вы должны знать, что проблема произошла на стороне клиента (либо на стороне браузера). Случается, что виновником проблемы является браузер, но так бывает не всегда. Об этом мы еще расскажем позже.
Ошибки 401 возникают на ресурсах с ограниченным доступом – к примеру, на страницах, защищенных паролем. Потому можно предположить, что причина проблемы связана с данными аутентификации.
Устаревшие Cookie и кэш браузера
Одной из наиболее распространенных причин возникновения ошибки 401 является то, что кэш и файлы cookie вашего браузера устарели, что не позволяет выполнить авторизацию. Если ваш браузер использует недействительные данные для авторизации (либо вообще их не использует их), сервер отклонит запрос.
Несовместимые плагины
Также бывают ситуации, когда ошибка вызвана несовместимостью плагинов или какими-либо сбоями в них. К примеру, плагин безопасности может ошибочно принять вашу попытку входа за вредоносную активность, а потому будет возвращена ошибка 401 для защиты страницы.
Неверный URL или устаревшая ссылка
Бывает, что источником проблемы является незначительная оплошность. К примеру, был неверно введен URL, ссылка была устаревшей и т.д.
Как исправить ошибку 401 (5 методов)
Теперь, когда мы разобрались с причинами ошибки 401, пришло время обсудить, как ее устранить.
Давайте рассмотрим 5 методов, которые вы можете использовать.
- Проверьте ваш URL.
Начнем с самого простого потенциального решения: убедитесь, что вы использовали верный URL. Это может выглядеть банально, но 401 ошибки нередко появляются, если URL-адрес был введен неправильно.
Еще один вариант: ссылка, которую вы использовали для перехода на запрашиваемую страницу, указывает на неправильный URL. К примеру, ссылка устарела, ведет на страницу, которой больше нет (и редиректов не задано).
Стоит тщательно перепроверить URL-адрес, который вы использовали. Если вы набирали адрес самостоятельно, убедитесь, что все написано безошибочно. Если вы переходили по ссылке, убедитесь в том, что она ведет на страницу, к которой вы хотите получить доступ (либо попробуйте перейти на эту страницу непосредственно через сайт).
- Почистите кэш браузера.
Кэш браузера предназначен для улучшения процесса взаимодействия с сайтами в сети за счет сокращения времени загрузки страниц. К сожалению, иногда это может вести к нежелательным последствиям.
Как мы уже говорили выше, одной из распространенных причин появления ошибки 401 являются устаревшие или неправильные данные кэша или cookies. Потому, если URL введен верно, следующий шаг – чистка кэша браузера.
В итоге вы удалите любую недействительную информацию, которая хранится локально в вашем браузере и может приводить к прерываниям процесса аутентификации. Аналогично, файлы cookie вашего браузера могут содержать аутентификационные данные, которые нужно обновить.
Если вы пользуетесь Chrome, вам нужно щелкнуть по иконке с меню в правом верхнем углу браузера и выбрать пункт Settings. В разделе «Privacy and security» нажмите «Clear browsing data:»
Далее вводим URL требуемого сайта и очищаем для него данные.
В других браузерах процесс очистки кэша и cookie может отличаться. К примеру, в Firefox нужно щелкать по иконке с библиотекой и выбирать History > Clear Recent History:
Информацию по остальным браузерам вы можете найти в поисковиках.
- Очистка DNS.
Еще один метод, который вы можете попробовать для устранения ошибки 401 – это очистка DNS. Эта причина встречается относительно редко, но стоит попробовать и такой подход, особенно если первые два ничего не дали.
Чтобы очистить DNS, перейдите в Windows к меню «Пуск» и там уже введите в строку поиска cmd. Нажмите Enter. Откроется командная строка. Далее вставьте команду ipconfig/flushdns, после чего снова нажмите Enter.
Если вы пользуетесь Mac, вы можете открыть командную строку следующим образом: Finder > Applications > Utilities > Terminal.
Введите команду sudo killall -HUP mDNSResponder и нажмите Enter. Затем вы можете обновить страницу, чтобы посмотреть, пропала ли ошибка 401 или нет.
- Деактивируйте ваши плагины
Проблема может возникать и по вине плагинов.
Некоторые плагины, особенно связанные с безопасностью, могут выдавать ошибку 401 при подозрении на вредоносную активность. Также у них могут быть проблемы с совместимостью. Потому лучше всего деактивировать все плагины и посмотреть, будет ли страница работать.
Вы можете деактивировать все плагины разом, перейдя в раздел Plugins > Installed Plugins в консоли WordPress. Выберите все плагины и в меню Bulk Actions задайте Deactivate, после чего щелкните по кнопке Apply:
После этого попробуйте перезагрузить страницу с ошибкой. Если ошибка пропала, вы можете вручную по одному активировать плагины заново, чтобы выявить виновника всех бед.
Далее вы уже можете либо удалить плагин, либо написать его разработчикам, чтобы они предоставили рабочее решение.
- Проверьте заголовок WWW-Authenticate
Если проблема все еще остается, то в таком случае она может быть связана с ошибками на сервере. А значит, исправить ее будет чуть сложнее.
Как мы уже писали ранее, ответ 401 передается через заголовок WWW-Authenticate, который отображается как “WWW-Authenticate: <type> realm=<realm>”. Он включает в себя строки данных, указывающие на то, какой тип аутентификации требуется для предоставления доступа.
Вам нужно посмотреть, был ли отправлен ответ в WWW-Authenticate, а точнее какая схема аутентификации была использована. По крайней мере, это позволит вам приблизиться на один шаг к решению.
Перейдите на страницу с ошибкой 401 и откройте консоль разработчика в Chrome. Вы можете щелкнуть правой кнопкой мыши на странице и выбрать Inspect (Ctrl+Shift+J).
Далее перейдите на вкладку Network и перезагрузите страницу. Это позволит сгенерировать список ресурсов. Выберите заголовок Status, чтобы отсортировать таблицу, и найдите код 401:
Выберите данную запись, после чего перейдите на вкладку Headers. В Response Headers найдите заголовок WWW-Authenticate:
Информация, представленная в заголовке ответа, в частности, в схеме аутентификации, даст вам больше сведений о том, что произошло, и укажет на решение. Это позволит вам понять, какой тип аутентификации требуется серверу.
К примеру, в приведенном выше примере мы видим, что схема аутентификации задана как «Basic». Это означает, что запрос аутентификации требует только ID и password. Для получения более подробной информации и инструкций мы рекомендуем обратиться к HTTP Authentication Scheme Registry.
Источник: kinsta.com