Конференция "Сети" » Добавление в программу  «Работа через proxy - сервер» [D7, Win2k, WinXP]
 
  • Ruzzz © (03.08.08 15:12) [0]
    Нужно добвить возможность работы через прокси-сервера которые не поддерживают CONNECT, т.е. возможность использовать GET и POST.

    Подскажите где копать, с чего начатью Спасибо!
  • Slym © (03.08.08 18:06) [1]
    Начать с протокола...
    что за протокол? если HTTP то без проблем пройдет через прокси...
    если НЕТ: то облажался :)...
    прокси- это HTTP proxy и ничего кроме HTTP не может "проксировать". метод CONNECT позволяет расширить возможности протокола, но в проксях он разрешен (из соображений безопасности) зачастую на ограниченный список портов: 443, ... и пожалуй все :) кстати и прочие методы дальше 80-83, 8080, 3128 нечасто уходят, поэтому ими и проксях и ограничены
    решение если не HTTP:
    1. перейти на HTTP... коснется и клиента и сервера
    2. написать WEB приблуду-конвертер... коснется и клиента и сервера
  • DVM © (06.08.08 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 (01.03.09 09:15) [3]
    FAddr.sin_addr.s_addr :=  InetAddr(ProxyHost);
        FAddr.sin_port := htons(ProxyPort);

    delphi 7. Вот в этом пишет ошибку InetAddr и htons
  • FireMan_Alexey © (01.03.09 12:08) [4]
    >>xim12
    Uses Winsock или Winsock2(если найдеш) :)
 
Конференция "Сети" » Добавление в программу  «Работа через proxy - сервер» [D7, Win2k, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0.002]