Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как наладить HTTP/HTTPS прокси через IdTCPClient? [D7, WinXP]


Aleksandr. ©   (2005-01-11 12:06:00) 

Пользователи начали плакаться, что злобные сисадмины не открывают порт, нужный программе для соединения по TCP с сервером, а для меня эти прокси - вообще незнакомая область. Поглядел я на настройки аськи, покопался с Indy 10, начал делать по образу и подобию. С socks 4-5 все понятно - у IdSocksInfo есть готовые типы vsSocks4-5, а вот что и как сделать с еще двумя пунктами - HTTP и HTTPS? Ничего вразумительного в доках Indy не нашел, сложилось впечатление, что в них вообще эти виды проксей не присутствуют.


Aleksandr.   (2005-01-11 14:22:00) [1]

Seeker © :
У нас в нашей сети есть программа-сервер и HTTP-прокси. Я устанавливаю для TCPClient хост и порт компьютер, на котором программа-сервер и порт, на котором она сидит, а для IdHTTPTunnelingProxy хостом имя прокси-сервера и его порт. Насчет Encode понял, счас истчо попробую.


Seeker   (2005-01-11 13:23:00) [2]

Тогда шли такую строку:

   s:=base64encode(user+':'+paswd);
   s:='Authorization: Basic '+s+CRLF+
      'Proxy-authorization: Basic '+s+CRLF;
   s:='CONNECT '+Host+':'+Port+' HTTP/1.0'+CRLF+
   'User-agent: Твой агент'+CRLF+
   s+ CRLF;


Seeker   (2005-01-11 13:12:00) [3]


> Aleksandr.

Интересно куда ты коннектишься?


Reindeer Moss Eater   (2005-01-11 13:12:00) [4]

при получении текста, в котором есть ошибка 407,

Что и требовалось доказать.
От тебя хотят авторизацию.


Reindeer Moss Eater   (2005-01-11 13:09:00) [5]

Это программа, позволяющая работать через HTTP туннель тем программам, которые не имеют в себе поддержки HTTP туннелирующих прокси.


Seeker   (2005-01-11 13:09:00) [6]

Т.е. не пропустить, а проанализировать.
если он начинается с:
'HTTPS/1.0 200' или
'HTTPS/1.1 200'или
'HTTP/1.0 200'или
'HTTP/1.1 200' то соединение установленно, иначе нет соединения.
заголовок от прокси идет до CRLF+CRLF.

> Если прокси требует авторизации, надо будет еще писать её
> собственную реализацию.

Как правило базовый тип авторизации, добавляется модуль Base64
и одна строчка в отправляемый запрос.
Кстати такой тип соединения и есть  
> HTTP Tunneling proxy


Aleksandr.   (2005-01-11 13:08:00) [7]

Seeker ©  :
Да? А он, падла, не пропускается... я смотрел в IdHTTPTunnelingProxy - он там посылает эту команду, при получении текста, в котором есть ошибка 407, посылает команды с идентификацией, а потом делает чтение, пока чтение не закончится, чтобы пропустить все ответы. И вот после этого в буфере все равно оказывается эта порнография. То ли руки у авторов кривые, то ли я лыжи забыл снять...


Seeker   (2005-01-11 12:58:00) [8]


> типа страница недоступна и прочее

Это ответ прокси, его нужно пропустить.


Aleksandr.   (2005-01-11 12:43:00) [9]

Seeker © :
Спасибо. Странно, у Indy 10 есть какое-то HTTP Tunneling proxy - там нечто подобное в командах, только "HTTP/1.0", соединение устанавливается, но когда я приступаю к чтению буфера, в нем оказывается HTML текст типа страница недоступна и прочее. Может, это то, что надо, просто криво сделано или криво мной обрабатывается?

Reindeer Moss Eater © :
HTTPPort - это что?


Reindeer Moss Eater   (2005-01-11 12:35:00) [10]

Там не все так просто.
Если прокси требует авторизации, надо будет еще писать её собственную реализацию.
Проще использовать готовый HTTPPort


Seeker   (2005-01-11 12:28:00) [11]

Там все просто, нужно при коннекте послать строку типа
'CONNECT '+Host+':'+Port+' HTTP/1.1'+CRLF+'User-agent: Мой агент'+CRLF+CRLF;
Проанализировать ответ на установление коннекта и вперед.


Наверх

Титульная страница Поиск, карта сайта Написать письмо