Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.27;
Скачать: CL | DM;

Вниз

Добавление в программу  «Работа через proxy - сервер»   Найти похожие ветки 

 
Ruzzz ©   (2008-08-03 15:12) [0]

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

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


 
Slym ©   (2008-08-03 18:06) [1]

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


 
DVM ©   (2008-08-06 11:06) [2]


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

Чтобы запрос можно было сделать через прокси, то надо лишь слегка этот запрос модифицировать, ну и подключаться само собой надо к прокси, а не к 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;


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

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

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


 
FireMan_Alexey ©   (2009-03-01 12:08) [4]

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



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

Текущий архив: 2011.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
2-1293352804
Mitroshin
2010-12-26 11:40
2011.03.27
Как правильно: Button1Click(Sender, nil или null)?


2-1294145958
SoulOfAngel
2011-01-04 15:59
2011.03.27
ошибка в присваивание процедур событиям


4-1246600171
БарЛог
2009-07-03 09:49
2011.03.27
Функция NetGetDCName библиотеки netapi32.dll


2-1293959368
Dimonch-ik
2011-01-02 12:09
2011.03.27
резонанс


15-1292189396
Юрий
2010-12-13 00:29
2011.03.27
С днем рождения ! 13 декабря 2010 понедельник