Как можно авторизовать nodejs бота на форуме под vbulletin?
Здравствуйте!
Я, вроде, и гуглил на эту тему, но результаты мне трудно понять. В основном, про авторизацию пишут как про вещь на стороне сервера, а используется в качестве кода php.
У меня другая задача. Нужно написать бота, который будет авторизоваться на форуме с движком vBulletin, а потом парсить некоторые странички под указанным аккаунтом.
Как можно авторизоваться ботом? В каком виде и как отправляются данные с клиента на сервер с информацией об авторизации? Я видел, что используются заголовки http-запроса, но не могу в этом быть уверен. В общем, полный нуб в этом вопросе. Буду благодарен, если кто-нибудь даст почитать о том, как вообще происходит общение сервера и уже авторизованного клиента.
Ну сам nodejs не очень для этого подходит, хотя могу ошибаться.
Я бы посоветовал смотреть в сторону серверного браузера.
Что-то вроде Фантом.js
Но есть более высокоуровневые(удобне работать со страницами и вообще) оболочки на основе фантома, например Каспер.
Вот совсем простое что-то и недавно вышедшее Nightmarejs
В очень примитивном случае, авторизация для клиента работает так:
- пользователь отправляет данные формы в POST запросе. То есть данные записываются в тело запроса, не в заголовки заметте.
- если говорить о PHP, то при вызове функции session_start (или автоматически если выставлено в php.ini) создается файл сессии (опять же может храниться и в памяти в реддисе каком, как настроят) и пользователю присваивается кука с идентификатором сессии. Эту самую куку сэтят через заголовки ответа: Set-Cookie: name=value
Затем при каждом запросе на сервер вам нужно будет эти куки так же отправлять в заголовках, иначе сервер подумает что вы новый чувак и будет создавать для вас новую сессию.
В сессии же на сервере обычно и сохраняется все что связано с авторизацией. То есть в большинстве случаев нужно просто посылать куки которые вам устанавливают с сервера и разруливать это дело.
Но увы это лишь самый распространенный способ авторизации, насколько я помню в том же IPB обычно сессии дополнительно привязывались к вашему IP и куча всего еще, типа отдельных токенов в URI но я честно уже не припомню, давно уже не работал с этими штуками.
В вашем случае самым простым решением было бы вооружиться phantomjs и просто автоматизировать действия пользователя. Все эти вещи как сохранение и хэндлинг кук по идее оно будет делать за вас. Вам лишь нужно будет прописать последовательность действий. Так же будет намного проще парсить.
на php тоже есть простое решение - Snoopy.class. Но в тегах указано php не было не стал писать. Snoopy сам все запоминает, а мы только посты делаем и геты нужные.