Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Авторизация на стороннем сайте и парсинг его страницы
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
ivan.kh
Добрый день.
1С:Предприятие 8.3 (8.3.10.2580)
Есть сайт www.agrochart.com
После авторизации на нем будут доступны определенные страницы с аналитикой.
Хочу подгружать в базу эту аналитику, но не выходит.
Посмотрел через браузер, то процесс там выглядит так:
1. При переходе на страницу авторизации получаем уникальный token, назовем его token1
2. Потом post запросом передаем логин, пароль и в КУКИ запихиваем этот token1
3. В результате авторизации должны получить SessionId и новый token по которым можем дальше "ходить" по страницам.

Не могу понять, что именно делаю не так, но ошибки после отправки post нет (получаю код 301, хотя по логике должен быть 302), но вот SessionId и новый token не приходят.
необходимо зарегистрироваться для просмотра ссылки

Процедура КнопкаВыполнитьНажатие(Кнопка)    
    
    Сервер = "www.agrochart.com";
    Ресурс = "/en/users/login/";    

    Логин  = "test06032019@gmail.com";
    Пароль = "Qq123456";

    // Подключаемся к сайту.
    Соединение = Новый HTTPСоединение(Сервер, 443, , , , ,
      Новый ЗащищенноеСоединениеOpenSSL()
    );
    
    Запрос = Новый HTTPЗапрос(Ресурс);

    Результат = Соединение.Получить(Запрос);

    // В куках нам должны вернуть идентификатор сессии.
    Куки = Результат.Заголовки.Получить("Set-Cookie");
    Куки = СтрЗаменить(Куки, ";", Символы.ПС);
    ИдентификаторСессии1 =  Сред(СтрПолучитьСтроку(Куки, 1),11);    

    //Сообщить("Тело результата: " + Результат.ПолучитьТелоКакСтроку());
        
    Сообщить(ИдентификаторСессии1);
    Сообщить("Код возврата " + Результат.КодСостояния);    
    КодПриглашения = "next=" +
        "&email=" + Логин +
        "&password=" + Пароль +
        "&csrfmiddlewaretoken=" + ИдентификаторСессии1;    

    Запрос = Новый HTTPЗапрос();
    Запрос.Заголовки.Вставить("Referer","https://www.agrochart.com/en/users/login/");
    Запрос.Заголовки.Вставить("Cookie","csrftoken="+ИдентификаторСессии1);
    Запрос.УстановитьТелоИзСтроки(КодПриглашения, "ISO-8859-1");
    //Сообщить(Запрос.ПолучитьТелоКакСтроку());

    Результат = Соединение.ОтправитьДляОбработки(Запрос);

    Сообщить("Нам вернули код " + Результат.КодСостояния);      
    
КонецПроцедуры
Petre
Попробуйте с помощью fiddler сравнить запросы и ответы.
ivan.kh
Petre @ Сегодня, 12:40 необходимо зарегистрироваться для просмотра ссылки ,
Да и fiddler смотрел, понять в чем загвоздка не вышло.
Petre
Т. е. запросы и ответы и при работе в браузере, и при работе из 1с одинаковы?
ivan.kh
Petre @ Сегодня, 14:52 необходимо зарегистрироваться для просмотра ссылки ,
Не совсем, я там только разобрался как проверить правильно ли я token1 выбрал, дальше в fiddler'e запутался и смотрел только через браузер.
ivan.kh
В итоге сделал все так:
- создал парсер на python, который логинится на сайте, парсит нужные страницы и сохраняет результат в csw
- в 1С регламентным заданием затягиваю csv.

Если кому нужен по этому сайту парсер, пишите в ЛС - скину.
taalay
ivan.kh @ 14.03.19, 11:33 необходимо зарегистрироваться для просмотра ссылки ,
можете скинуть пожалуйста? bolotbekovtaalay@gmail.com
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.