Здравствуйте, есть желание написать свой прокси-сервер, который по запросу с клиентской стороны (клиент так же пишем ручками) переадресоввывал все исходящие запросы через какой-либо сторонний сервер. Клиент указывает протокол и\или порт, и все запросы использующие данные параметры идут в обход до конечной цели.
Итак, с какой целью я создал вопрос?
Во-первых мне бы хотелось у вас спросить — а существуют ли готовые решения? Может мне было бы полезно о них почитать, а то и глянуть исходники. Вполне возможно что есть проекты, частично реализующие мои планы (TOR,SOCKS — те, которые я нашёл. Было бы замечательно в этом ещё разобраться, потому что касательно SOCKS — так в голове полная каша. Вам есть чем ещё поделиться?)
Во-вторых, в качестве ЯП на данный момент я рассматриваю Java, однако обусловлено это только кроссплатформенностью и небольшим опытом работы с ней. Подскажите, насколько это правильный выбор, может есть варианты получше?
Вам пописать для практики или реальная вещь нужна? Думаю, что после нормального знакомства с технологиями TOR у Вас не останется вопросов, но появятся идеи)) Даже на коленке можно настроить iptables для такого.
Касательно практики и полезности — я стараюсь совмещать приятное с полезным. Конечно, необходимости в этом нет, но приложение, как мне кажется (особенно в свете всей этой интернет-цензуры) вышло бы очень полезное.
Поверхностное знакомство с технологией TOR (изначально именно эту сеть я хотел использовать в качестве сторонних серверов) выдало один существенный недостаток — сама сеть работает только по протоколу TCP: С помощью Tor пользователи могут сохранять анонимность при посещении веб-сайтов, публикации материалов, отправке сообщений и при работе с другими приложениями, использующими протокол TCP.
Чистый TCP это, конечно, уже очень неплохо — но до «универсальный» немного не дотягивает. Хотя о TOR'e я бы с удовольствием почитал русскоязычные статьи, с которыми вы знакомы и считаете их полезными для понимания работы тор-клиента на программном уровне.
Кроссплатформенные ЯП:
Си, Си++, Питон, Руби, Джава, Эрланг, и тд собственно практически все что угодно.
Для Си Си++ нужно будет лишь выбрать кросс-платформенную библиотеку для работы с сетью ( boost для плюсов к примеру )
То есть никаких плюсов тот или другой язык не даст?
Под плюсами я понимаю какие-нибудь дополнительные фреймворки или библиотеки, отсутствующие у прочих ЯП
С мануалами, как правильно упомянуто в данном посту, у нетти проблемы. Но библиотека вроде симпатичная, хоть и задачи у неё немного другие — я же не высоконагруженный сервер строю, а некую петлю на локальной машине.
С мануалами, как правильно упомянуто в данном посту, у нетти проблемы. Но библиотека вроде симпатичная, хоть и задачи у неё немного другие — я же не высоконагруженный сервер строю, а некую петлю на локальной машине.