Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как пакеты через прокси пустить


Страницы:   1 2

Succumb ©   (2006-10-14 17:16:00) 

Привет. Есть прога, которая через TTcpClient посылает пакеты, и собственно их принемает %) Как заставить прогу, делать это через прокси? тоесть каким компонентом, каким оператором, ф-цией и т.д.?
http прокся, без авторизации(если это важно), пакеты в проге через 80ый порт идут.


DVM   (2006-10-17 15:34:00) [1]

     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);


Пусик   (2006-10-16 20:05:00) [2]


> и этот метод разрешен сисадмином


Еще стоит добавить, если админом разрешен доступ в интенет;)


umbra   (2006-10-16 19:33:00) [3]

2 Пусик ©   (16.10.06 18:47) [18]

и этот метод разрешен сисадмином


Пусик   (2006-10-16 18:47:00) [4]


> Ну с этого нужно было и начинать, что по хттп-протоколу,
>  иначе не получится.
</
> Если не http - забудь, т.к. прокся у тебя http.

I>

Протокол не имеет значения, если прокси поддерживает метод connect.


Ketmar   (2006-10-16 18:12:00) [5]

>[16] SergP(c) 16-Oct-2006, 17:21
угу. я так за Оперой наблюдал. сколько мусора она передаёт, оказывается! %-)


SergP   (2006-10-16 17:21:00) [6]

лучше всего взять браузер и законектиться сначала без прокси, а потом через прокси, открыть любой сайт, просмотреть снифером чего он передает и увидеть разницу в запросах с прокси и без прокси...
Можно конечноьи почитать что-нить, но в любом случае посмотреть на наглядный пример не помешает.


umbra   (2006-10-16 11:38:00) [7]


> Извени, не смог найти его в палитре делфи, не подскажешь
> где он находится?
>

Для Д7 и больше - вкладка Indy Clients


Ketmar   (2006-10-16 02:21:00) [8]

ещё можно вместо "connection: close" писать "HTTP/1.0". но некоторые сервера обижаются. но очень некоторые. а лучше -- и то, и то. и ещё "proxy-connection: close".


Succumb   (2006-10-16 02:18:00) [9]

Ketmar ©   (16.10.06 02:15) [12]
учту ;)


Ketmar   (2006-10-16 02:15:00) [10]

кстати, обычно достаточно #10, а не CRLF. хотя CRLF надёжней. %-)


Succumb   (2006-10-16 02:11:00) [11]

Ketmar ©   (16.10.06 02:07) [9]
О, пасибо. Оно заработало %)


Succumb   (2006-10-16 02:10:00) [12]


> Я так понял нужно написать http-клиент работающий через
> прокси? он уже есть - TIdHTTP. Он имеет встроенные средства
> для работы с прокси.


Извени, не смог найти его в палитре делфи, не подскажешь где он находится?


Ketmar   (2006-10-16 02:07:00) [13]

в GET для прокси рекомендуют прописывать полный URL.


Succumb   (2006-10-16 01:54:00) [14]

Орион ©   (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]
Сорри, просто я подумал, что этото топик более подходит под тематику вопроса.
> (заголовок хттп-запроса при прямом конекте отличается от
> такого же заголовка при конекте через прокси)

подскажи пожалуйсто, как он должен выглядить?


SergP   (2006-10-15 10:38:00) [15]

> [3] Succumb   (14.10.06 21:07)
> Именно по хттп протоколу.
> Уху, весело ;)


Ну с этого нужно было и начинать, что по хттп-протоколу, иначе не получится.
Да и зачем создавать одинаковые ветки:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1160771283&n=18

?

А по сабжу: конектишься не к требуемому серверу, а к прокси. Но заголовок хттп-запроса меняешь в соответствии с требованиями (заголовок хттп-запроса при прямом конекте отличается от такого же заголовка при конекте через прокси)


Eraser   (2006-10-14 23:21:00) [16]

> [0] Succumb   (14.10.06 17:16)

вопрос как-то сумбурно задан. Я так понял нужно написать http-клиент работающий через прокси? он уже есть - TIdHTTP. Он имеет встроенные средства для работы с прокси.


Орион   (2006-10-14 21:12:00) [17]

> [3] Succumb   (14.10.06 21:07)

т.е. например ты хочешь запросить главную страничку Гугла:
- формируешь запрос, с полем "Host: google.ru"
- коннектишся на порт 80 сервера google.ru
- передаешь запрос серверу, получаешь ответ.

Работа через прокси:
- формируешь запрос, с полем "Host: google.ru"
- коннектишся на порт и хост прокси-сервера
- передаешь запрос серверу, получаешь ответ.


Орион   (2006-10-14 21:09:00) [18]

> [3] Succumb   (14.10.06 21:07)

Тогда все просто. Коннекти свой TTCPClient на хост/порт прокси и работай с ним.


Succumb   (2006-10-14 21:07:00) [19]

Именно по хттп протоколу.
Уху, весело ;)


Орион   (2006-10-14 21:03:00) [20]

"Как заставить прогу, делать это..."
Гы-гы)) Я сеня в особенном настроении))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо