|
Авторизация на сайте rosrabota.ru | ☑ | ||
---|---|---|---|---|
0
Evil-Wisp
09.07.18
✎
09:04
|
Здравствуйте.
Нужно по ссылке вида rosrabota.ru/my-response-download-pdf/1672783 скачивать резюме. Если делать GET запрос, то сайт возвращает Location //rosrabota.ru/new/login?redirect_to=%2F%2Frosrabota.ru%2Fmy-response-download-pdf%2F1672783 Пытаюсь делать POST запрос на авторизацию и получение cookie: АдресСервера = "rosrabota.ru"; АдресСтраницыАвторизации = "new/login?"; Соединение = Новый HTTPСоединение(АдресСервера); // Создать файлы запроса и получения ВремКаталог = КаталогВременныхФайлов() + "tempParser"; СоздатьКаталог(ВремКаталог); УдалитьФайлы(ВремКаталог,"*.*"); ИмяВыходногоФайла = "" + ВремКаталог + "\answer.html"; ИмяФайлаОтправки = "" + ВремКаталог + "\request.html"; Логин = "[email protected]"; Пароль = "1337"; // Подготовить файл для POST запроса POSTПараметры = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF16,, Истина, Символы.ПС); POSTПараметры.Записать("user=" + Логин + "&password=" + Пароль); //login email username user POSTПараметры.Закрыть(); // Определить заголовки POST, используя алгоритм "application/x-www-form-urlencoded" POSTЗаголовки = Новый Соответствие(); POSTЗаголовки.Вставить("POST "+ АдресСтраницыАвторизации +" HTTP/1.1"); POSTЗаголовки.Вставить("Host", АдресСервера); POSTЗаголовки.Вставить("Referer", "http://"+АдресСервера); POSTЗаголовки.Вставить("Connection", "keep-alive"); POSTЗаголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); // Отправляем POST запрос Попытка ОтветHTTP = Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, АдресСтраницыАвторизации, ИмяВыходногоФайла, POSTЗаголовки); Исключение Сообщить("Неудачная попытка соединения с " + АдресСервера + ": " + ОписаниеОшибки()); Возврат; КонецПопытки; // Получим ресурс на который нас перебросил сервер Если ОтветHTTP.КодСостояния = 302 Тогда АдресСтраницы = ОтветHTTP.Заголовки["Location"]; КонецЕсли; // Определить заголовки GET, с куками полученными от сервера GETЗаголовки = Новый Соответствие(); GETЗаголовки.Вставить("Cookie", ОтветHTTP.Заголовки["Set-Cookie"]); GETЗаголовки.Вставить("Connection", "keep-alive"); // Получаем страницу, указывая куки ОтветHTTP = Соединение.Получить("/my-response-download-pdf/1672783", ИмяВыходногоФайла, GETЗаголовки); В файле answer.html получаем ответ: {"error":"<b>Авторизоваться не удалось.</b><br>\nВероятно, вы допустили ошибку.\nПроверьте <b>раскладку клавиатуры</b>,\nне нажата ли клавиша «<b>Caps Lock</b>»,\nи попробуйте ввести email и пароль ещё раз.\n ","exec":null} В ответHTTP куков нет. На сайте форма окна авторизации <form method="post" class="common"> <input type="text" name="email" placeholder="Email"> <input type="password" name="password" placeholder="Пароль"> <div class="nowrap"> <button type="submit" class="btn btn-green">Войти</button><a href="#" class="password-reset">Забыли пароль?</a> </div> </form> Логин и пароль правильные. Подскажите, какие параметры можно попробовать передать, чтобы авторизация прошла |
|||
1
Evil-Wisp
09.07.18
✎
09:11
|
Авторизацию прошел:)
Нужна была КодировкаТекста.ANSI Параметры "email=" + Логин + "&password=" + Пароль Дальше передал куки, пока не цепляет, перенаправляет снова. |
|||
2
Звездец
09.07.18
✎
09:13
|
а для этого принципиально использовать 1с?
|
|||
3
Evil-Wisp
09.07.18
✎
09:17
|
(2) В принципе нет. Можно передать путь к скачанному файлу в процедуру.
|
|||
4
Звездец
09.07.18
✎
09:25
|
(3) ну и попробуй например на php или чем то что тебе ближе. Примеров в интернете много
|
|||
5
Evil-Wisp
09.07.18
✎
09:39
|
(4) И на 1С есть примеры.
Решил. Помогло HTTP авторизация на сайте через POST запрос // в Куки надо чистые куки из set-cookie передавать, без всяких частей и слэшей. Т.е. у меня только "sess=хххххххххххххххххххххххх;" |
|||
6
Evil-Wisp
09.07.18
✎
09:39
|
Всем спасибо:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |