@Mysterion

Как правильно организовать логику работы парсера с авторизацией?

Всем доброго времени суток.
Написал парсер на node js. Вообще, с парсингом, как таковых, проблем нет. Загвоздка в логике и проектировании.
Есть страницы с контентом, который я получаю. На этих страницах есть ссылки на файлы. Ссылки не прямые, а на скрипт, который проверяет пользователя авторизован он или нет.
Вот с ними то и проблема.
По логике, я на странице вывожу контент, который спарсил, в том числе и ссылки. Нужно чтобы при нажатии по ссылке, которая будет указывать на API express'a, где будет дергаться нужная ссылка из полученного ранее контента, качаться в файл и отдаваться клиенту (node js > php > client). С этим разберусь.
Не понимаю как лучше организовать авторизацию при загрузке файла. На сайте этом есть возможность запоминания логина. Это хорошо. Сайт на Xenforo там крутится. Чтобы авторизоваться, должна уже быть какая-то кука в клиенте, поэтому процесс авторизации у меня следующий:

Формально, у меня уже написан алгоритм проверки и авторизации.
Написал метод проверки и метод авторизации отдельно.
В методе проверки с кукой, которая у меня есть (это кука может быть и пустой, если ранее я не авторизовывался), обращаюсь к странице профиля на сайте и, если код ответа 403, значит не авторизованы. Тогда я куку, которая была мне присвоена в проверке, отправляю вместе с данными авторизации (так требует сайт), после авторизации сохраняю новую куку и снова вызываю метод проверки авторизации с кукой, которую получил после авторизации, и если код ответа 200, то все хорошо и можно качать файлы.

Как надежно все это организовать. А что если при попытке загрузить файл что-то произойдет и кука будет недействительна? Как лучше поступить, чтобы пользователь гарантировано мог скачать файл? Перед попыткой скачать файл проверять авторизацию или при любом обращении, даже если для получения контента авторизация не требуется, чтобы в дальнейшем я наверняка был авторизован. Вообще, по-сути, я могу и свою куку подставлять, а не данные отправлять для авторизации, такой способ тоже работает.

Может лучше создать массив с куками, который постоянно будет заменять действительно рабочими куками, с которых есть доступ? Сейчас вот в голову такой способ пришел, пока писал. Имеет место быть, я думаю.

Какое ваше мнение, кто уже ранее реализовывал подобное и как решались такие вопросы?
Всем спасибо.
  • Вопрос задан
  • 277 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы