Форум: "Сети";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];
ВнизДобавление в программу «Работа через 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c