Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 WebWarper - как средство для экономии трафика.
 Сайт -> Форумы » Фильтры
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Чт, Дек 23 2004 08:37 Цитировать |  |  | 

Фильтр для любителей экономить трафик. Я думаю, все знают про бесплатный сервис WebWarper. Этот фильтр решает задачу загрузки всех сайтов, кроме указанных в списке NonWarped через указанный сервис в сжатом виде.

In = FALSE
Out = TRUE
Key = "URL: WebWarper"
URL = "^$LST(NonWarped)"
Match = "http://\1"
Replace = "$JUMP(http://www.webwarper.net/ww/~GZ/\1)"

Список NonWarped обязательно должен включать строку
www.webwarper.net/ww/*
В противном случае будет зацикливание Smile
Следующая задача - зачистка содержимого полученной страницы от варперовских модификаций.
Оценки, критика, советы и пожелания приветствуются.

тему подправил. для пущей важности ;-) /RoKir
Последнюю версию Bonart'a от 17 Авг 2005 с описанием смотреть здесь.
А последнию версию от vital mogilny датируемую 8 Мартом 2006 смотреть здесь , а описание его фильтров здесь
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Дек 23 2004 10:17 Цитировать |  |  | 

Посмотрим.. Пока что самое сомнительное в этом сервисе -- это заявление:
Цитата:
Unfortunately, most of the Web-servers do not use this technique still.

Я вот, наоборот, большинство постоянно посещаемых сайтов через gzip получаю. Статистики, правда, нет ;) (Может, фильтр для статистики замутить.. :)
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Дек 23 2004 10:35 Цитировать |  |  | 

Bonart
Цитата:
зачистка содержимого полученной страницы от варперовских модификаций

Чтобы убрать баннеры сверху/снизу, достаточно в AdList добавить строчку типа такой:
Код:
([^/]++.|)webwarper.net/ww/[^?:@]++.js


Остальные модификации (типа выкидывания ActiveX) не так уж и плохи ;)
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Чт, Дек 23 2004 12:52 Цитировать |  |  | 

2 chAlx
Мне непожатые сайты попадаются частенько.
Ну а те, для кого это редкость могут поменять спискок на белый и внести туда ru-board и ixbt.
Под модификациями я имел в виду не баннеры - их-то как раз Прокс режет влет, а добавляемые WW скрипты, покореженные ссылки плюс всякое добро во входящем заголовке. В идеале загрузка через WW должна стать полностью прозрачной.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Дек 23 2004 14:10 Цитировать |  |  | 

Bonart
Цитата:
поменять спискок на белый и внести туда ru-board и ixbt

Твои данны по РуБоард устарели на месяц-два :)
Цитата:
Под модификациями я имел в виду не баннеры

Ты попробуй сначала ;)

С заголовками не знаю, чего тебе надо: что может, он подставляет оригинальное, а тот же Content-Encoding приходится модифицировать.
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Чт, Дек 23 2004 15:23 Цитировать |  |  | 

Только что проверил - forum.ru-board.com отдает несжатые странички Sad (во всяком случае, если судить по заголовкам)
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Дек 23 2004 16:01 Цитировать |  |  | 

Bonart
Цитата:
forum.ru-board.com отдает несжатые странички

Хоть это и оффтоп, отвечу:
Код:
+++GET 1885+++
GET / HTTP/1.1
Host: forum.ru-board.com
User-Agent: Mozilla/5.0 (; U;; en-US; rv:1.7.5) Gecko/20041217
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru,en;q=0.7,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Cookie: [..]
Connection: keep-alive

+++RESP 1885+++
HTTP/1.1 200 OK
Date: Thu, 23 Dec 2004 13:47:13 GMT
Server: Apache
Pragma: no-cache
Last-Modified: Thu, 23 Dec 2004 09:47:05 GMT
Content-Type: text/html; charset=windows-1251
Content-Encoding: gzip
Content-Length: 7932
X-Cache: MISS from proxy.awanti.com
Connection: close


Вот оттуда тема про это. Так что проверяй свой исходящий запрос.
ПС: А может ты между Проксом и браузером (на выходе zlib.dll) проверял? ;)
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Пт, Дек 24 2004 11:51 Цитировать |  |  | 

Mea culpa Smile
Там проходит несколько запросов, по основному действительно идет сжатый траф.
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Сб, Дек 25 2004 17:51 Цитировать |  |  | 

Усовершенствовал свой фильтр (теперь уже набор фильтров) для WebWarper. Теперь основной фильтр перенаправляет только вызовы из белого списка (Warped), а фильтр Warp it! занимается его автоматическим пополнением.
Цитата:

##
In = FALSE
Out = TRUE
Key = "URL: WebWarper (out)"
URL = "(^$LST(NonWarped))&($LST(Warped))"
Match = "http://\1"
Replace = "$JUMP(http://www.webwarper.net/ww/\1)"
##
In = TRUE
Out = FALSE
Key = "Content-Type: Warp it! (in)"
URL = "(^$LST(NonWarped))&(^$LST(Warped))"
Match = "(text/*)\1&(^$IHDR(Content-Encoding:*))&($IHDR(Content-Length:[#1000-*]))&($ADDLST(Warped,\h/))"
Replace = "\1"

Критерий занесения хоста в список на сжатие: отдача несжатого текста размером более 1000 байт.
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Вс, Дек 26 2004 10:34 Цитировать |  |  | 

Следующая редакция WW Filter Set Smile Критерии пополнения белого списка изменены, добавлен фильтр для пополнения черного списка.
Цитата:

## Пополнение черного списка
In = TRUE
Out = FALSE
Key = "Content-Encoding: Not warp it (in)"
URL = "^$LST(NonWarped)"
Match = "(*gzip*)\1&($ADDLST(NonWarped,\h/))"
Replace = "\1"
## Пополнение белого списка
In = TRUE
Out = FALSE
Key = "Content-Type: Warp it! (in)"
URL = "(^$LST(NonWarped))&(^$LST(Warped))"
Match = "(text/*)\1&($RESP(200*))&(^$IHDR(Content-Encoding:*))&($ADDLST(Warped,\h/))"
Replace = "\1"
## Передача URL WebWarperу
In = FALSE
Out = TRUE
Key = "URL: WebWarper (out)"
URL = "(^$LST(NonWarped))&($LST(Warped))"
Match = "http://\1"
Replace = "$JUMP(http://www.webwarper.net/ww/\1)"

В черный список (NonWarped) желательно сразу занести вот эти строки (особенно первую, вторая довольно быстро попадет и так Smile ):
Цитата:

*.(css|jpeg|jpg|gif|png|ico|pdf|doc|zip|rar)(^?)
www.webwarper.net/ww/

Теперь в список Warped (белый) попадают хосты, вернувшие несжатый текст с кодом ответа 200 (OK). В список NonWarped (черный) - хосты, вернувшие сжатый gzip трафик. Необходимость пополнения черного списка вызвана тем, что некоторые сайты (например, forum.exler.ru) отдают перенаправление (несжатое) с неправильным кодом ответа (200 вместо 302), что приводит к их ошибочному попаданию в список Warped.
2 chAlx
Теперь можешь считать статистику Smile
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Вс, Дек 26 2004 17:12 Цитировать |  |  | 

А вот и ссылкочист Smile - превращает варперизованные ссылки в нормальные.
Цитата:

Name = "Links UnWebWarper"
Active = TRUE
Multi = TRUE
URL = "[^/]++www.webwarper.net/ww/"
Bounds = "<a\s*</a>"
Limit = 256
Match = "*\1http://www.webwarper.net/ww/*\2"
Replace = "\1http://\2"

В IE все пашет прекрасно - в фильтре WebWarper $JUMP можно смело заменять на $RDIR. Но в Опере на сжатых страничках появляются надписи undefined , хотя функциональность не страдает. Помогите разобраться пожалуйста.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пн, Дек 27 2004 10:51 Цитировать |  |  | 

Bonart
Да, серьёзно ты развернулся ;)

Я пока пробовать не буду, лучше тебя помучаю. Вот какие темы надо раскрыть:

1. Хост попадает в список в зависимости от первого ответа; хотя сам сайт может отдавать разный контент по разному закодированным. К чему это приведёт?..

2. С несжимаемыми типами *.(css|jpeg|jpg|gif|png|ico|pdf|doc|zip|rar)(^?) логично было бы наоборот сделать: перенаправлять только текст и html, а остальное гнать напрямую.

3. Почему отказался от проверки Content-Length?

4. Возможно, могут быть глюки с редиректными УРЛами (в которых два+ хоста в адресе), т.к. может (?) криво сработать проверка на принадлежность списку. Хотя вроде не должна :)

5. Как вообще оно работает со сложными ссылками: http://www.com:3128/?d=1&go
Вроде с параметрами проблем не должно быть, а вот с портом может накосячить..

6. Зачем проверка "^$IHDR(Content-Encoding:*)"? Там вроде как deflate означает непакованный контент.

10. Надо бы подчистить код, а то странно выглядят комбинации "*\1", "[^/]++www.", "*gzip*", .. Вот, например, как последний фильтр можно записать (наверно, не проверял;):

Код:
Name = "Links UnWebWarper [BON]"
Active = TRUE
Multi = TRUE
URL = "(www.|)webwarper.net/ww/?"
Bounds = "<a\s*</a>"
Limit = 256
Match = "\1 href="http://www.webwarper.net/ww/\2'\9"
Replace = "\1 href="http://\2"\9"


И имя своё вставляй в названия -- всем проще жить будет (и тем, кто будет использовать, и тебе, когда захочешь весь конфиг обновить).
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Пн, Дек 27 2004 12:12 Цитировать |  |  | 

ChAlx
1. В принципе может, но пока не замечено - критерий отдачи непакованного текста с кодом 200 в ошибках не уличен. Сейчас поставил это дело на работе, проверяю на наших юзверях Smile
2. Логично в целях эффективности проверять и то, и другое. Но сценарии (PHP и т.д.) тоже надо учитывать, причем желательно и будущие.
Есть другой момент - эти самые сценарии могут вернуть что угодно, в том числе несжимаемый WW контент. В этом случае приходит ответ с несжатым (без webwarper) адресом в Location и кодом 302. Надо будет сделать фильтр, который сможет перехватить такие перенаправления от WW и корректно их обработать (не допустить зацикливания).
3. Этот параметр некоторые сайты не возвращают.
4. Это вряд ли - точнее, пока еще не встречал.
5. По идее никак сжимать не должно - в списке Warped после имени хоста всегда идет слэш.
6. Это страховка на будущее - мало ли как еще будут кодировать. А с deflate - мой прокол.
7. С кодом все дело в том, что я еще в Проксе и регэкспах чайник.

По результатам тестирования на работе изменен черный список. Эталонная строка следующая:
Цитата:

[^\?]++.(ico|bat|mpg|css|jpeg|jpg|gif|png|rar|zip|exe|com|pdf|swf)((^?)|\?*)

Еще на работе Опера показывает сжатые сайты без всякого упомянутого ранее мусора - так что косяк не в фильтрах или браузере, а у меня в настройках Smile
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Ср, Дек 29 2004 15:46 Цитировать |  |  | 

Цитата:

# Добавление несжимаемого контента в черный список
In = TRUE
Out = FALSE
Key = "Location: WW Redirect (in) [BON]"
URL = "www.webwarper.net/ww/*"
Match = "(^http://www.webwarper.net/ww/*)&($RESP(302*))&(http://*\1)&$ADDLST(NonWarped,\1)"
Replace = "http://\1"

# Сжатие странички
In = FALSE
Out = TRUE
Key = "URL: WebWarper (out) [BON]"
URL = "(^$LST(NonWarped))&($LST(Warped))"
Match = "http://(*\1.ru(^?)|*\1)"
Replace = "$RDIR(http://www.webwarper.net/ww/\1)"

# Пополнение черного списка
In = TRUE
Out = FALSE
Key = "Content-Encoding: Not warp it (in) [BON]"
URL = "^$LST(NonWarped)"
Match = "(*gzip*)\1&($ADDLST(NonWarped,\h/))"
Replace = "\1"

# Пополнение белого списка
In = TRUE
Out = FALSE
Key = "Content-Type: Warp it! (in) [BON]"
URL = "(^$LST(NonWarped))&(^$LST(Warped))"
Match = "(text/*)\1&($RESP(200*))&(^$IHDR(Content-Encoding:*))&($ADDLST(Warped,\h/))"
Replace = "\1"

# Очистка ссылок от мусора
Name = "Links UnWebWarper [BON]"
Active = TRUE
Multi = TRUE
URL = "[^/]++www.webwarper.net/ww/"
Bounds = "(<a\s*>)|(<img\s*>)|(l<link\s*>)"
Limit = 512
Match = "*\1http://www.webwarper.net/ww/*\2"
Replace = "\1http://\2"

Минимально необходимое содержимое черного списка (NonWarped.txt)
Цитата:

[^\?]++.(avi|mpg|mp3|ppt|ico|bat|mpg|css|jpeg|jpg|gif|png|rar|zip|exe|com|pdf|swf)((^?)|\?*)

Фильтры переименованы в соответствии с рекомендациями, добавлен фильтр для корректной обработки обратного перенаправления с WebWarper (сервис отказывается сжимать содержимое - это чревато зацикливанием), расширен черный список, обеспечена работа с каталогом Rambler Top 100 (он добавляет .ru к именам страниц).
Пожалуйста, если увидите в черном списке не только хосты, но и полные URL, запостите их сюда - это сильно облегчит работу по совершенствованию фильтров.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Ср, Дек 29 2004 18:50 Цитировать |  |  | 

Bonart
Отлично. Осталось проверок в сравнения добавить, и будет совсем круто!

А то оно периодически будет сбоить на нетипичном контексте:
Код:

Content-Encoding: not_gzipped
<a title="http://www.webwarper.net/ww/">
<iframe src="http://www.webwarper.net/ww/site.ru/">


А что там за фигня с файлами .ru ?
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Чт, Дек 30 2004 14:01 Цитировать |  |  | 

2 chAlx
C Content Encoding наверно стоит выбросить звездочки вокруг gzip в фильтре Not warp it.
Второе вообще не страшно - www.webwarper.net/ww/ - это ВСЕГДА редирект.
Третье - в фильтре Links UnWebWarper поставил значение
Bounds="(<a\s*>)|(<img\s*>)|(l<link\s*>)|(<(i|)frame\s*>)|(<(i|)layer\s*>)"
С файлами .ru дело такое: сайт top100.ramler.ru зачем-то дописывает .ru в свои ссылки (например, top100.rambler.ru/top100/Automotive/rate0.100.shtml.ru), хотя и без них все прекрасно работает. Зато на этом обламывается WebWarper. Поэтому теперь окончание .ru от URL (но никогда от хоста), передаваемому WW, автоматически откусывается.
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Вт, Янв 11 2005 19:55 Цитировать |  |  | 

Новогодне-рождественская Smile редакция моего набора фильтров. Фильтры оптимизированы с целью минимизации обращения к спискам, добавлен фильтр для избежания сжатия заведомо несжимаемого контента, в "ссылкочист" добален еще один тег (object). Дополнено содержимое черного списка по умолчанию.
[^\?]++.(avi|mpg|mp3|mpeg|ppt|ico|bat|css|jpeg|jpg|gif|png|rar|zip|exe|pdf|swf|pic|7z)((^?)|\?*)
Цитата:

[HTTP Headers]

# Занести сайт в черный список
In = TRUE
Out = FALSE
Key = "URL: Not warp it (in) [BON]"
URL = "^www.webwarper.net/ww/*"
Match = "($IHDR(Content-Encoding: gzip))&(http://(^$LST(NonWarped)))&($ADDLST(NonWarped,\h/))"
Replace = ""

# Занести сайт в белый список
In = TRUE
Out = FALSE
Key = "URL: Warp it! (in) [BON]"
URL = "^www.webwarper.net/ww/*"
Match = "($RESP(200*))&(^$IHDR(Content-Encoding:*))&($IHDR(Content-Type: text/*))&(http://(^$LST(Warped)))&($ADDLST(Warped,\h/))"
Replace = ""

# Сжать сайт из белого списка
In = FALSE
Out = TRUE
Key = "URL: WebWarper (out) [BON]"
URL = "(^www.webwarper.net/ww/*)&(^$LST(NonWarped))&($LST(Warped))"
Match = "http://(*\1.ru(^?)|*\1)"
Replace = "$RDIR(http://www.webwarper.net/ww/\1)"

# Не сжимать сайты из черного списка
In = FALSE
Out = TRUE
Key = "URL: UnWebWarper (out) [BON]"
URL = "www.webwarper.net/ww/$LST(NonWarped)"
Match = "*\1//www.webwarper.net/ww/*\2"
Replace = "$RDIR(\1//\2)"

# Обработка обратного перенаправления с WebWarper
In = TRUE
Out = FALSE
Key = "Location: WW Redirect (in) [BON]"
URL = "www.webwarper.net/ww/*"
Match = "(^http://www.webwarper.net/ww/*)&($RESP(302*))&(http://(^$LST(NonWarped)))&(http://*\1)&($ADDLST(NonWarped,\1))"
Replace = "http://\1"

[Patterns]

# Исправление "варперизованных" ссылок
Name = "Links UnWebWarper [BON]"
Active = TRUE
Multi = TRUE
URL = "www.webwarper.net/ww/"
Bounds = "(<a\s*>)|(<img\s*>)|(l<link\s*>)|(<(i|)frame\s*>)|(<(i|)layer\s*>)|(<object\s*>)"
Limit = 512
Match = "*\1http://www.webwarper.net/ww/*\2"
Replace = "\1http://\2"



Последний раз редактировалось: Bonart (Вт, Янв 11 2005 22:35), всего редактировалось 4 раз(а)
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Вт, Янв 11 2005 20:42 Цитировать |  |  | 

Bonart
Герой!
К началу Профиль Сообщение
rokir
Admin


Зарегистрирован: 28.04.2004
Сообщения: 295
Откуда: Msk

СообщениеДобавлено: Вт, Янв 11 2005 21:49 Цитировать |  |  | 

Присоединяюсь! Surprised
Начинаю бета-тестирование.

Еще чуть-чуть, и выложим на сайт.
К началу Профиль Сообщение ICQ
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Вт, Янв 11 2005 22:15 Цитировать |  |  | 

Так, рано я обрадовался Smile Только что обнаружен и исправлен (в посте тоже!) крупный косяк, приводящий к многократному занесению сайта в список NonWarped. Это было связано с тем, что в поле URL Match у URL срезается протокол (http://), а в других местах - нет. Сейчас работает нормально.
PS: Следующая задача - автоматизированное обновление блоклисктов, благо в Проксе уже есть все для реализации такой задачи исключительно встроенными средствами.
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3