| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Прозрачный прокси |
| Автор: ASGDeveloper 9.5.2006, 18:08 |
| Вопрос такой, существует ли способ написания subj'а на дельфях? |
| Автор: ASGDeveloper 9.5.2006, 18:36 | ||
Пример можешь дать? |
| Автор: Демо 9.5.2006, 20:29 |
| ASGDeveloper, Да просто смотри уже готовый TIdHTTPProxyServer на закладке Indy Servers в палитре компонентов. Добавлено @ 20:30 А реальный пример - это ж не просто бросить компоненты на форму. Нужно писать код, и немало. |
| Автор: ASGDeveloper 9.5.2006, 20:45 | ||||
Демо,
Хе-х... Версия Indy как я понимаю 10? Жаль, проект привязан к Indy 9
Может хотя бы инфа есть по этой теме? |
| Автор: Демо 9.5.2006, 21:33 |
| http://www.delphisources.ru/pages/sources/internet/2005_year/alt_http_proxy.html ж) |
| Автор: ASGDeveloper 9.5.2006, 21:58 |
как же, видел. это разве прозрачный проксик? |
| Автор: Демо 9.5.2006, 22:01 |
Так это же пример! и что ты называешь прозрачным прокси? |
| Автор: ASGDeveloper 9.5.2006, 23:05 |
Пример обычного прокси. как и все: это принудительное проксирование. то есть например, браузер отправляет запрос на www.sait.com:80, а прокся принудительно перенавляет на какой-нить localhost:8078 или проще говоря форвардинг трафика с одного порта на другой (грубо говоря) |
| Автор: Демо 10.5.2006, 00:23 | ||
Ты неправильно трактуешь понятие "Прозрачный прокси-сервер"(или "Transparent Proxy-Server"). Прозрачные прокси - это proxy, которые не являются анонимными. Они, во-первых дают знать, что используется proxy-сервер, а во-вторых "выдают" IP-адрес своего клиента. Задачами таких proxy, как правило, является кэширование информации и / или обеспечение выхода в Internet нескольких компьютеров через одно соединение. Проще сказать, они в заголовке передают в поле X-Forwarded-For адрес клиента. То, что ты называешь прозрачностью, не что иное, как TCP-PortMapping. Простейший пример: http://forum.vingrad.ru/index.php?showtopic=95193 |
| Автор: ASGDeveloper 10.5.2006, 06:35 | ||||
Странно, но даже поиск в гугле дает аналогичное моему объяснение.
Тогда может подказать, как форвардить трафик с одного порта на другой? |
| Автор: Демо 10.5.2006, 08:42 | ||
На маршрутизаторах этим занимается файрволл, будь то встроенный(например, на Cisco), или программный(Squid). Как работает portMapping: Есть хост (192.168.0.2), на нем крутится WEB-Сервер(порт 81); Есть Доступ из интернета к внешнему маршрутизатору (111.111.111.111) На маршрутизаторе реализована следующая процедура: При обращении из интернет по адресу 111.111.111.111:80 маршрутизатор отправляет приходящие пакеты на хост во внутренней сети 192.168.0.2:81, а ответ отправляет исходному автору запроса. Как работает прокси: Есть прокси-вервер по адресу 192.168.0.2 В параметрах подключения в браузере у клиента указывается его адрес. При запросе от клиента на прокси в заголовок запроса добавляется дополнительный параметр - Proxy-Connection: Keep-Alive Далее прокси сервер делает запрос на реальный хост, указанный в запросе, результат передает клиенту. Если прокси прозрачный, в запросе реальному хосту он передает адрес клиента в параметре X-Forwarded-For, если анонимный - не передает. Определи, что тебе точно нужно - первый вариант, или второй. Добавлено @ 08:43 Кстсти, в предыдущем посте есть ссылка на пример первого варианта. |
| Автор: Snowy 10.5.2006, 08:55 |
| Снова отправляю на пример маппера: http://forum.vingrad.ru/index.php?showtopic=89811&view=findpost&p=689298 |
| Автор: ASGDeveloper 10.5.2006, 10:01 |
| я не понимаю, зачем мне маппер, хотя видимо я задачу не пояснил, сорри у меня такая задача, нужно чтобы браузер, без настройки проксей, гнал свой трафик например через localhost:8080 |
| Автор: Snowy 10.5.2006, 10:15 |
| Без настройки прокси, он этого делать не станет. Есть, конечно варианты. Но они далеко не простые. |
| Автор: ASGDeveloper 10.5.2006, 10:40 |
Вот и я о том. Мы простых путей не ищем! ИМХО моя квалификация позволяет это сделать. Ты главное хотя намекни, как можно осуществить форвардинг трафика на другой порт. ЗЫ Гугл с яндексом молчат, ничего путного не узнал от них. Все больше про линукс. |
| Автор: RA 10.5.2006, 11:00 | ||
тогда тебе сюда freecap.ru, за описухой и сорсами. Добавлено @ 11:01 Потом ставь себе прокси делай его прозрачным, подключай праузер через freecap к проксю, и радуйся жизни. |
| Автор: Snowy 10.5.2006, 11:22 |
| Варианты: 1. Сложный, но грамотный. Перехватывать все пакеты, идущие на 80-й порт и перенаправлять через нужный тебе хост-порт. 2. Попроще. Подменить все DNS запросы. Тут разные варианты. Все запросы будут идти на один IP, независимо от адреса (кроме тех, где адрес указан фактически). А эти запросы уже перенаправлять, спрашивая их IP у честного DNS. 3. Хук на WinInet запросы. Будет действовать не на всех, но на IE будет точно. Из этих вариантов гарантированный 1-й. Остальные имеют недостатки. Но первый самый сложный в реализации. |
| Автор: Nickel 10.5.2006, 14:09 | ||
Обрати внимание на файлик hosts в WINDOWS\system32\drivers\etc
Немного не в тему, но может пригодиться. Что касается сабжа, может я чего-то не понимаю... Наскока я знаю прозрачные прокси ставят в локалке для доступа в интеренет. Пользователю не надо указывать прокси не в настройках браузера, ни использовать freecap, чтобы например поиграться в сетевую игрушку через инет. Как это работает можно почитать http://en.wikipedia.org/wiki/Proxy_server#Proxy_transparency. Кстати, у того же самого squid'а реализована возможность Transparent Proxy, посмотри сорцы. |
| Автор: ASGDeveloper 10.5.2006, 14:30 | ||
Не подскажешь как можно реализовать? У меня тут еще идея пришла, что если хучить функцию connect из winsock api и ставить нужный мне адрес? Вроде работать будет 100% со всеми браузерами. (идея взята из freecap). |