В Начало - The Proxomitron Russian Page
The Proxomitron - Russian Page
 История изменений


Get Firefox!

В документе используется стандартная система обозначений:

[+] - добавлена новая возможность или улучшена существующая
[-] - устранена ошибка
[!] - изменение
[*] - все, что не попадает в предыдущие категории

 Неофициальный патч для версии 4.5 от 26.05.03 (Proxomitron 4.5j)

[!] Убрана возможность подключения Proxomitron в обход прокси, если прокси не отвечает. Подробнее смотрите здесь.

 Версия 4.5 от 26.05.03 (Proxomitron 4.5m)

[-] Исправлена ошибка, когда в некоторых случаях при посылке ответа 304 происходила рассинхронизация устойчивых соединений (например, в результате заголовки могли оказаться в теле документа).

[!] Обновлен proxcert.pem

[+] Добавлена проверка для предотвращения бесконечной рекурсии в списке.

[-] Исправлена ошибка при объединении файлов конфигурации, когда было невозможно найти текстуру.

[-] Исправлен неправильный запрос, следующий за за перенаправлением POST URL в файл.

[+] Добавлен эскейпинг HTML в списках и списках URL в .pinfo для предотвращения проблем, создаваемых включенными тегами.

[!] Позиционные переменные теперь сохраняются и восстанавливаются, если совпадение не состоялось. В случае удачи их поведение должно быть примерно таким же, как в предыдущих версиях, но тем не менее, их можно считывать в процессе работы правила.

[-] Импорт Web-фильтров больше не происходит в обратном порядке.

[+] Добавлен отдельный пункт меню, отвечающий за отображение локальных запросов в журнале. По-умолчанию отключен.

[+] D конфигурацию добавлен флаг PriorityBoost = TRUE/FALSE. Это достаточно экспериментальная возможность и, будучи установленной в TRUE, задает повышенный приоритет фильтрам, оставляя приоритет основной программы нормальным. Это может помочь, если браузер работает с повышенным приоритетом и мешает работе Proxomitron, отнимая процессорное время. При этом, не рекомендуется запускать сам Proxomitron с высоким приоритетом, поскольку в этом случае общий приоритет потока будет слишком высок.

[!] Немного изменена обработка редиректа 302, так что Mozilla может производить их быстрее.

[-] Исправлена сортировка фильтров заголовков при загрузке конфигурации.

[!] Значения при проверке переменных $TST сейчас должны иметь одинаковую длину. Например, для "foobar" $TST(var=foo???) будет давать совпадение, а $TST(var=foo??) - нет. Это немного упрощает проверку идентичных значений.

[+] В команду $DTM добавлена "w"для текущего дня недели.

$SET(today=$DTM(w))
$TST(today=(Sat|Sun))

[+] Попробуйте набрать http://local.ptron/.pinfo/ - и найдете множество интересной информации! Вид отображения информации может быть настроен с помощью Info.css в каталоге HTML.

[+] Добавлена возможность импорта/экспорта фильтров из/в буфера обмена. Нажмите правой кнопкой мыши в списке фильтров - в контекстном меню есть пункты импорта/экспорта.
Экспорт будет записывать выбранные фильтры в буфер обмена, импорт - вставлять из него. Формат такой же, как в файлах конфигурации.
Также в диалоге объединения файлов конфигурации добавлена опция для ввода из буфера обмена. Эта опция может использоваться для импорта любых настроек файла конфигурации - просто включите заголовок файла конфигурации в текст.

[!] Улучшено поведение буфера обмена журнала под NT/W2k/XP.

[+] Proxomitron теперь имеет поддержку "предзапросных" переменных. Они могут быть установлены где угодно (даже в заголовках), и проверены позже (скажем, в HTML). Каждый запрос имеет собственные установки и изолирован от других страниц.

- Чтобы установить переменную, используйте:
      $SET(variable=something)
- Чтобы очистить переменную, используйте:
      $SET(variable=)
  - Чтобы получить значение переменной, используйте:
      $GET(variable)
  - Чтобы проверить значение переменной, используйте:
      $TST(variable=match expression)
   или просто:
      $TST(variable)
Например:

src="http://$TST(myhost)/" Примите во внимание, что это должно быть строковое соответствие (не считая регистра) - значение переменной не воспринимается как выражение с подстановочными символами и т.д.
В отличие от позиционных переменных "\1 \2 \# ...", $SET расширяет значение именованной переменной, как только она вызывается (позиционные расширяются при вызове в тексте замены).

$SET(foo=$GET(foo) more stuff) - добавляет к концу "foo"
$SET(foo=more stuff $GET(foo)) - добавляет к началу "foo"
$SET(foo=$GET(foo) \1) - добавляет значение "\1" к концу "foo"
$SET(foo=$GET(foo)$GET(bar)) - добавляет занчение "bar" к концу "foo"

$TST может также использоваться для старых добрых позиционных переменных \0 ... \9, которые позволяют вам проделывать такие вещи:
    Выражение
  <\1\s * </$TST(\1)>
    которое соответствует...
  <any-tag > stuff </any-tag>
    но не...
  <any-tag > stuff </a-different-tag>
Для того, чтобы все это работало, пришлось произвести значительные изменения в способ, которым Proxomitron обычно устанавливает эти переменные.

Замечание:

Подобно вызову списка, проверка переменной требует некотрых жертв. Это влечет поиск имени каждый раз при вызове переменной, так что лучше не ставить такие переменные в самом начале выражений.

МЕДЛЕННО: $TST(name=ayumu|osaka)<a href="chiyo">
ЛУЧШЕ: <a href="chiyo">$TST(name=ayumu|osaka)

Также, большее число переменных замедляет просмотр, так что если вы уверены, что закончили работу с переменной, лучше очистить ее: $SET(foo=)

[!] Число возможных циклов (типа "[a]+{0,500}" ) теперь увеличено до 65535 (раньше было ограничено 255).

[+] Оформление сообщений об ошибках сейчас может быть изменено в файле Errors.css в каталоге HTML.

[+] В подсказке на значке системной панели теперь показывается имя текущего файла конфигурации.

[+] Появилась возможность фильтровать метод CONNECT, используемый для установления сквозных SSL соединений. Это позволяет миимальное фильтрование (блокировку сайтов и список обходимых сайтов) даже без использования OpenSSL. Заголовки CONNECT также видны в журнале (учтите, что ои используются только прокси и не передаются удаленному хосту).

[-] Исправлена ошибка с $WESC, когда не работала "отмена" закрытых скобок.

[+] Добавлен новый banner/container фильтр, основанный на DOM.

[-] Типы содержимого, состящие из нескольких частней не фильтровались по-умолчанию.

[!] Использованы обновленные библиотеки SSLeay/OpenSSL. Также добавлена базовая проверка сертификатов сайтов. Подробнее, см. в readme.txt. [-] Исправлена ошибка, когда иногда не фильтровались символы, если выражение было длиной в один символ.

[+] Команда $LOG() сейчас может открывать журнал, если он закрыт. Просто добавьте символ "!" перед параметром цвета.

$LOG(!GLog Something green)

[-] Окончательно исправлена ошибка "Read overflow".

[-] Исправлена отсутствующая "&" в фильтре "Content-Type: Fix MIME types based on URL".

[!] Фильтры Javascript изменены и теперь вставляются после тега <!DOCTYPE ... > (лучше работает на IE6).

[!] Улучшены фильтры Popup-окон и теперь использую внешний файл "WindowOpen.js" в каталоге HTML.

[!] Команды $URL, $RESP, $IHDR, $OHDR, $TST теперь работают тексте замены (могут использоваться для захвата значений).

[-] Длинные команды вызывали сбой в NT/Win2k/XP - исправлено.

[-] Исправлена ошибка с длинными строками в журнале.

[-] Исправлена ошибка с некоторыми HTTP заголовками.

[-] Исправлена ошибка с повторным использованием сокетов SSL.

