Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> код для подмены HTTP заголовка, код Proxy-сервера 
:(
    Опции темы
dehax
Дата 8.8.2011, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Здравствуйте!
Хочу написать Proxy-сервер на C++, который бы получал заголовки от HTTP-сервера (из интернета), подменял их и посылал браузеру и наоборот.
Идея такова: запускаю этот Proxy-сервер; открываю, например, Internet Explorer, в настройках IE указываю свой Proxy; теперь мой Прокси подменяет заголовки как мне нужно.
Помогите, пожалуйста, кодом.
Большое спасибо!!!
PM   Вверх
boostcoder
Дата 8.8.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(dehax @  8.8.2011,  22:12 Найти цитируемый пост)
кодом

http://forum.try-catch.ru/index.php?topic=702.0

PM WWW   Вверх
dehax
Дата 8.8.2011, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



boostcoder, спасибо за код!
К сожалению, я новичок и не смог скомпилировать этот код. Библиотеку boost загрузил и подключил.
Что касается исходника, я не могу понять, как он работает, не вижу, где происходит подмена заголовков. Использование сторонней библиотеки затруднило для меня анализ кода.
Будьте добры, объясните этот исходник или дайте ссылку на другой (с описанием на русском).
Спасибо!
PM   Вверх
boostcoder
Дата 9.8.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(dehax @  8.8.2011,  23:43 Найти цитируемый пост)
не смог скомпилировать этот код.

я наверное должен догадаться о возникших у вас проблемах? ;)

Цитата(dehax @  8.8.2011,  23:43 Найти цитируемый пост)
boost загрузил и подключил.

откуда скачали? как подключили? какой результат?

Цитата(dehax @  8.8.2011,  23:43 Найти цитируемый пост)
не вижу, где происходит подмена заголовков.

она не происходит. это код прокси. в нее добавляете вашу заменялку заголовков, и voila!

Цитата(dehax @  8.8.2011,  23:43 Найти цитируемый пост)
Будьте добры, объясните этот исходник или дайте ссылку на другой (с описанием на русском).

для начала ответьте на вопросы выше ;)
PM WWW   Вверх
dehax
Дата 9.8.2011, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



нажимаю на зелёный треугольник ("Выполнить") над кодом, в новом окне выбираю C++ -> Run, результат: 
Цитата

source.cpp:179:44: error: field '_client_buffer' has incomplete type
source.cpp:180:44: error: field '_proxy_buffer' has incomplete type
source.cpp: In member function 'void user_session::handle_connect(const boost::system::error_code&)':
source.cpp:68:33: error: '_proxy_buffer' was not declared in this scope
source.cpp:78:33: error: '_client_buffer' was not declared in this scope
source.cpp: In member function 'void user_session::handle_client_read(const boost::system::error_code&, std::size_t)':
source.cpp:97:33: error: '_client_buffer' was not declared in this scope
source.cpp: In member function 'void user_session::handle_proxy_write(const boost::system::error_code&)':
source.cpp:114:33: error: '_client_buffer' was not declared in this scope
source.cpp: In member function 'void user_session::handle_proxy_read(const boost::system::error_code&, std::size_t)':
source.cpp:132:33: error: '_proxy_buffer' was not declared in this scope
source.cpp: In member function 'void user_session::handle_client_write(const boost::system::error_code&)':
source.cpp:151:33: error: '_proxy_buffer' was not declared in this scope

Build finished with errors

пишет точно также как и под Visual Studio 2010.

boost скачал отсюда: http://www.boost.org/
файлы заголовков C++ папкой boost поместил в "\Microsoft Visual Studio 10.0\VC\include"


Цитата(boostcoder @  8.8.2011,  23:12 Найти цитируемый пост)
она не происходит. это код прокси. в нее добавляете вашу заменялку заголовков, и voila!

