Форум: "Сети";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Внизкак пакеты через прокси пустить Найти похожие ветки
← →
Succumb (2006-10-14 17:16) [0]Привет. Есть прога, которая через TTcpClient посылает пакеты, и собственно их принемает %) Как заставить прогу, делать это через прокси? тоесть каким компонентом, каким оператором, ф-цией и т.д.?
http прокся, без авторизации(если это важно), пакеты в проге через 80ый порт идут.
← →
Орион © (2006-10-14 20:41) [1]> [0] Succumb (14.10.06 17:16)
по какому протоколу?
Если не http - забудь, т.к. прокся у тебя http.
← →
Орион © (2006-10-14 21:03) [2]"Как заставить прогу, делать это..."
Гы-гы)) Я сеня в особенном настроении))
← →
Succumb (2006-10-14 21:07) [3]Именно по хттп протоколу.
Уху, весело ;)
← →
Орион © (2006-10-14 21:09) [4]> [3] Succumb (14.10.06 21:07)
Тогда все просто. Коннекти свой TTCPClient на хост/порт прокси и работай с ним.
← →
Орион © (2006-10-14 21:12) [5]> [3] Succumb (14.10.06 21:07)
т.е. например ты хочешь запросить главную страничку Гугла:
- формируешь запрос, с полем "Host: google.ru"
- коннектишся на порт 80 сервера google.ru
- передаешь запрос серверу, получаешь ответ.
Работа через прокси:
- формируешь запрос, с полем "Host: google.ru"
- коннектишся на порт и хост прокси-сервера
- передаешь запрос серверу, получаешь ответ.
← →
Eraser © (2006-10-14 23:21) [6]> [0] Succumb (14.10.06 17:16)
вопрос как-то сумбурно задан. Я так понял нужно написать http-клиент работающий через прокси? он уже есть - TIdHTTP. Он имеет встроенные средства для работы с прокси.
← →
SergP © (2006-10-15 10:38) [7]> [3] Succumb (14.10.06 21:07)
> Именно по хттп протоколу.
> Уху, весело ;)
Ну с этого нужно было и начинать, что по хттп-протоколу, иначе не получится.
Да и зачем создавать одинаковые ветки:
http://delphimaster.net/view/2-1160771283/
?
А по сабжу: конектишься не к требуемому серверу, а к прокси. Но заголовок хттп-запроса меняешь в соответствии с требованиями (заголовок хттп-запроса при прямом конекте отличается от такого же заголовка при конекте через прокси)
← →
Succumb (2006-10-16 01:54) [8]Орион © (14.10.06 21:12) [5]
неполучается =/
делаю примерно так:
var
url := "GET /somepage"+IntToStr(i)+".htm HTTP/1.1" + CRLF + "Host: somehost.ru" CRLF + "Connection: close" + CRLF;
remotehost := "123.123.123.123"; //proxy
remoteport := "80"; //порт прокси
Connect();
...
SendLn(url);
Выдаёт:
Server Error
The following error occurred:
[code=BAD_URL] An invalid URL was detected. The appliance cannot serve the request as entered.
------------------------------------
Please contact the administrator.
Прокси 100% рабочая. Я что-то не так делаю?
SergP © (15.10.06 10:38) [7]
Сорри, просто я подумал, что этото топик более подходит под тематику вопроса.
> (заголовок хттп-запроса при прямом конекте отличается от
> такого же заголовка при конекте через прокси)
подскажи пожалуйсто, как он должен выглядить?
← →
Ketmar © (2006-10-16 02:07) [9]в GET для прокси рекомендуют прописывать полный URL.
← →
Succumb (2006-10-16 02:10) [10]
> Я так понял нужно написать http-клиент работающий через
> прокси? он уже есть - TIdHTTP. Он имеет встроенные средства
> для работы с прокси.
Извени, не смог найти его в палитре делфи, не подскажешь где он находится?
← →
Succumb (2006-10-16 02:11) [11]Ketmar © (16.10.06 02:07) [9]
О, пасибо. Оно заработало %)
← →
Ketmar © (2006-10-16 02:15) [12]кстати, обычно достаточно #10, а не CRLF. хотя CRLF надёжней. %-)
← →
Succumb (2006-10-16 02:18) [13]Ketmar © (16.10.06 02:15) [12]
учту ;)
← →
Ketmar © (2006-10-16 02:21) [14]ещё можно вместо "connection: close" писать "HTTP/1.0". но некоторые сервера обижаются. но очень некоторые. а лучше -- и то, и то. и ещё "proxy-connection: close".
← →
umbra © (2006-10-16 11:38) [15]
> Извени, не смог найти его в палитре делфи, не подскажешь
> где он находится?
>
Для Д7 и больше - вкладка Indy Clients
← →
SergP © (2006-10-16 17:21) [16]лучше всего взять браузер и законектиться сначала без прокси, а потом через прокси, открыть любой сайт, просмотреть снифером чего он передает и увидеть разницу в запросах с прокси и без прокси...
Можно конечноьи почитать что-нить, но в любом случае посмотреть на наглядный пример не помешает.
← →
Ketmar © (2006-10-16 18:12) [17]>[16] SergP(c) 16-Oct-2006, 17:21
угу. я так за Оперой наблюдал. сколько мусора она передаёт, оказывается! %-)
← →
Пусик © (2006-10-16 18:47) [18]
> Ну с этого нужно было и начинать, что по хттп-протоколу,
> иначе не получится.
</
> Если не http - забудь, т.к. прокся у тебя http.
I>
Протокол не имеет значения, если прокси поддерживает метод connect.
← →
umbra © (2006-10-16 19:33) [19]2 Пусик © (16.10.06 18:47) [18]
и этот метод разрешен сисадмином
← →
Пусик © (2006-10-16 20:05) [20]
> и этот метод разрешен сисадмином
Еще стоит добавить, если админом разрешен доступ в интенет;)
← →
DVM © (2006-10-17 15:34) [21]
FRequest := "GET http://" + FHost + ":" + inttostr(FPort) + FPath + " HTTP/" + FHTTPVersion + #13#10 +
"Accept: */*" + #13#10 +
"Pragma: no-cache" + #13#10 +
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Win32)" + #13#10 +
"Host: " + FHost + ":" + inttostr(FPort) + #13#10;
if FUserName <> "" then FRequest := FRequest + "Authorization: Basic " + EncodeBase64(FUserName + ":" + FPassword) + #13#10;
if FProxyUserName <> "" then FRequest := FRequest + "Proxy-Authorization: Basic " + EncodeBase64(FProxyUserName + ":" + FProxyPassword) + #13#10;
FRequest := FRequest + "Connection: Keep-Alive" + #13#10#13#10;
FAddr.sin_addr.s_addr := inet_addr(PChar(GetIPAddress(FProxyHost)));
FAddr.sin_port := htons(FProxyPort);
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.047 c