Имя: Пароль:
1C
1С v8
парсинг https в 1С
0 alexsandrinia
 
02.05.17
09:45
Встала задача пропарсить сайт с защищённым соединением https, постоянно выходит КодСостояния = 301. Кто сталкивался с такой проблемой? Как её победить?
1 Волшебник
 
модератор
02.05.17
09:47
Код состояния 301 протокола HTTP (HTTP 301) — в протоколе HTTP, код состояния, получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое месторасположение, и указывающий на то, что текущие ссылки, использующие данный URL, должны быть обновлены. Адрес нового месторасположения ресурса указывается в поле Location получаемого в ответ заголовка пакета протокола HTTP
2 alexsandrinia
 
02.05.17
09:51
(1) Получаю ссылку АдресСтраницы = ЗаголовкиОтвета.Получить("Location"), но при парсинге этой ссылки снова выходит прежний код состояния... также получать Location и дальше парсить?
3 Сергиус
 
02.05.17
10:09
(2)Смотри какие куки возвращаются в заголовках, надо их добавлять к запросу.
4 dezss
 
02.05.17
10:10
(2) ага...
и еще посмотреть, меняется ли Location...
иногда там возвращается относительный путь, иногда полный, надо смотреть и анализировать...
5 alexsandrinia
 
02.05.17
10:13
(3) как это можно просмотреть?
6 Вафель
 
02.05.17
10:13
переходи на селениум
7 Неверный Параметр И
 
02.05.17
10:15
кстати что-то Serginio1 с его Ъ давно не видно
8 Lexey_
 
02.05.17
10:22
(0) а читал ли ты в СП про параметры конструктора HTTPСоединение?
9 crocop
 
02.05.17
10:34
10 alexsandrinia
 
02.05.17
14:09
(8) читал, выставлял Истина при защищенном соединении
11 Lexey_
 
02.05.17
14:16
(10) СП говорит, что должна быть Истина?
12 Serginio1
 
02.05.17
14:17
http://its.1c.ru/db/metod8dev#content:5574:hdoc
(7) Злые вы. Ушел я от вас.
13 alexsandrinia
 
02.05.17
14:21
(11) ssl = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ) - так, что ли указывать в Соединение = Новый HTTPСоединение(СерверИсточник,,,,,,ssl,) ?
14 alexsandrinia
 
02.05.17
14:23
(12) всё равно 301 выходит
15 Lexey_
 
02.05.17
14:23
(14) может уже настало время показать код?
16 alexsandrinia
 
02.05.17
14:26
СерверИсточник = "https://www..ru";
Адрес = "/
.html";
ssl = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
Соединение = Новый HTTPСоединение(СерверИсточник,,,,,,ssl,);
Запрос = Новый HttpЗапрос(Адрес);
Ответ = Соединение.Получить(Запрос);
17 Lexey_
 
02.05.17
14:33
(16) реальные адреса покажи
18 alexsandrinia
 
02.05.17
14:35
(16)
СерверИсточник = "https://www.trial-market.ru";
Адрес = "/sredstva-dlya-kukhni-i-kukhonnoj-tekhniki/sredstva-dlya-kukhni/sredstvo-dlya-kukhni-mister-muskul-450ml-kurok.html";
19 Serginio1
 
02.05.17
14:35
(14) Обработай 301  как 302
Если Результат.КодСостояния = 302 Тогда
20 Lexey_
 
02.05.17
14:36
(18) СерверИсточник = "http://www.trial-market.ru";;
всё работает
21 Lexey_
 
02.05.17
14:37
(20) без https://
22 alexsandrinia
 
02.05.17
14:44
(21) делаю вот так
    СерверИсточник = "http://www.trial-market.ru";
    Адрес = "/sredstva-dlya-kukhni-i-kukhonnoj-tekhniki/sredstva-dlya-kukhni/sredstvo-dlya-kukhni-mister-muskul-450ml-kurok.html";
    Соединение = Новый HTTPСоединение(СерверИсточник);
    Запрос = Новый HttpЗапрос(Адрес);
    Ответ = Соединение.Получить(Запрос);
выходит теперь ошибка
Ошибка при вызове метода контекста (Получить)
    Ответ = Соединение.Получить(Запрос);
по причине:
Ошибка работы с Интернет:   Couldn't resolve host name
23 Lexey_
 
02.05.17
14:45
(22) СерверИсточник без "https://";?
24 Lexey_
 
02.05.17
14:48
(22) и где ЗащищенноеСоединениеOpenSSL?
25 alexsandrinia
 
02.05.17
14:52
(24) подправил, взлетело, спасибо!
вопрос теперь - почему нужно убирать https:// ?
26 Lexey_
 
02.05.17
14:53
(25) Параметры:

<Сервер> (обязательный)

Тип: Строка.
Хост сервера, с которым осуществляется соединение.
Примечание: Имя хоста не должно содержать указание протокола. Например, 1c.ru.
27 Lexey_
 
02.05.17
14:54
(25) я ж тебе говорил, читай СП
28 Адинэснег
 
02.05.17
15:19
когда 301 редирект прилетает в заголвке Location указано куда редиректит
29 Адинэснег
 
02.05.17
15:20
упс, дальше 0 не читал)