[!] \h сейчас совпадает с именами хостов. не имеющих закрывающего слеша (типа "http://foo.com").

[!] В расширенных настройках прокси сейчас возможно ввести логин без пароля.

[-] Перезагрузка конфигурации больше не очищает флаг отладки.

 Версия 4.4 от 28.09.02

[+] Добавлена новая команда $KEYCHK(). Используется для проверки нажатия комбинаций клавиш в фильтре. Команда работает как любая другая и может использоваться в выражениях фильтров или URL. После проверки, если клавиши были нажаты, $KEYCHK() возвращает значение "совпадение найдено". Большинство клавиш могут быть проверены через их стандартные значения. Однако можно проверить и нажатие специальных клавиш, которые начинаются с символа "^":

^C = CONTROL
^A = ALT
^S = SHIFT
^T = TAB
^F1 = Функциональная клавиша #1
^F2 = Функциональная клавиша #2
^32 = Скан-код 32 (пробел)
^65 = Скан-код 65 ("A")

Регистр в этом случае не имеет значения, так что можно использовать как "^c", так и "^C". Можно использовать и комбинации клавиш. Например:

$KEYCHK(^A^S) = ALT+SHIFT
$KEYCHK(^C^F6) = CONTROL+F6
$KEYCHK(^AG) = ALT+G
$KEYCHK(^C^A^S) = CONTROL+ALT+SHIFT

Это будет работать для любой комбинации клавиш, которую позволяет клавиатура. Также могут проверяться и другие специальные клавиши, если вы знаете их скан-коды - это число в диапазоне 0-255. Кстати, ^2 проверяет нажатие правой кнопки мыши.

[+] Добавлено новое ключевое слово LOGFILE для блокфайлов. Добавление этого слова в начале блокфайла сообщает программе, что содержимое не предназначено для чтения или загрузки его в память. В этом случае можно безопасно использовать файл в качестве логфайла (журнала) при использовании $ADDLST(). Также увеличивается скорость: в обычном состоянии $ADDLST открывает файл для записи, добавляет новую запись и закрывает файл, при наличии слова LOGFILE файл остается открытым между сессиями записи, что делает добавление больших объемов данных намного эффективнее.
Важно помнить, что если вы загружаете логфайл в другую программу, когда он открыт Proxomitron'ом, может оказаться, что последние записи находятся в файловом буфере и еще не записаны на диск. Однако перезагрузка конфигурации или редактирование файла через пункт меню "Edit blockfile" сбросит оставшиеся незаписанные данные в логфайл. Вы можете дать логфайлам другое расширение (например, *.log) и связать это расширение со специализированной программой для просмотра логов. Это позволит использовать пункт "edit blockfile" для открытия логфайла в этой программе.

[+] Добавлена команда $FILE(filename). С ее помощью можно вставить содержимое любого файла в текст замены любого фильтра. Команда особенно полезна для web-фильтров, но будет работать и для фильтров заголовков (но с ограничениями: заголовок должен состоять только из одной строки и быть не более ~4кб).

[+] Добавлена команда $RESP(match). Программа предназначена для захвата кода ответа, возвращаемого web-сервером. Обычно это выглядит примерно так:

"200 OK" или "404 Not Found" и т.д.

Поиск совпадения начинается сразу с кода ответа, так что не нужно включать в выражение часть "HTTP/x.x". Однако все, что находится после кода включено в выражение. Например, для поиска совпадения с ответом редиректа, вы должны использовать "$RESP(302*)". Также удобно использовать эту команду для захвата информации в логфайл.

[+] В случае добавления записей в несуществующий блокфайл, теперь создается "временный" список с этим именем. Этот список будет находиться только в памяти, и может использоваться в качестве индекса для сохранения информации глобально. Этот список не будет виден в меню и не может быть отредактирован (поскольку это не файл), но может быть вызван из выражения и добавлен в любой другой список.
Также помните, что перезагрузка конфигурации или перезапуск Proxomitron произведет очистку временного списка. Если вы хотите использовать информацию в дальнейшем, используйте обычный список.

[!] Буфер, в котором хранятся данные для многократных совпадений, теперь может вмещать любой объем данных, ограниченный только объемом памяти (раньше был ограничен 32кб). При разработке фильтров помните, что теперь он может потребовать дополнительной памяти и должен использоваться с осторожностью (особенно для новой команды $FILE).

[-] Исправлена ошибка, которая в некоторых случаях вызывала неполную загрузку страницы.

[-] Исправлено повторное использование соединений, все еще использующих прокси после отключения использования внешнего прокси.

[-] Исправлена проблема, вызывающая появление сообщения "Read overflow".

[-] Исправлена ошибка с получением некоторых имен хостов при соединении с сервером, работающем не через 80 порт.

[*] Проведена работа по устранению проблемы с некоторыми серверами, отсылающих содержимое "deflate" с или без нормальных байтов в заголовке. Похоже, не все серверы делают это в одном формате.

[!] Сертификат proxcert.pem продлен еще на год. Этот сертификат Proxomitron использует для экспериментальной SSL-фильтрации (отключена по-умолчанию). Это не настоящий действительный серверный сертификат.

 Версия 4.3 от 11.06.02

[+] Добавлена команда $ASK(AllowList, DenyList, Prompt msg, item to add [,alternate match]) Команда предназначена для задания вопросов пользователю, должен ли определенный элемент быть отфильтрован на данном сайте. Хотя это же может быть сделано комбинацией нескольких других команд, $ASK значительно упрощает данную задачу.

[+] Добавлена опция NOAPPEND для списков, Список с этим флагом не позволяет добавлять в себя новые элементы, когда вызывается команда ASK или ADDLST. Элементы будут заблокированы, но только для данной сессии или пока список не будет перезагружен.
Опция может быть полезна в том случае, если вы хотите заблокировать что-нибудь временно. Я полагаю, это в некотором роде хак, который, скорее всего, просуществует недолго, до появления лучшей идеи :)

[+] Добавлена команда $DTM(format). Может использоваться для вставки даты, времени и информации о соединении в текст замены. Команда использует простой формат для управления выводом и может быть полезна для добавленения дат в страницы или выдачи информации для использования совместно с командой $LOG и ей подобными.

[+] Добавлена поддержка устойчивых соединений для локальных подключений, так же, как и для удаленных. Наилучшие результаты вы получите, если браузер настроен для использования HTTP/1.1 через прокси и в нем включено тунеллирование. Также рекомендуется использовать одновременно 6-8 соединений. В этом случае Proxomitron поддерживает практически все дополнительные возможности HTTP/1.1.
   Для этой работы Proxomitron должен интенсивно использовать "кусочное" кодирование, поскольку мы не можем знать заранее размер фильтруемого элемента. Это не должно представлять проблемы, но, возможно, некоторые браузеры могут не ожидать столь много "кусков" элементов, особенно изображений. При тестировании браузера Mozilla обнаружились некоторые проблемы с кусочным кодированием элементов, если включено тунеллирование, но это проблема не в работе Proxomitron - тунеллирование в Mozilla достаточно ново и неотработанно. С Opera все должно быть в порядке.
   Устойчивые соединения HTTP/1.0 также поддерживаются. Однако, поскольку Proxomitron часто меняет длину содержимого элементов и HTTP/1.0 не разрешает "кусочное" кодирование, то при фильтрации число запросов, могущих быть устойчивыми, меньше.
   Локальные устойчивые соединения при необходимости могут быть отключены, и их время жизни можно настроить в диалоге настроек на закладке HTTP. По умолчанию локальные соединения прерываются после 10 секунд бездействия. В большинстве случаев это должно подойти, поскольку локальные соединения создаются достаточно быстро, но при желании вы можете увеличить это значение, например, в случае использования Proxomitron удаленно в LAN.

[+] Добавлен новый индексирующий механизм. Он сильно ускоряет обработку списков с разделителем "ИЛИ", где первый элемент каждого раздела "ИЛИ" не является подстановочным символом. Например:

  (one|two|(three|four|five)|six) индексируется
  (one|*two|(three|four|five)|six) этот нет
  ([to]ne|two|(three|four|five)|six) и этот тоже нет

Фактически, каждая группа скобок (...) имеет собственный индекс, таким образом, в каждом из примеров выше, "(three|four|five)" все еще индексируется каждый раз. Смешение "И" и "И И" обычно также допустимо:

  (one|two|(three|four|five)|six)*(end)&&*whatever*
  (one|two|((three|four|five)*&*whatever*)|six)

Это также означает, что сложные выражения (пример из фильтра banner blaster):

  <(a\s*</a>|i(nput*>|layer*</ilayer>|frame*</iframe>))

обрабатываются столь же быстро, как

  <a\s*</a>|<input*>|<ilayer*</ilayer>|<iframe*</iframe>

но легче читаются. При этом индексирование ускоряет оба примера. Его использование очень просто. Помните, что подстановочные символы в начале всегда медленнее, и лучше избегать их использования.

[+] Добавлены команды $LOG(), $ALERT() и $CONFIRM(), которые посылают сообщение пользователю. $ALERT() просто выдает сообщение, которое вы зададите. $CONFIRM выдает диалог, где пользователь может выбрать один из вариантов Да/Нет. Если пользователь нажимает "Нет", найденное совпадение считается неверным в фильтре, из которого была вызвана команда. $LOG() отправляет сообщение в журнал, если он открыт. Обратите внимание, что первая буква в сообщении определяет цвет для ее отображения:

  R=красный, W=белый, w=серый, B=синий, G=зеленый, Y=желтый, V=фиолетовый, C=циан.

[+] Добавлена команда $ADDLST(ListName, текст или строка для добавления). Это дает вам возможность добавить элементы в список из фильтра.

[+] Добавлена команда $ADDLSTBOX(ListName, Title, текст для добавления). Очень похож на $ADDLST(), но предварительно выдает пользователю стандартный диалог "add to blockfile", который обычно вызывается из системной панели. "Заголовок" необязателен, он показывается в заголовке диалога. Результат команды "истина", если элемент был добавлен в список, "ложь", если нет.

[+] Добавлена команда $WESC(). Команда "отменяет" все спецсимволы во входной строке. Полезна для случаев, когда нужно, чтобы что-нибудь добавляемое в список из неизвестного источника (например, URL), при дальнейшем сравнении совпадало бы буквально, поскольку специальные символы типа "+","&", "?" и т.д. при сравнении могут вызвать труднообнаружимые ошибки. Команду можно использовать тексте замены или на входе любой команды типа $ADDLST().

[+] Добавлены команды $LOCK() и $UNLOCK(). Их можно использовать для синхронизации действия фильтров между одновременно заружающимися страницами. Только один фильтр может быть "замкнут" в один период времени. Если другой фильтр вызывает команду, то ему придется подождать, пока первый фильтр не завершит работу. Вы можете использовать это для группировки серий связанных действий в фильтре.

[!] "Profile" в тестовом окне теперь будет перерывать свою работу, если она длится слишком долго. Обычно он делает 1000 циклов, но на очень сложных фильтрах или при обработке множества текста, процесс может занять значительное время. Сейчас это время ограничено 6 секундами. Результаты приводятся к значению, отражающему действительное число завершенных циклов, и должны быть достатточно аккуратны.
   Соответственно, из-за дополнительных проверок, время теста может оказаться несколько меньше, чем в предыдущих версиях Proxomitron. Не беспокойтесь, это не означает, что фильтры стали работать медленнее.

[-] Исправлено проблема с символом \h в некоторых случаях.

[-] исправлена вероятная ошибка в команде $RDIR().

[-] Буфер текста замены теперь увеличивается динамически. Это должно предотвратить проблему, возникающую в определенных комбинациях фильтров с большим диапазоном поиска при включенной опции "Allow for multiple matching".