я прошу именно пример заменялки заголовков, как происходит этот процесс. Исходников прокси у меня куча.
PM   Вверх
boostcoder
Дата 9.8.2011, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(dehax @  9.8.2011,  00:23 Найти цитируемый пост)
я прошу именно пример заменялки заголовков, как происходит этот процесс.

ну успехов...

Добавлено через 2 минуты и 24 секунды
http://liveworkspace.org/code/1294772572a7...1cb21a9b179311a
PM WWW   Вверх
asmdzen
Дата 9.8.2011, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



У меня было задание написать прокси, только он на MFC (таковы были условия). Смотреть нужно server.cpp -> main_loop

Буду благодарен за любую критику по коду.

Это сообщение отредактировал(а) asmdzen - 10.8.2011, 09:20
PM MAIL   Вверх
dehax
Дата 9.8.2011, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



asmdzen, спасибо за код на MFC. У меня было много под Visual C++, а на MFC - пока ещё мало.
Не знаю почему, но когда я подключил этот прокси к IE 8, потом не мог его закрыть. CPU начал грузить на 100%, кнопки на нажатия реагировали через 15 сек.

Итак, вопрос остаётся открытым. Неужели никто не может мне подсказать, как подменять запросы клиента и ответы сервера?
PM   Вверх
boostcoder
Дата 10.8.2011, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



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

вопросы по существу будут? или тебя сразу отправлять на фриланс?

Это сообщение отредактировал(а) boostcoder - 10.8.2011, 17:44
PM WWW   Вверх
dehax
Дата 10.8.2011, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



boostcoder, честно говоря не ожидал о себе такое услышать!!!  smile 
Я бывал на многих форумах и встречал многих ЛЕНИВЫХ людей, могу даже в личку написать ник одного с этого форума (только с другой ветки). Я этим ленивым и помогал. НО я уже сказал, что я НОВИЧОК. Если написать заменялку заголовков очень просто, тогда прошу НЕ готовый код (я с удовольствием сам напишу, ведь это эффективнее в обучении), А ссылки на туториалы, мануалы, где всё подробно рассказано (на русском). Я не ленивый!!! И перед тем, как создавать новую тему, уже 4 дня сижу в гугле и не могу найти то, что мне нужно. 
boostcoder, надеюсь Вы меня поняли!
PM   Вверх
Олег2005
Дата 10.8.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Модератор: Ребята, будьте толерантны друг к другу
PM MAIL WWW MSN   Вверх
dehax
Дата 10.8.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Сижу уже 4 часа читаю разные статьи про WinSocket и реально не могу понять даже процесс подключения и передачи данных (со мной такое впервые). Пожалуйста, объясните:

1. Я так понял, что нужно создавать 2 сокета: от браузера к прокси, и от прокси к серверу в инете.
2. Когда я принимаю данные функцией recv, то записываю в буфер buf. В этот момент в buf и находятся HTTP-заголовки и HTML-код??? То есть buf можно подредактировать и отправить дальше с помощью функции send???

Правильно я понял всё вышеописанное или нет?
PM   Вверх
asmdzen
Дата 10.8.2011, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(dehax @  10.8.2011,  19:06 Найти цитируемый пост)
В этот момент в buf и находятся HTTP-заголовки и HTML-код???

именно так.
PM MAIL   Вверх
dehax
Дата 10.8.2011, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



asmdzen, спасибо огромное!!!
уже почти целую неделю ищу ответ на этот вопрос, а оказывается всё просто.

а как быть с первым предположением?
PM   Вверх
asmdzen
Дата 10.8.2011, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(dehax @  10.8.2011,  19:06 Найти цитируемый пост)
1. Я так понял, что нужно создавать 2 сокета: от браузера к прокси, и от прокси к серверу в инете.

на самом деле создается один сокет, который прослушивает(listen) какой-то порт (обычно 3128), он получает новые соединения, т.е. делает accept на какой-то другой сокет (создаем новый), этот другой сокет уже будет работать с браузером, для него уже следует создать еще один сокет который будет работать с инетом.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.