информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Net] Большое спасибо! Как всегда всё разложил по полочкам ;-) 26.08.09 06:23  Число просмотров: 988
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
<programming>
[net] как из своей программы общаться с сервером через proxy? 25.08.09 13:47  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 25.08.09 13:49  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Вот, например, в браузере Opera в разделе настроек "Настройки->Дополнительно->Сеть->Прокси" можно задать прокси серверы и весь трафик будет идти через них, а как добиться такого же в своей программе?

Мне известно два вида прокси: SOCKS и HTTP Proxy, один из них я даже реализовывал собственноручно и использовал его на локальной машине. Но то, как пользоватся услугами стороннего PROXY понять не могу.

Вот я пишу программу (на C++), которая взаимодействует с Интернетом через сокеты. Без Прокси механизм работы с сокетами мне понятен, а вот с прокси труба. Выручайте.

Да, и ещё вопрос в догонку: есть ли какая-то принципиальная разница в программировании доступа через прокси для SOCKS и HTTP Proxy, или с точки зрения меня, как пользователя прокси, это программирование будет одинаковым?
[Win32] Под вендой? 25.08.09 20:06  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 25.08.09 20:35  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Мне известно два вида прокси: SOCKS и HTTP Proxy, один из
> них я даже реализовывал собственноручно и использовал его
> на локальной машине. Но то, как пользоватся услугами
> стороннего PROXY понять не могу.
Предположим, ты пишешь браузер.
Без прокси что делаем?
1) Создаём объект обычного сокета;
2) командуем ему делать коннект к удалённому веб-серверу. Имя в IP резольвится у нас локально, всей кухней с DNS занимается венда.
3) пишем в сокет HTTP заголовки, сокет отсылает их веб-серверу напрямую;
4) получаем ответ сервера, рендерим страницу.

С HTTP поркси что делаем?
1) Создаём объект обычного сокета;
2) Даём ему команду подключиться к HTTP прокси;
3) пишем в сокет HTTP заголовки, прокси их получает и дальше сам шлёт куда надо, имя в IP резольвит прокси, нам не нужен DNS;
4) получаем ответ прокси, рендерим страницу.

С SOCKS прокси что делаем?
1) Создаём объект проксированного сокета, который умеет общаться c SOCKS-прокси по протоколу SOCKS4 или SOCKS5.
2) даём команду объекту сокета приконнектиктся к удалённому серверу. Прокси сам резольвит имена, нам не нужен DNS.
3) Пишем в сокет HTTP заголовки, сокет на своём нижнем уровне пересылает двоичный поток прокси, прокси шлёт их дальше;
4) сокет получаем ответ прокси, выкусывает бинарный контент в соотв. с протоколам, отдаёт твоей проге, прога рендерит страницу.
Где взять классы проксированных сокетов? Не знаю, я не плюсист.

> Вот я пишу программу (на C++), которая взаимодействует с
> Интернетом через сокеты. Без Прокси механизм работы с
> сокетами мне понятен, а вот с прокси труба. Выручайте.
Если твоя программа взаимодействует не просто по TCP, а по протоколу HTTP, тогда ей подойдут HTTP прокси, HTTP сам по себе легко проксируется, потому что не содержит информации о состоянии, и может пересылаться от прокси к прокси, к серверам, от них к проксям и тебе обратно ;-)

> Да, и ещё вопрос в догонку: есть ли какая-то принципиальная
> разница в программировании доступа через прокси для SOCKS и
> HTTP Proxy, или с точки зрения меня, как пользователя
> прокси, это программирование будет одинаковым?
Даа... SOCKS4 и SOCKS5 кури двоичные протоколы.
У них есть состояние, дексрипторы, идентификаторы комманд и проч.
Но они прикольны тем, что:
1) Бинарные, т.е. работают на уровне TCP, а не HTTP.
2) Программа может открыть сокет на прокси, который будет слушать на определённом порту (если он там не занят), и перенаправлять к тебе запросы на подключение.

Такие, пироги.
Я в своё время писал софтину, которая должна была брать инфу по протоколу HTTP, тупо используя настройки, вбитые в IE.
И вот, для этого чудесно подошёл COM-объект, который прекрасно знают все, кто юзал AJAX, и называется он Microsoft.XMLHTTP, с его методами и событиями. Всё хорошо в том плане, что он юзает настройки прокси, вбитые в IE6, и всю работу делает сам.

Ну а ещё можешь погонять функции из виндовой стандартной либы WinInet.dll, информацию по её функциям ищи в MSDN. Она тоже много чего может, и с прокси может взаимодействовать сама, юзая или что в IE, или сам можешь указать их конфигурацию.

Удачи.
[Net] Большое спасибо! Как всегда всё разложил по полочкам ;-) 26.08.09 06:23  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach