Содержание
- 0.1 «Превышено ограничение количества запросов за сутки»: решение проблемы
- 0.2 Почему так происходит?
- 0.3 «Превышено ограничение количества запросов за сутки»: простое решение
- 0.4 Если вы зашли с ПК, ноутбука
- 0.5 Если вы зашли со смартфона, планшета
- 0.6 Как свести к минимуму использование данных на Android и избежать превышения интернет-трафика?
- 0.7 Как проверить данные об использовании
- 0.8 Как контролировать использование данных
- 0.9 Ограничение потребления фоновых данных
- 0.10 Выключение всех фоновых данных
- 0.11 Отключение обновлений в фоновом режиме
- 0.12 Использование в Chrome Экономии трафика
- 0.13 Кэш Google Maps
- 0.14 Использование потокового приложения с автономными режимами
- 0.15 Кэширование данных — ваш помощник
- 1 Ограничение количества запросов — Raterlimiter
«Превышено ограничение количества запросов за сутки»: решение проблемы
Вы утеряли пароль от своей страницы «ВКонтакте», «Фейсбуке» или другой социальной сети или же решили зайти в собственный аккаунт с другого устройства и не можете вспомнить эти заветные цифры.
Логически нажимаете на ссылку «Забыли пароль?» и пробуете восстановить его через привязанный телефонный номер или адрес электронного почтового ящика. Во время последней манипуляции перед вами всплывает сообщение: «Превышено ограничение количества запросов за сутки».
После этого ваши попытки восстановить пароль оказываются тщетными — перед глазами появляется лишь это злосчастное предупреждение. Что делать в таком случае?
Почему так происходит?
Ошибка «Превышено ограничение количества запросов за сутки» не всегда является свидетельством технического сбоя на серверах соцсети (хотя часть безуспешных мучений с восстановлением пароля происходит именно из-за этого). В первую очередь, это защита вашей страницы от взлома. Данное предупреждение должно возникать, когда вы несколько раз за 24 часа отправили заявку на восстановление пароля.
Система «думает», что кто-то посторонний таким образом пытается подобрать пароль к вашей странице, отчего и предоставляет только ограниченное число попыток восстановления кода доступа к странице в один день. Так, согласитесь, у злоумышленника почти нет шансов путем рандомного подбора ввести правильный пароль от вашего аккаунта.
«Превышено ограничение количества запросов за сутки»: простое решение
Если вы на самом деле не один раз за день обращались к услугам ссылки «Забыли пароль?», то выход у вас один: восстановить код доступа только на следующий день, по прошествии суток. И желательно сделать это с первого раза — чтобы не ждать еще сутки. Или вообще не потерять возможности восстановить пароль через номер телефона или электронный ящик.
Но что делать, если сообщение в , «Превышено ограничение количества запросов за сутки» появилось при первой или второй попытке восстановления доступа?
Если вы зашли с ПК, ноутбука
В том случае, когда вы уверены, что предупреждение — ошибка системы сайта, можно сделать следующее:
- Обратитесь к команде поддержки «юзеров» — это ссылка «Помощь».
- Попробуйте воспользоваться для восстановления доступа другим устройством — компьютером, планшетом, лэптопом, телефоном.
- Зайдите с другого браузера, например, «Яндекс» или Chrome.
- Проверьте устройство на вирусы. При их обнаружении почистите компьютер, после чего вновь попытайтесь восстановить пароль к своей странице.
Если вы зашли со смартфона, планшета
Когда сообщение «Превышено ограничение количества запросов за сутки» появилось на экране планшета или смартфона, попробуйте предпринять это:
- Зайдите в свой аккаунт для восстановления доступа с другого смартфона или же иного устройства.
- Попробуйте восстановить доступ из мобильного браузера или официального приложения соцсети.
- Смартфон или планшет также могут одолеть вирусы и вредоносные программы. Скачайте приложение-антивирус, почистите телефон от угроз, после чего вновь возвратитесь к попыткам восстановления пароля.
- Если вы восстанавливаете код доступа из браузера своего устройства, то переключитесь из мобильной в полную версию страницы и попробуйте заново.
- При безуспешности всех методов обратитесь в службу технической поддержки по ссылке «Помощь».
Таким образом, как показывает практика, предупреждение «Превышено ограничение количества запросов за сутки» более характерно для таких устройств, как смартфоны и планшеты.
В частности, при попытках восстановить доступ через приложение или мобильную браузерную версию сайта.
Проблема в большинстве случаев решается путем захода на свою страницу через другое устройство либо через восстановление пароля на полной версии ресурса.
.ru
Как свести к минимуму использование данных на Android и избежать превышения интернет-трафика?
Все более сложные телефоны и приложения, которые потребляют большое количество мобильных данных, как никогда ранее приводят к тому, что бывает превышен лимит интернет-трафика.
Современные приложения раздуваются в размерах (не редкость для приложений и их обновлений превышение 100 Мб), а потоковая музыка и видео становятся все более популярными, все это легко съест ваш ежемесячный трафик в течение нескольких дней. Например, вы потребляете около 120 Мбайт в час. Это может показаться не так много на первый взгляд, но делайте это в течение часа в день в течение недели, и вы получите около 840Mб. Это примерно 3,2 Гб в месяц.
Конечно, можно заплатить больше за больший трафик, но кто же захочет это сделать?
Как же сократить использование данных (и следить за ними).
Как проверить данные об использовании
Прежде всего, вам нужно проверить использование данных. Если вы не знаете, сколько обычно потребляете, то не имеете ни малейшего представления о том, насколько вам необходимо изменить структуру потребления данных.
Лучше всего делать путем проверки использования в течение последних нескольких месяцев.
Самый простой способ проверить прошлое использование данных — это войти на сайт вашего сотового провайдера и посмотреть, как они вами использовались.
Вы также можете проверить текущий месяц использования прямо на Android. Перейдите в раздел Настройки> Подключения> Использование данных.
Вы увидите экран, который выглядит примерно так (первый из представленных).
Если вы прокрутите вниз, то увидите использование мобильного трафика для каждого приложения, как показано на втором скриншоте.
Важно отметить, что эти графики показывают только данные, передаваемые через подключение к сотовой связи, а не подключение к Wi-Fi. Если вы хотите увидеть использование данных через Wi-Fi, нажмите кнопку меню и выберите пункт Показать использование Wi-Fi.
Стоит отметить, что вам нужно будет указать свой платежный цикл для наиболее точного определения использования данных.
В дополнение к мониторингу вы можете также установить предупреждения о потреблении данных, регулируя планку ползунком по своему усмотрению, когда вы достигнете этой планки, то получите предупреждение об использовании трафика.
Кроме того, можно включить опцию Установить лимит на мобильные данные, а затем использовать оранжевый ползунок, чтобы указать предел использования данных.
Как контролировать использование данных
Есть два вида приемы данных, если речь идет о мобильных устройствах. Во-первых, есть очевидные, управляемые пользователем, данные о потреблении.
При просмотре видео высокого качества или скачивания нового альбома, вы напрямую увеличиваете использование данных за текущий месяц, при условии, что вы на мобильном трафике, а не на Wi-Fi.
Очевидно, что для меньшего использование этого вида данных, вы должны сознательно останавливать загрузку, потоковое воспроизведения и просмотр чего-либо.
Менее очевидным для большинства людей является довольно большое количество данных, «фоновые данные».
Обновления , частая проверка входящих сообщений электронной почты, автоматическое обновление приложений и другие фоновые виды деятельности могут пробить значительную брешь в трафике, если не быть осторожным. Как же можно ограничить потребление фоновых данных?.
Ограничение потребления фоновых данных
Вы можете ограничить их одним из трех способов: общая блокировка, индивидуальная блокировка или настройки на основе приложения.
Во-первых, нужно понять, какие приложения более всего используют фоновые данные.
Вернитесь в Настройки> Подключения>Использование данных, чтобы увидеть приложения в порядке использования данных.
Нажатие на отдельные приложения покажет более подробную информацию. Здесь мы можем увидеть использование переднего плана и фона:
Кроме того, чтобы ограничить использование данных приложениями, откройте настройки самого приложения и отключите их. К примеру, отключение уведомлений в приложениях еще и ощутимо экономит заряд аккумулятора.
Не все приложения можно настроить таким образом. Но можно прибегнуть к другому способу. Вернитесь в Настройки> Подключения>Использование данных и нажмите на приложение. Установите флажок Ограничить фоновые данные.
Это позволит ограничить использование данных на уровне операционной системы.
Обратите внимание, что данное ограничение относится только к мобильной передаче данных, если же вы на Wi-Fi, Android позволит приложению использовать справочные данные в обычном режиме.
Выключение всех фоновых данных
Если этого не достаточно, вы также можете отключить все фоновые данные, что уменьшит использование данных в большинстве случаев, но это также может быть неудобно, так как полностью отключается передача мобильных данных. В меню Использование данных уберите флажок с Мобильные данные. Это позволит отключить фоновые данные для всех приложений.
Отключение обновлений в фоновом режиме
Google понимает, как драгоценны мобильные данные, поэтому обновления, который приложение обновится автоматически только тогда, когда вы находитесь на Wi-Fi, по крайней мере, по умолчанию.
Чтобы убедиться, что это так (и вы случайно не изменили что-то), откройте Play Store, а затем его меню.
Перейlите в настройки, а затем убедитесь, что Автообновление приложений установлен в положение Только через Wi-Fi или Никогда.
Использование в Chrome Экономии трафика
Если вы много времени проводите в интернете на вашем устройстве, стоит активировать Data Saver от Chrome, который сокращает трафик, получаемый при загрузке страниц, с помощью серверов Google. Не работает с HTTPS-запросами и в режиме инкогнито. Откройте в Chrome Настройки> Экономия трафика и переместите бегунок в положение ВКЛ.
Кэш Google Maps
Лучший способ избежать потребления данных, в то время как вы зависите от мобильных данных не через Wi-Fi, является кэширование данных заранее.
Если вы используете Google Maps для ежедневной навигации или планирования поездки, то уходит довольно много трафика. Лучше предварительно кэшировать маршрут. Для этого в меню карт есть раздел Скачанные области.
Использование потокового приложения с автономными режимами
Многие приложения потоковых сервисов добавляют оффлайн-режимы, которые позволяют пользователям предварительно кэшировать данные через Wi-Fi для использования данных в автономном режиме. Rdio, Rhapsody, Slacker Radio и Spotify — все имеют автономные режимы, чтобы помочь пользователям избежать лишнего потребления данных.
Кэширование данных — ваш помощник
Есть много других областей, где можно применить кэширование данных. Всегда продумывайте такую возможность.
Кроме того, не следует использовать такс киллеры. Мало того, что они сомнительны с точки зрения пользы, но большинство подобных приложений также будет убирать кэш-файлы приложений.
Вы можете воспользоваться всем перечисленным выше или в зависимости от ваших потребностей, чтобы сократить использование данных. Так или иначе, порядок навести не помешает, тем более что это сбережет ваши финансы.
Источник: https://rv-mo.ru/raznoe/oshibka-kolichestvo-napominanij-prevysilo-limit-dlya-vashego-telefona.html
Ограничение количества запросов — Raterlimiter
Если вы опасаетесь, что ваш веб-сервис могут заDOSить нерадивые пользователи, или у вас просто слабенький сервер, то вы уже задумывались над ограничением количества запросов от каждого пользователя.
По-хорошему — это только один из необходимых эшелонов обороны. Конечно, от серьёзной атаки такое ограничение не убережёт, но с точки зрения цена/качество вполне подходящее
Недавно я начал активно заниматься Эрлангом.
Ну и, как обычно, для закрепления материала реализовал несложный веб-сервис на Mochiweb.
Mochiweb — вполне достойный фреймворк для создания веб-приложений, но возможности лимитировать количество запросов от одного клиента я не нашёл. Вот и сделал это самостоятельно.
Т.к. функционал лимитирования скорости запросов вполне себе изолированный и не привязан к какой-то конкретной задаче, я выделил сделанный модуль в независимое приложение и решил выложить его исходный код.
Задача
Итак, имеем Erlang/OTP, Mochiweb, rebar. Хочется считать количество запросов от конкретного пользователя и отдавать ему 413 код ошибки, если запросы идут слишком часто.
Клиент идентифицируется своим IP адресом. Тем самым, который отдает mochiweb_request:get(peer).
Задача не такая сложная, но, возможно, готовое решение сэкономит кому-то время.
Подход
Я решил использовать алгоритм Token bucket. Если описать его кратко — считаем определенные интервалы времени для каждого клиента корзинами, в которые будем складывать запросы пользователя за этот интервал времени. Корзины имеют лимитированный объём.
Как только корзина забивается запросами до лимита, перестаём облуживать клиента. Т.к. время идет, корзины для клиента постоянно меняются, и клиент имеет шанс быть обслуженным в новый интервал времени.
На картинке выше красным обозначено время, когда каждый из клиентов не обслуживался.
Как видно из картинки, Клиент А какое-то время назад получил ограничение запросов и больше их не слал, Клиент Б спокойно работает и не превышает лимита, а клиент В выбрал на текущий момент лимит запросов и получает отказы.
Корзины будем создавать по мере появления запросов от клиента и с учетом времени. Каждый клиент может иметь свой масштаб времени, читай время жизни корзины. Объем корзины, то есть лимит запросов, можно задавать для каждого клиента отдельно. Хранить информацию о корзинах клиентов будем в словаре:
counter — собственно, счетчик запросов
API для клиента состоит из одной функции check_rate(IP, TimeScale, Limit).
Где
IP — это ip адрес клиента (впрочем может быть любым идентификатором)
TimeScale — Время жизни корзины в мс.
Limit — максимальное количество запросов в корзине Вызов этой функции инкрементирует счетчик и возвращает клиенту надо ли обслуживать запрос.
Реализация
Для хранения данных я использую ETS таблицу типа ordered_set. Она отсортирована по ключам и не допускает дублирования ключей. В таблице лежит запись
[BucketID, Counter, CreatedAt, ModifiedAt] Где
BucketID — {IP, BucketNum}, также является ключем для ordered_set
Counter — количество запросов от клиента
CreatedAt — Время создания корзины (в мс)
ModifiedAt — Время изменения корзины (в мс) Время создания служит больше для отладки, от него можно отказаться Основная функция: -spec count_hit(Id::binary(), Scale::integer(), Limit::integer()) -> {ok, continue} | {fail, Count::integer()}.%% Counts request by ID and blocks it if rate limiter fires%% ID of the client%% Scale of time (1000 = new bucket every second, 60000 = bucket every minute)%% Limit — max size of bucketcount_hit(Id, Scale, Limit) -> Stamp = timestamp(), %% milliseconds since 00:00 GMT, January 1, 1970 BucketNumber = trunc(Stamp / Scale), %% with scale=1 bucket changes every millisecond Key = {BucketNumber, Id}, case ets:member(?RATERLIMITER_TABLE, Key) of false -> ets:insert(?RATERLIMITER_TABLE, {Key, 1, Stamp, Stamp }), {ok, continue}; true -> % increment counter by 1, created_time by 0, and changed_time by current one Counters = ets:update_counter(?RATERLIMITER_TABLE, Key, [{2,1},{3,0},{4,1,0, Stamp}]), % Counter, created at, changed at [BucketSize, _, _] = Counters, if (BucketSize > Limit) -> {fail, Limit}; true -> {ok, continue} end end. Сначала проверяем есть ли нужная нам корзина {IP, BucketNumber}. В случае новой корзины все довольно банально — создаем новую корзину с начальными значениями и говорим ОК.
Добавление счетчика к существующей корзине осуществляется чуть интереснее. Модуль ets позволяет модифицировать счетчики по указанным правилам. Мне понравилось, как изящно можно совместить инкремент счетчика с изменением даты последнего обращения.
Итак код: Counters = ets:update_counter(?RATERLIMITER_TABLE, Key, [{2,1},{3,0},{4,1,0, Stamp}]) инкрементирует счетчик №2 на 1 (это как раз счетчик обращений), добавляет 0 ко времени создания, добавляет 1 к счетчику №4 с проверкой максимального значения. Т.к. максимальное значение указано 0, четвертый счетчик всегда устанавливается равным Stamp (текущему времени). На выходе получаем список из всех изменяемых счетчиков по порядку, т.е.
[Counter, CreatedTime, ChangedTime]В итоге за два обращения к таблицам мы обновили либо создали корзину и получили на выходе количество обращений. В текущей реализации raterlimiter атомарность изменения таблиц не критична, он просто работает синхронно (вызов gen_server:call/2 синхронен).
Удаление старых корзин
Со временем корзины клиентов всё копятся и копятся. Надо их удалить. Удаление происходит периодически. Удаляются просто все корзины старее указанного лимита.
Надо сказать, на Эрланге всё выглядит красиво и кратко —remove_old_limiters(Timeout) -> NowStamp = timestamp(), Matcher = ets:fun2ms(fun ({_,_,_,Accessed}) when Accessed < (NowStamp - Timeout) -> true end), ets:select_delete(?RATERLIMITER_TABLE, Matcher).
ets:select_delete удаляет все записи, удовлетворяющие функции соответствия (MatchSpec). Писать эти match_spec вручную — сущий ад. Гораздо проще использовать функцию ets:fun2ms, которая преобразует обычную функцию Эрланга в функцию соответствия. Например, указанная выше функция
fun ({_,_,_,Accessed}) when Accessed < (NowStamp - Timeout) -> true end в конечном виде в формате MatchSpec, для NowStamp=1000, Timeout=0 выглядит как [{{'_','_','_','$1'},[{' serve_request(Req, DocRoot, Path); _ -> % client wants too much information Req:respond({413,[{«Content-Type», «text/html»}, {«Retry-After», «900 (Too many requests)»}], «С вашего IP слишком много запросов, подождите 15 минут.»}) end
С полным кодом можно ознакомиться на Github. Там же можно сообщить об ошибках, или сделать pull request.
Источник: https://habr.com/post/145105/