![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как наладить 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;
Проанализировать ответ на установление коннекта и вперед.