Простой скрипт прокси сервера

Программа состоит из сервера и своего браузера. Сервер постоянно находится в ожидании запроса от Вашего браузера, получив его, без изменений передает через свой (серверный) браузер на запрашиваемую страницу сайта. Серверный браузер получает страницу сайта, тут мы ее при необходимости сжимаем, и сервер передает сжатую страницу (и признак сжатия) Вашему браузеру, который ее распаковывает. Если Вы скачиваете текстовый файл, файл Word, Excel и вообще то, что можно сжать, то происходит все то же самое – Вы получаете сжатый файл, который Ваш браузер распаковывает при получении.
Таким образом и запрос Вашего браузера и ответ на него находятся в наших руках. Что можно с ними сделать?
С запросом:
Не пропускать запросы к рекламным баннерам или к сайтам с ненужным содержанием.
Изменить значение поля Accept, указав, что наш браузер не поддерживает флэш (flash) рисунки, хотя есть некоторые сайты, целиком сделанные на флэш (и попадаются красивые). Но в основном, конечно, флэш технологии используются для создания увесистых рекламных баннеров.
Вообще можно изменить любое поле запроса, например, «заменив» Ваш браузер на SuperPuper/v.9.14 Platinum. Можно заменить поле «Referer», «Cookie» и т.д., сделав полностью анонимный прокси сервер. Но лично я против подобной «анонимности». При хороших намерениях скрываться нет необходимости. Это все равно, что придти в учреждение в маске.
С ответом:
Все тоже самое – заменить значение любого поля. Но поскольку теперь к нам попадает некоторое содержание (страница сайта, рисунок), то мы для начала решим, есть ли смысл его сжимать. Не будем сжимать, если:
Поле Content-Encoding: непустое, например, gzip.
Это все уже запакованные файлы, а также файлы рисунков, которые уже также сжаты. Т.е. судим по расширению (типу) полученного файла. Список приведен в программе, наверняка Вы дополните его.
Размер полученного файла мал. Например файл таблицы стилей или Java-Script. На мой взгляд, файлы размером меньшим, чем несколько килобайт сжимать не стоит.
Все остальное сожмем. И добавим признак сжатых данных, т.е. Content-Encoding: gzip. Интересно, кстати, выглядят сжатые данные! Когда работал в одной организации, там была девушка по имени Зубарзят, у нее такая внешность, что теперь все непонятные символы называю зубарзятами.
По наблюдениям степень сжатия колеблется в зависимости от содержания и типа данных от 2 до 10 раз. Текстовые файлы и файлы html в пределах от 4 до 10, обычно 5 – 7 раз. Учитывая, что на страницах сайтов имеются еще и рисунки, которые мы не сжимаем, то общее сжатие обычно в пределах от 2 до 5 раз. Соответственно время передачи данных меньшего размера уменьшается во столько же раз. А время обработки данных в десятки и сотни раз меньше времени передачи, так что оно не замечается.
Содержание перед сжатием можно проанализировать и:
Не пропускать рисунки большего размера, чем нами заданный.
Оставить только текстовое содержимое.
Не пропускать Java-Script и Java.
Но все это можно сделать и в настройках своего браузера.
Добавлять что-либо к содержимому страницы, например, кнопки управления Прокси Сервером или текущий курс акций, валюты, и т.д. и т.п.
Попутно замечу, что IP у Вас будет такой же, как у Вашего хостинга.
Практически кажая строка программы прокомментирована на странице http://blankinew.narod.ru/szhimaem_internet_trafik_proxy_server.html