|
|||||||
|
Цепочка proxy серверов: "классический" способ построения цепочки из proxyЗдесь представлена информация не просто о цепочках proxy серверов (о них уже сказано отдельно) и не об их построении вообще, а о так называемом "классическом" способе построения цепочек: что это такое, почему это не работает, и т.д. Что такое "классический способ построения цепочки прокси"Путешествуя по Internet в поисках информации о прокси серверах, Вы вероятно уже наталкивались на эти сведения. Если же нет, то сейчас Вам предстоит об этом узнать. Классическим способом построения цепочки прокси многие считают следующий: нужно просто в поле адреса написать URL следующего вида: http://proxy1:port1/http://proxy2:port2/http://www.server.ru/url/page.htm При этом каждый proxy сервер будет передавать запрос по цепочке следующему, тот - следующему, и т.д. до тех пор, пока запрос на документ не дойдет до конечного узла. Требуемый документ будет передан обратно по цепочке proxy. На чем основан этот механизм, кто его придумал и почемуОбъяснение тут довольно простое: все дело в самой технологии программирования через протокол HTTP. Действительно, когда начинаешь изучать прокси, кажется что это отдельный протокол, который очень сложным образом взаимодействует с серверами, и там все очень и очень сложно. На самом деле это не так. Рассмотрим механизм работы любого клиента (браузера), по скачиванию информации из интернет, скажем с сервера www.server.ru/homepage/index.htm как напрямую, так и с использованием proxy сервера proxy.ru:8080 : Подключение напрямую:
Подключение через proxy сервер:
Так вот, между этими запросами есть много общего. То есть по сути разница между ними кроется только в посылаемой команде GET: у обычного сервера запрашивается локальный файл (/homepage/index.htm), а у proxy сервера - полный URL (http://www.server.ru/homepage/index.htm) Поэтому и возник вопрос: а почему бы не сделать так, чтобы вместо обычного
пути к файлу (при прямом подключении) не подставлять полный URL? То есть
указать в качестве "подкаталога" на сервере полный адрес: Кто задал этот вопрос? Скорее всего, непрофессионал увидел как программист пишет код обращения к proxy серверу, и ему пришла в голову эта "гениальная по своей простоте" мысль. Почему этот способ не работаетРассмотрим подробно те причины, по которым эта мысль не может быть реализована на практике. I "небольшая" тонкость работыДело в том, что есть небольшая проблема с тем, как обрабатывается обращение по адресу http://proxy.ru:8080/http://www.server.ru/homepage/index.htm Рассмотрим конкретнее. Как это выглядит?
Вы заметили разницу? В пункте "2" первый символ аргумента в команде GET - это слеш (/). Именно из-за этого слеша запрошенный адрес не может быть обработан правильно. И этот символ никак не обойти, не заменить на пробел (тогда это не будет считаться частью адреса) и не сцепить с предыдущими символами (тогда будет: proxy.ru:8080http...). Неважно, сколько символов нужно выбросить - 1 или 100 - это непреодолимое препятствие. II не убедительно?"Нет, я не верю, что все так просто объясняется!" - скажете Вы. Что же на это возразить? Да очень просто! Вы что думаете, разработчики браузеров об этом не подумали? Неужели Вы считаете, что если бы такой способ построения цепочки был возможен, та же компания Microsoft не кричала бы о нем как о "уникальной возможности браузера Internet Explorer сделать Вашу анонимность абсолютной"? Это же стандарт! Он долго выработывался, и мы уверены - Microsoft, Netscape и другие компании (создатели браузеров) тщательно обдумывали все варианты работы с proxy, и выбрали наиболее эффективный - для Вас! Не верите? Тогда... III А вдруг это возможно...Давайте представим себе на мгновение, что это стало возможным - эта уникальнейшая, наилегчайшая технология построения цепочки любого размера из прокси серверов. Давайте подумаем, как это будет выглядеть для нас? Условие: мы исходим из реального положения дел. То есть учитываем тот факт, что технология работы прокси такова как сейчас, а если конкретно, она абсолютно прозрачна для приложений. Это означает, что любой файл (хоть архив, хоть картинка, хоть web-страница), скачиваемые с использованием proxy, будут абсолютно такими же, как если бы мы скачивали их напрямую с сервера. Учитывая это условие, давайте рассмотрим нашу работу в Сети через цепочку... ну из 2-х прокси серверов. Итак...
А что Вы хотели? Технология прокси является прозрачной - это наше условие. То есть при открытии web-страницы через proxy (или цепочку proxy) все ссылки на странице указывают не на прокси, а прямо на web-сервер. То есть если мы хотим бродить по интернету через такую цепочку proxy, необходимо каждый раз (!) указывать браузеру полный адрес - поскольку ссылки не учитывают существование proxy (либо надо прописать прокси в настройках браузера - но это уже не "классический" способ построения цепочки прокси). А я хочу, чтобы прокси менял эти ссылки...Технология работы через прокси задумывалась и разрабатывалась как прозрачная. И Вы с этим ничего сделать не сможете. Обратите внимание: мы не утверждаем, что не работают вещи типа: http://proxy1.ru:8080/http://proxy2.ru/3128/http://www.yahoo.com/ Причем с автоматической "подменой" ссылок, и т.п. Просто мы обращаем внимание: обычные (HTTP / HTTPS / SOCKS) прокси не позволяют Вам так работать! А какие proxy сервера это позволяют? Ну так это же отдельная технология! Эти proxy называются CGI proxy или анонимайзеры. Читайте о них здесь. назад в proxy FAQ |