[!] Пункт меню "Edit Blockfile" теперь перенесен в корень меню, что должно упростить его использование.

[*] Удален хак заголовка "Last-Modified", который я исаользовал для решения проблемы с кэшем IE. Если дата последнего изменения не изменилась, IE должен использовать старую версию из кэша даже если сервер отсылает полностью новую версию.

 Версия 4.2 от 17.03.02

[*] Все еще остаются проблемы с обновлением Windows под XP и IE6. Proxomitron не единственный прокси пострадавший от него, но автор не до конца уверен, что же их вызывает. На сегодняшний день, лучшее решение проблемы - добавить сервера windowsupdate.microsoft.com, windowsupdate.com в раздел "Не использовать прокси-сервер для адресов, начинающихся с:" в расширенных настройках прокси IE.

[!] Библиотека zlib обновлена до версии 1.1.4, поскольку ранние версии иногда создавали проблемы.

[-] Исправлена ошибка в скрипте инсталлятора, в результате которой было невозможно перезаписать exe от предыдущих версий.

[!] http://Local.ptron/ теперь позволяет получить доступ и к подкаталогам каталога /html (раньше это не разрешалось). Теперь будет легче организовывать скрипты.

[-] При помощи JarC исправлена ошибка под NT/W2k/XP, когда программа завершалась с ошибкой при снятии флажка вне диалога фильтров заголовков.

[-] Исправлена ошибка в команде RDIR, отключавшей любые дополнительные прокси-сервера.

[-] Исправлена ошибка с утечкой ресурсов GUI.

[-] Исправлена ошибка при испрользовании \a или \q в соответствии, когда эти компоненты отсутствуют в URL.

 Версия 4.2 от 17.03.02

[-] Исправлена серьзезная ошибка, в результате которой в Promiscuous-режиме была возможность подключаться к компьютеру с адресов, не входящих в диапазон разрешенных. К счастью, эта возможность по умолчанию отключена. Большое спасибо Michael Beggs, обнаружившему эту ошибку.

[!] Команда $SET может теперь может быть использована для очистки переменной. Например, для очистки \0 вы можете использовать $SET(0=).

[!] При ошибке подключения к адресам localhost, повторных попыток делаться не будет. Это должно помочь в том случае, если вы используете файл с именами хостов для блокировки рекламы (поскольку испоьзование 0.0.0.0 в отличие от 127.0.0.1 еще лучше).

[-] Исправлена ошибка, когда установка переменной $SET(1=\1) вызывала зависание. Имейте в виду, что это по-прежнему не разрешено, но ошибок вызывать не будет.

[!] Внимание! Команда $URL() изменена, и теперь должна включать протокол (например, http://).

[-] Исправлена ошибка, когда нулевые символы в HTML могли вызвать некорректный вывод.

[-] Исправлена ошибка, вызывавшая крах программы, когда перед https URL оказывался пробел (https:// somehost/).

[-] Исправлена ошибка, вызывавшая зависание Proxomitron при загрузке файлов конфигурации с отсутствующими заголовками разделов.

[!] Команды JUMP и RDIR теперь корректируют URL с отсутствующим "/" в конце имени хоста (типа "http://somewhere.com").

[-] Исправлена ошибка стековой переменной: старые данные могли отображаться в некоторых ситуациях, когда пустая последняя переменная помещалась в стек.

[-] Исправлена ошибка в фильтре счетчиков.

[-] Исправлена ошибка, когда режим SSL Pass-Thru не использовал выбранный прокси-сервер.

[-] Исправлена ошибка, когда несоответствующие скобки [...] могли завесить программу.

Кто хочет помочь проекту существовать далее (на даный момент нужно ~20$ в год) может ткнуть в баннер ниже.

Счастливые обладатели Proxomitron его не видят ;-)



 Copyright © 2000 - 2005 Dmitry "Storm" Yudin | Tested in all main 5+ version browsers. Last modified: 20 September 2007 -- Thursday -- 14:38:57 MSD В начало