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

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

Добавление в программу  «Работа через proxy - сервер» [D7, Win2k, WinXP]


Ruzzz ©   (2008-08-03 15:12:00) 

Нужно добвить возможность работы через прокси-сервера которые не поддерживают CONNECT, т.е. возможность использовать GET и POST.

Подскажите где копать, с чего начатью Спасибо!


FireMan_Alexey   (2009-03-01 12:08:00) [1]

>>xim12
Uses Winsock или Winsock2(если найдеш) :)


xim12   (2009-03-01 09:15:00) [2]

FAddr.sin_addr.s_addr :=  InetAddr(ProxyHost);
    FAddr.sin_port := htons(ProxyPort);

delphi 7. Вот в этом пишет ошибку InetAddr и htons


DVM   (2008-08-06 11:06:00) [3]


> Подскажите где копать, с чего начатью Спасибо!

Чтобы запрос можно было сделать через прокси, то надо лишь слегка этот запрос модифицировать, ну и подключаться само собой надо к прокси, а не к HTTP серверу и запрос слать опять же прокси.

Вот этот кусочек кода думаю прояснит отличия:


ZeroMemory(@FAddr, SizeOf(FAddr));
 FAddr.sin_family := PF_INET;
 if UseProxy then
   begin
     FRequest := 'GET http://' + Host + ':' + inttostr(Port) + Path + ' HTTP/' + HTTPVersion + CRLF +
                 'Host: ' + Host + ':' + inttostr(Port) + CRLF +
                 'User-Agent: Mozilla/5.0' + CRLF +
                 'Accept: */*' + CRLF +
                 'Keep-Alive: 300'  + CRLF +
                 'Connection: keep-alive';
     if BasicAuthorization then FRequest := FRequest + CRLF + 'Authorization: Basic ' + EncodeBase64(UserName + ':' + Password);
     if ProxyBasicAuthorization then FRequest := FRequest + CRLF + 'Proxy-Authorization: Basic ' + EncodeBase64(ProxyUserName + ':' + ProxyPassword);
     FRequest := FRequest + CRLFCRLF;
     FAddr.sin_addr.s_addr :=  InetAddr(ProxyHost);
     FAddr.sin_port := htons(ProxyPort);
   end
 else
   begin

     FRequest := 'GET ' + Path + ' HTTP/' + HTTPVersion + CRLF +
                 'Host: ' + Host + ':' + inttostr(Port) + CRLF +
                 'User-Agent: Mozilla/5.0' + CRLF +
                 'Accept: */*' + CRLF +
                 'Keep-Alive: 300'  + CRLF +
                 'Connection: keep-alive';
     if BasicAuthorization then FRequest := FRequest + CRLF + 'Authorization: Basic ' + EncodeBase64(UserName + ':' + Password);
     FRequest := FRequest + CRLFCRLF;
     FAddr.sin_addr.s_addr := InetAddr(Host);
     FAddr.sin_port := htons(Port);
   end;


Slym   (2008-08-03 18:06:00) [4]

Начать с протокола...
что за протокол? если HTTP то без проблем пройдет через прокси...
если НЕТ: то облажался :)...
прокси- это HTTPproxy и ничего кроме HTTP не может "проксировать". метод CONNECT позволяет расширить возможности протокола, но в проксях он разрешен (из соображений безопасности) зачастую на ограниченный список портов: 443, ... и пожалуй все :) кстати и прочие методы дальше 80-83, 8080, 3128 нечасто уходят, поэтому ими и проксях и ограничены
решение если не HTTP:
1. перейти на HTTP... коснется и клиента и сервера
2. написать WEB приблуду-конвертер... коснется и клиента и сервера


Наверх

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