Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Как наладить HTTP/HTTPS прокси через IdTCPClient?   Найти похожие ветки 

 
Aleksandr.   (2005-01-11 12:06) [0]

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


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

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


 
Reindeer Moss Eater ©   (2005-01-11 12:35) [2]

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


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

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

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


 
Seeker ©   (2005-01-11 12:58) [4]


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

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


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

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


 
Reindeer Moss Eater ©   (2005-01-11 13:09) [6]

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


 
Seeker ©   (2005-01-11 13:09) [7]

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

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

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


 
Seeker ©   (2005-01-11 13:12) [8]


> Aleksandr.

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


 
Reindeer Moss Eater ©   (2005-01-11 13:12) [9]

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

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


 
Seeker ©   (2005-01-11 13:23) [10]

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

   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;


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

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



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.052 c
1-1109267295
Fenik
2005-02-24 20:48
2005.03.13
Память, занимаемая массивом, содержащим дин. массивы.


14-1108985752
wl
2005-02-21 14:35
2005.03.13
Распознавание цифр на рисунке


4-1107031601
Unknown
2005-01-29 23:46
2005.03.13
Dll Functions


9-1103047588
FUNKy
2004-12-14 21:06
2005.03.13
Вопрос про определение дистанции до поверхности Glscene/OpenGL


4-1107326689
greenbloody
2005-02-02 09:44
2005.03.13
Логическое имя CD





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский