информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСтрашный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Tailscale окончательно забанила... 
 Прекращение работы антивируса Касперского... 
 Microsoft Authenticator теряет... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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