Имя: Пароль:
1C
 
HTTPСоединение через ИнтернетПрокси
0 ass1c
 
20.01.23
13:20
Коллеги, подскажите в чем нюанс использования ИнтернетПрокси. Есть API которое возвращает ip адрес: В браузере url "https://api.ipify.org/?format=json" и приходит ответ "{"ip":"85.191.124.67"}".

Реализовал это в 1с, но при этом в HTTPСоединение использую прокси сервер. Разве теперь этот метод на должен мне вернуть ip равный ip прокси сервера (41.126.34.215), через который я выполняю данный запрос?
API взято отсюда: https://www.ipify.org/


&НаСервере
Процедура ТестПроксиАйпи()

ПроксиСервер = Новый ИнтернетПрокси(Ложь);
ПроксиСервер.Пользователь = "123";
ПроксиСервер.Пароль       = "890";
ПроксиСервер.Установить("https", "41.126.34.215", 3100, "123", "890");

СерверИсточник = "api64.ipify.org";
НТТР = Новый HTTPСоединение(СерверИсточник, , , , ПроксиСервер);

HTTPЗапрос = Новый HTTPЗапрос("?format=json");
                      
Результат     = НТТР.Получить(HTTPЗапрос);
ОтветИзСтроки = Результат.ПолучитьТелоКакСтроку();
    
Сообщить(ОтветИзСтроки); //{"ip":"85.191.124.67"}

КонецПроцедуры
1 KJlag
 
20.01.23
13:33
2 arsik
 
гуру
20.01.23
13:36
(0) Нет. Если в проксе не указано - прятать адрес клиента, он еще в запросах будет эти данные серверу отправлять.
3 ass1c
 
20.01.23
13:40
(1) - про файлик "inetcfg.xml" читал информацию, но думал что если создать прокси с параметром ЛОЖЬ, то по умолчанию он ниоткуда брать настройки не будет Новый ИнтернетПрокси(Ложь);
Надо проверить что в файле...
4 ass1c
 
20.01.23
13:59
(2) Если настроить прокси в браузере (к примеру Edge) с этими параметрами, то запрос (https://api.ipify.org/?format=json) возвращает ip прокси сервера "41.126.34.215"
Если сделать запрос из другого браузера, где прокси сервер не указан в настройках, то вернется ip "85.191.124.67"
Из 1с все так же возвращается "85.191.124.67" при указанных настройках прокис сервера в http соединении
5 ass1c
 
20.01.23
14:12
(2) Т.е. хочешь сказать что реализовать такое не возможно? что бы он вернул ip прокси. Это такая особенность?
6 arsik
 
гуру
20.01.23
15:43
(5) Не это другое. Видимо у тебя не через прокси все таки трафик идет от 1С
7 ass1c
 
20.01.23
15:49
(6) ок, спасибо. Пока пробую с аутентификацией из 1с в прокси играться и так далее, но пока результата нет... в теории должно возвращать адрес прокси сервера
8 arsik
 
гуру
20.01.23
16:10
(7) Попробуй как и пробовал в (0)но с одним отличием - HTTPS в верхнем регистре. Посмотрел сейчас в БСП там в верхнем. Ну или методами БСП воспользуйся.
ПроксиСервер.Установить("HTTPS", "41.126.34.215", 3100, "123", "890");
9 arsik
 
гуру
20.01.23
16:11
(8) БСП  ПолучениеФайловИзИнтернетаСлужебный.НовыйИнтернетПрокси
10 arsik
 
гуру
20.01.23
16:30
+(8) Ну и в HTTPСоединение не указанно ЗащищенноеСоединение, а значит у тебя запрос через http идет, а прокси ты для https указал
11 ass1c
 
20.01.23
17:30
(10) Е... ты гений) Спасибо! Дело оказалось именно в ЗащищенноеСоединение! Плюс немного переработал метод установить у прокси - убрал две лишние строчки и поставил флаг ложь, что бы была Basic аутентификация.

&НаСервере
Процедура ТестПроксиАйпи()

ПроксиСервер = Новый ИнтернетПрокси(Ложь);
ПроксиСервер.Установить("https", "41.126.34.215", 3100, "123", "890", Ложь); + убрал две строчки выше и добавил последний параметр аутентификации ЛОЖЬ

СерверИсточник = "api64.ipify.org";

НТТР = Новый HTTPСоединение(СерверИсточник, , , , ПроксиСервер); //Это будет йапи 85.191.124.67
НТТР = Новый HTTPСоединение(СерверИсточник, , , , ПроксиСервер , , Новый ЗащищенноеСоединениеOpenSSL()); //Это будет йапи прокси сервера 41.126.34.215

HTTPЗапрос = Новый HTTPЗапрос("?format=json");
                      
Результат     = НТТР.Получить(HTTPЗапрос);
ОтветИзСтроки = Результат.ПолучитьТелоКакСтроку();
    
Сообщить(ОтветИзСтроки); //{"ip":"41.126.34.215"}

КонецПроцедуры


Спасибо!