![]() |
|
Модераторы: feodorv |
![]()
|
|
| dehax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
Здравствуйте!
Хочу написать Proxy-сервер на C++, который бы получал заголовки от HTTP-сервера (из интернета), подменял их и посылал браузеру и наоборот. Идея такова: запускаю этот Proxy-сервер; открываю, например, Internet Explorer, в настройках IE указываю свой Proxy; теперь мой Прокси подменяет заголовки как мне нужно. Помогите, пожалуйста, кодом. Большое спасибо!!! |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
||||
|
||||
| dehax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
boostcoder, спасибо за код!
К сожалению, я новичок и не смог скомпилировать этот код. Библиотеку boost загрузил и подключил. Что касается исходника, я не могу понять, как он работает, не вижу, где происходит подмена заголовков. Использование сторонней библиотеки затруднило для меня анализ кода. Будьте добры, объясните этот исходник или дайте ссылку на другой (с описанием на русском). Спасибо! |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
я наверное должен догадаться о возникших у вас проблемах? ;) откуда скачали? как подключили? какой результат? она не происходит. это код прокси. в нее добавляете вашу заменялку заголовков, и voila!
для начала ответьте на вопросы выше ;) |
|||
|
||||
| dehax |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
нажимаю на зелёный треугольник ("Выполнить") над кодом, в новом окне выбираю C++ -> Run, результат:
пишет точно также как и под Visual Studio 2010. boost скачал отсюда: http://www.boost.org/ файлы заголовков C++ папкой boost поместил в "\Microsoft Visual Studio 10.0\VC\include"
я прошу именно пример заменялки заголовков, как происходит этот процесс. Исходников прокси у меня куча. |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
ну успехов... Добавлено через 2 минуты и 24 секунды http://liveworkspace.org/code/1294772572a7...1cb21a9b179311a |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
У меня было задание написать прокси, только он на MFC (таковы были условия). Смотреть нужно server.cpp -> main_loop
Буду благодарен за любую критику по коду. Это сообщение отредактировал(а) asmdzen - 10.8.2011, 09:20 |
|||
|
||||
| dehax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
asmdzen, спасибо за код на MFC. У меня было много под Visual C++, а на MFC - пока ещё мало.
Не знаю почему, но когда я подключил этот прокси к IE 8, потом не мог его закрыть. CPU начал грузить на 100%, кнопки на нажатия реагировали через 15 сек. Итак, вопрос остаётся открытым. Неужели никто не может мне подсказать, как подменять запросы клиента и ответы сервера? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
dehax, я тебе уже дал пример в который всего-то нужно добавить подмену заголовка. но ты походу нереально ленив, что даже с таким простым делом не в состоянии справится...
вопросы по существу будут? или тебя сразу отправлять на фриланс? Это сообщение отредактировал(а) boostcoder - 10.8.2011, 17:44 |
|||
|
||||
| dehax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
boostcoder, честно говоря не ожидал о себе такое услышать!!!
Я бывал на многих форумах и встречал многих ЛЕНИВЫХ людей, могу даже в личку написать ник одного с этого форума (только с другой ветки). Я этим ленивым и помогал. НО я уже сказал, что я НОВИЧОК. Если написать заменялку заголовков очень просто, тогда прошу НЕ готовый код (я с удовольствием сам напишу, ведь это эффективнее в обучении), А ссылки на туториалы, мануалы, где всё подробно рассказано (на русском). Я не ленивый!!! И перед тем, как создавать новую тему, уже 4 дня сижу в гугле и не могу найти то, что мне нужно. boostcoder, надеюсь Вы меня поняли! |
|||
|
||||
| Олег2005 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Модератор: Ребята, будьте толерантны друг к другу
|
|||
|
||||
| dehax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
Сижу уже 4 часа читаю разные статьи про WinSocket и реально не могу понять даже процесс подключения и передачи данных (со мной такое впервые). Пожалуйста, объясните:
1. Я так понял, что нужно создавать 2 сокета: от браузера к прокси, и от прокси к серверу в инете. 2. Когда я принимаю данные функцией recv, то записываю в буфер buf. В этот момент в buf и находятся HTTP-заголовки и HTML-код??? То есть buf можно подредактировать и отправить дальше с помощью функции send??? Правильно я понял всё вышеописанное или нет? |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
||||
|
||||
| dehax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.1.2011 Репутация: нет Всего: 1 |
asmdzen, спасибо огромное!!!
уже почти целую неделю ищу ответ на этот вопрос, а оказывается всё просто. а как быть с первым предположением? |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
на самом деле создается один сокет, который прослушивает(listen) какой-то порт (обычно 3128), он получает новые соединения, т.е. делает accept на какой-то другой сокет (создаем новый), этот другой сокет уже будет работать с браузером, для него уже следует создать еще один сокет который будет работать с инетом. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |