Многие сайты используют механизмы сессий для сохранения данных о работе пользователей. В отличие от файлов Cookies, файлы сессий хранятся не на ПК пользователей, а непосредственно на удалённом сервере, там, где размещён сайт. Такое решение идеально подходит для хранения чувствительной информации: лога событий, параметров авторизации и пр.
Facebook не исключение – у него тоже есть свой механизм сессий.
Однако, любое техническое решение имеет свои плюсы и минусы. К минусам сессий относятся следующие моменты:
- Незакрытая сессия, особенно, если авторизация производилась на общедоступном компьютере, может привести к нарушению конфиденциальности и к доступу злоумышленника к личным данных внутри удалённого сервера (хакер банально может продолжать пользоваться аккаунтом пользователя + есть специальные виды атак на идентификаторы сессий, хранящиеся в куках).
- Существенно возрастает нагрузка на инфраструктуру хостера, так как файлы сессий требуют места для их хранения и могут буквально переполнить диск.
Чем выше опасность разглашения персональной информации, тем короче должны быть активные сессии.
Мы немного освежили теоретическую часть для тех, кто не знал или забыл. А теперь перейдём к разбору ошибки FB «Время сессии истекло. Пожалуйста, войдите в Facebook ещё раз».
Что за ошибка «Facebook Session Expired error»?
Facebook, как и многие другие крупные сайты, следит за безопасностью авторизации своих пользователей. Поэтому периодически закрывает сессии в одностороннем порядке, вынуждая клиентов заново авторизоваться в аккаунте.
Чаще всего просьба перелогиниться воспринимается крайне враждебно, поэтому активность сессий обычно отсчитывается не от момента последней авторизации, а от момента последнего действия пользователя в системе. Например, если клиент FB пользуется сайтом или приложением круглые сутки, то ошибка с сессией скорее всего не возникнет.
Но если авторизоваться и оставить сайт открытым во вкладке браузера, то через определённое время можно получить ошибку FB: «Session expired».
Давайте детальнее разберёмся в причинах такой ошибки.
Причины ошибки истечения сеанса при использовании Facebook
Самая простая и очевидная причина ошибки с закрытием сессии Facebook – это длительное бездействие пользователя.
Вместе с тем, с завершением сессий у Facebook связаны и некоторые другие дополнительные механизмы безопасности. Например, могут анализироваться идентификаторы приложений и прочие данные, хранящиеся внутри каталога браузера или на устройстве клиента.
Любое несовпадение будет приводить к закрытию активной сессии и к ошибке «Session expired».
Обобщим список потенциальных причин:
- Длительное бездействие на сайте Facebook, обычно свыше 30 минут.
- Проблемы с браузером и с его цифровым отпечатком (актуально в первую очередь для тех, кто занимается парсингом):
- Ошибки в файлах Cookie.
- Ошибки в системе кеширования браузера.
- Не совпадает идентификатор приложения (или кеш приложения был почищен вручную, а также с помощью различных программ-клинеров).
- Конфликт с браузерным дополнением (в том числе с блокировщиками рекламы).
- Подозрение на нарушение конфиденциальности пользователя (Facebook в одностороннем порядке завершает все сессии пользователя, в отношении которого возникают такие подозрения).
- Принудительный выход из аккаунта на одном из последних устройств пользователя (фактически ситуация может быть приравнена Facebook к нарушению конфиденциальности, поэтому он просит перелогиниться пользователя на всех его устройствах).
Соответственно, если вы обычный пользователь и столкнулись с ошибкой сессии FB, то мы рекомендуем следующие действия:
- Попытайтесь заново авторизоваться в аккаунте. Если ошибка не уходит, пройдитесь по дальнейшим шагам.
- Обновите (перезагрузите) страницу.
- Проверьте работоспособность Facebook (это можно сделать с другого своего устройства, например, с ПК или с мобильного, а также с привлечением специальных сайтов, отслеживающих проблемы на стороне Facebook). Если проблемы с доступностью есть, нужно немного подождать, скорее всего всё восстановится в течение нескольких минут, максимум часа-двух.
- Отключите подозрительные расширения браузера. Если виновника найти невозможно, временно отключите все расширения.
- Очистите кеш и файлы Cookie для сайта Facebook. Перезапустите браузер в режиме «Инкогнито».
- Если у вас мобильное приложение – удалите кеш приложения или полностью его переустановите. Проверьте версию приложения (она должна быть актуальной).
- Смените браузер на другой. Если шаг не помогает, удалите браузер и переустановите с нуля.
- Отключите прокси или VPN (если подключение осуществляется через специальные решения для повышения безопасности и конфиденциальности).
- Проверьте устройство на наличие вирусов или шпионского ПО.
- На время отключите антивирусное ПО.
- Обратитесь в службу поддержки Facebook, если ничего из перечисленного выше не помогает.
Как исправить ошибку истечения сеанса/сессии при парсинге Facebook
Одно дело – обычные пользователи, а другое – парсинг данных.
Facebook – это крупная и очень популярная площадка. Здесь многие не просто развлекаются, но и работают. Ошибка с истекающим сеансом может возникать по причине того, что ваш парсер не умеет работать с куками (cookies-файлами).
Поэтому, если вы разрабатывали свой парсер с нуля или на основе готовых библиотек (подробности в материалах про библиотеки для парсинга с языком Golang, Python и про решения на базе cURL), то вам нужно озаботиться о поддержке cookies, а также об интеграции с headless-браузерами.
Отдельный материал про лучшие практики парсинга.
Предметные шаги и действия для минимизации ошибок «Session expires on Facebook»:
- Регулярно обновляйте сеанс и поддерживайте активность аккаунта. Запросы с FB не должны выполняться слишком часто, но и не слишком редко. Длительный простой – повод для перевода сессии в статус неактивной.
- Если скрипт парсинга долго простаивал, то в алгоритме его запуска должен быть пункт об обязательной повторной авторизации. Если начать обращаться к Facebook на основе устаревших cookies и сессии, то FB вернёт соответствующую ошибку.
- При обращении к Facebook по API-интерфейсу, обязательно нужно выполнить требования по обмену токенами, идентификаторами и секретами приложения (см. документацию).
- Используйте многосессионный подход – распараллеливайте подключения к Facebook при парсинге, но помните, что каждый аккаунт должен работать со своими куками и через отдельный IP-адрес.
О последнем пункте расскажем немного подробнее.
Устраняем ошибку истечения сеанса Facebook с помощью прокси
Любой парсер, каким бы они ни был, самописным, на основе готового фреймворка или даже на базе профильного онлайн-сервиса, не может обходиться без прокси.
Если не использовать узлы-посредники, то Facebook или любой другой сайт, который вы начнёте парсить, сможет выявить автоматические запросы и заблокировать соединение.
Тут уже не отделаться просто ошибкой сессии, FB вообще может полностью заблокировать аккаунт или даже все связанные аккаунты, которые будут заподозрены в нарушении правил использования.
Ротация прокси позволяет не просто распараллелить запросы и одновременно собирать большой объём данных, но и защищает вашу конфиденциальность.
Лучшими типами прокси, которые подходят для работы с Facebook можно назвать мобильные прокси и резидентные прокси.
Отдельно все варианты мы рассматривали в статье «Использование прокси в Facebook».
Обход блокировок и ошибок с сессиями реализуется очень просто:
- Каждый аккаунт FB нужно запускать через отдельный прокси (или порт с ротацией из выбранной локации, желательно дополнительно привязаться к провайдеру интернета или к номеру ASN).
- Оптимизация времени между запросами при парсинге страниц позволит одновременно поддерживать нужную активность (чтобы сессия не завершалась) и избежать пристального внимания со стороны систем защиты. Желательно устанавливать не фиксированное время, а случайные значения из заданного диапазона.
Естественно, провайдер прокси должен быть максимально качественным. Прокси нужны только анонимные.
Выводы
Ошибка Facebook «Session Expired» говорит о том, что целевой сайт завершил или сбросил текущую активную сессию в одностороннем порядке. Причин завершения сессии может быть несколько, все из них мы подробно изложили и описали выше.
Если ошибка сессии возникает при парсинге, то нужно предпринять ряд стандартных мер защиты: оптимизировать время между запросами, чтобы поддерживать активность, и обезопасить себя с помощью прокси.
Лучшие прокси можно найти у нас. Froxy – это более 8 млн. IP и доступ к 200+ локациям по всему миру (с таргетингом до конкретного города и провайдера связи), удобные пакеты трафика и максимально анонимные прокси с ротацией – мобильные и резидентные.