![]() |
Прокся на С#
Здарова, мне нужно написать http прокси сервер на С# (под NET платформу), но я практически ничего не знаю про структуру серверов. Есть какие нибуть мысли с чего мне начинать, может у кого есть какой нибуть исходник на эту тему?
|
Есть. Незнаю как на C#, но я делал так.
Создавай сокет, ставь его на прослушку на порту например 3128, при подключении создай поток (параметр которого - новый сокет клиента подключившегося). И считывай запрос. Далее бери оттуда строку "Host: <хост>" и подключайся к этому <хост>. И весь запрос шли ему. Читай оттуда ответ и шли обратно клиенту. Закрывай сокет. А ещё можно использовать WinInet. А ещё предлагаю написать сокс4,5 |
Как я понял чтобы получить ответ от хоста которому будет послана команда от прокси сервера, надо ему послать http команду, но в http я полный нуль, может есть какие нибуть примеры.
Ламерский вопрос, но в чем разница между сокс и http? :) |
Пошли ему тоже самое что тебе послал клиент.
Тебе не надо разбираться в этом. Скажу только что ХТТП запрос имеет такую структуру (пример) МЕТОД /путь/ HTTP/1.1\r\n Host: хост\r\n Connection: Close или Keep-Alive\r\n User-Agent: строка, идентиф. браузер\r\n другие опции \r\n например GET /index.php HTTP/1.1\r\n Host: antichat.ru\r\n Connection: Close\r\n \r\n попробуй приконектись к antichat.ru:80 телнетом и пошли ему это. (разумеется, \r\n - замени на перенос на новую строчку) он тебе вернет ответ HTTP/1.1 200 OK ещё много всего....\r\n ...\r\n \r\n данные, например главная страничка (хтмл код) |
Цитата:
SOCKS - механизм туннелирования. можно так сказать моими словами. |
спасибо за инфу, сегодня вечером попробую составить прогу и если повезет получить ответ от сайта :rolleyes:
|
Ну вот что у меня вышло (код на vb но большой разницы нету, и так все понятно ;) ):
Код:
Public Client As Sockets.TcpClientвыдает ошибку что буффер пустой и ничего не приняло "Parameter value cannot be null" Наверно я неправильно настроил socket, но соеденение он принимает, так что не могу понять в чем сдесь проблема :confused: |
а где класс проксисервера в этом коде? ) забыл написать, да? =)
|
Ой незнаю, используйте С-средства разработки вашего прокси, тогда я скажу сразу почему буфер пустой... На бейсике это извращение
|
Цитата:
|
nerezus, ты мне скажи что такое С# - и я тебе назову.
Я предложил все сделать по нормальному, взять Visual Studio, Borland C, и тп, и накатать прокси. А всякие ваши vb.net, C#, и т д для меня как "линукс для секретарши" |
Цитата:
Цитата:
P.S. Я не копрофил, чтобы пользоваться такими технололгиями, как Borland C/C++ или MFC. Смею заметить, что прогресс не стоит на месте. И задуматься, почему же авторы этих технологий отказались от них ;) P.P.S. И еще больше я ненавижу завязку логики программы на интерфейсе(правда грешат этим только борладновские продукты и VB до версии 6 включительно.) |
Цитата:
А ещё мне абсолютно похрену на прогресс, куда он там идет... Lolevel форева) |
Короче вернемся к теме, ненравиться вб держи на С#:
Код:
[STAThread] |
ну так ктонибуть знает что тут нитак? я никак неиогу понять :confused:
|
ну вот, следуя совету кеz'a я написал прогу которая читывает все что ей посылает A4proxy. Следующее как я понял надо все это передать тому, кому это направлено (сейчас я пробую только с гугл). Ну так вот я открываю новый сокет и соеденяюсь с гуглом на 80 порт, после чего посылаю сообщение принятое A4proxy. Дальше по идее, по этому же сокету мне должен прийти ответ, но он не приходит, что я теперь делаю нитак
З.Ы если надо будет то выложу и исходник, но скорее всего тут какая то совсем явная ошибка а я ее как обычно не замечаю :) |
| Время: 12:34 |