Добрый день
Надо пройти авторизацию на сайте и получить необходимую информацию в фоновом режиме.
Просмотрел два варианта:
1-вариант:
2-вариант:
Оба ответа одинаковы: возвращает только главную страницу, не прошла авторизацию.
Подскажите, пожалуйста, что делаю не так.
Спасибо
Надо пройти авторизацию на сайте и получить необходимую информацию в фоновом режиме.
Просмотрел два варианта:
1-вариант:
//Для начала инициализация
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest
WinHttp.Open("POST", "https://crm.etm-system.com/home", Ложь);
WinHttp.SetRequestHeader("Connection", "keep-alive");
WinHttp.SetRequestHeader("Host", "crm.etm-system.com");
WinHttp.SetRequestHeader("Content-Type", "text/html;charset=utf-8");
WinHttp.send("{""login"":""login"",""password"":""password""}");
//WinHttp.SetCredentials(Логин,Пароль,0);
//WinHttp.Send();
//WinHttp.Send("login="+Логин+"&password="+Пароль+"");
Если WinHttp.Status = 200 Тогда
Сообщить(WinHttp.ResponseText);
Иначе
Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
Возврат;
КонецЕсли;
Показать2-вариант:
Сервер = "crm.etm-system.com";
Порт = 443;
Пользователь = Логин;
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("login", Логин);
ЗаголовокHTTP.Вставить("password", Пароль);
ЗаголовокHTTP.Вставить("Content-Type", "text/html;charset=utf-8");
Ресурс = "/home";
HTTPСоединение = Новый HTTPСоединение(Сервер,Порт,,,,, Новый ЗащищенноеСоединениеOpenSSL());
//HTTPСоединение1 = Новый HTTPСоединение(Сервер,Порт,Логин,Пароль,,, Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос = Новый HTTPЗапрос(Ресурс, ЗаголовокHTTP);
Результат = HTTPСоединение.Получить(HTTPЗапрос);
ТекстОтвета = Результат.ПолучитьТелоКакСтроку();
или
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP .Вставить("Content-Type", "text/html;charset=utf-8");
HTTPЗапрос = Новый HTTPЗапрос(Ресурс, ЗаголовокHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки("&login=" + Логин + "&password=" + Пароль, КодировкаТекста.UTF8);
Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ТекстОтвета = Результат.ПолучитьТелоКакСтроку();
ПоказатьОба ответа одинаковы: возвращает только главную страницу, не прошла авторизацию.
Подскажите, пожалуйста, что делаю не так.
Спасибо
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Пытаться что-то делать не разобравшись в методе авторизации и есть "не так".
В первую очередь нужно понять, как правильно авторизироваться. Хотя бы через браузер, но по хорошему надо узнавать у ТП ресурса, чтобы потом не забанили за подозрительные действия.
Из того, что я увидел:
- адрес ресурса авторизации "/login", а не "/home".
- через форму авторизации на указанном сайте выполняется post-запрос с телом:login=MyLogin&password=MyPassword
- идет ли какая ещё дополнительная проверка, например по "Referer", мне неизвестно.
Подскажите, пожалуйста, что делаю не так.
Пытаться что-то делать не разобравшись в методе авторизации и есть "не так".
В первую очередь нужно понять, как правильно авторизироваться. Хотя бы через браузер, но по хорошему надо узнавать у ТП ресурса, чтобы потом не забанили за подозрительные действия.
Из того, что я увидел:
- адрес ресурса авторизации "/login", а не "/home".
- через форму авторизации на указанном сайте выполняется post-запрос с телом:login=MyLogin&password=MyPassword
- идет ли какая ещё дополнительная проверка, например по "Referer", мне неизвестно.
(3)
Спасибо, в самом деле это так.
и спасибо за советы
Во многом разобрался (хотя пока проблему не решил)
Пытаться что-то делать не разобравшись в методе авторизации и есть "не так".
Спасибо, в самом деле это так.
и спасибо за советы
не забанили за подозрительные действия
,
дополнительная проверка, например по "Referer"
Во многом разобрался (хотя пока проблему не решил)
(4)(4) Установил Fiddler, не понял ничего в начале, как получить нужные параметры.
Но ваш совет был верным!
Спасибо большое!
Пока не удался решить проблему, но много полезного узнал
Но ваш совет был верным!
Спасибо большое!
Пока не удался решить проблему, но много полезного узнал
Сравни УРЛы, на которые шлет параметры обработка и браузер, сравни отправляемые параметры.
(2) на таком варианте код статуса 301 (WinHttp.Status),
а перенаправляющий ресурс /home.
Я попробовал войти через поле HTML. Видимо JS не включен, страница загружается с ошибками и многие функция не работают (надо признаться, я с вебом практически не работал). Из-за этого, на дальнейшие посты не реагирует.
НовыйАдрес = Результат.Заголовки.Получить("Location");
а перенаправляющий ресурс /home.
Я попробовал войти через поле HTML. Видимо JS не включен, страница загружается с ошибками и многие функция не работают (надо признаться, я с вебом практически не работал). Из-за этого, на дальнейшие посты не реагирует.
(6)301 - значит после авторизации выполняется переадресация на другую страницу.
Чтобы после авторизации открывать другие страницы сайта, надо получать куки из ответа авторизации (заголовок "Set-Cookie" или "set-cookie") и устанавливать их в заголовки (в "Cookie") при следующем обращении.
Чтобы после авторизации открывать другие страницы сайта, надо получать куки из ответа авторизации (заголовок "Set-Cookie" или "set-cookie") и устанавливать их в заголовки (в "Cookie") при следующем обращении.
К сожалению, с таким все равно не смог пройти авторизацию.
А если открыть сайта с использованием поле HTML, все гладко, кроме IE7 (даже IE11 полностью) не поддерживает JS в "встроенным браузере":
Так можно пройти авторизацию, но сайт полностью не загружается (т.е. так работать невозможно).
А после авторизации, оказывается переходить на ресурс "/main".
Внутри кода страницы, я не мог найти поле "Cookie", а также не знаю откуда получить параметры "Referer".
А если открыть сайта с использованием поле HTML, все гладко, кроме IE7 (даже IE11 полностью) не поддерживает JS в "встроенным браузере":
ВебСтраница = "https://crm.etm-system.com/home";
Попытка
ЭлементыФормы.ВебСтраница.Перейти(ВебСтраница);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//Через некоторое время
document = ЭлементыФормы.ВебСтраница.Документ;
// Устанавливаем логин и пароль в поля ввода
document.querySelector("input[name=""" + "login" + """]").value = Логин;
document.querySelector("input[name=""" + "password" + """]").value = Пароль;
document.querySelector("input[type=""" + "submit" + """]").Click();
ПоказатьТак можно пройти авторизацию, но сайт полностью не загружается (т.е. так работать невозможно).
/home это видимо адрес по умолчанию, на который выполняется переадресация после авторизации. Можете не переходить на нее, а переходить на нужную.
А после авторизации, оказывается переходить на ресурс "/main".
Внутри кода страницы, я не мог найти поле "Cookie", а также не знаю откуда получить параметры "Referer".
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот