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

Вниз

как пакеты через прокси пустить   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.036 c
2-1173007474
wolchonok29
2007-03-04 14:24
2007.04.01
Запуск приложения в сети


1-1171032439
Нож
2007-02-09 17:47
2007.04.01
gds_db 3050/tcp Unable to complete network request


15-1173440703
Vlad Oshin
2007-03-09 14:45
2007.04.01
..процесс, в котором исполнялся скрипт... В котором?


15-1173280682
Канадец
2007-03-07 18:18
2007.04.01
Talking to Americans on the streets


1-1170675164
Leff
2007-02-05 14:32
2007.04.01
некорректный ClipRect при resize TCustomControl а