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

Новая тема  Ответить
Автор Сообщение
1ik
Junior Member
Junior Member


Зарегистрирован: 05.01.2009
Сообщения: 25

СообщениеДобавлено: Вт, Фев 10 2009 23:20 Цитировать |  |  | 

Nan0miT писал(а):
Еще одна мысль по блокировке рекламы с яваскриптами и иннерХТМЛ. Данный фильтр просто удаляет из <div> текст id или class если встречается слово banner.

Встречаем код
<div id=banner class=banner>
... картинки \ флешки \ текстовая реклама ...
</div>
фильтр удалит id=banner class=banner, несработает стиль
*[class*="banner"], *[id*="banner"] {display:none !important;}
и всё содержимое дива вывалится во всей красе
Nan0miT, нужно проверять, что див именно для скрипта
PS А может с таким стилем этот фильтр и не нужен ?
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Ср, Фев 11 2009 13:35 Цитировать |  |  | 

1ik писал(а):
Nan0miT писал(а):
Еще одна мысль по блокировке рекламы с яваскриптами и иннерХТМЛ. Данный фильтр просто удаляет из <div> текст id или class если встречается слово banner.

Встречаем код
<div id=banner class=banner>
... картинки \ флешки \ текстовая реклама ...
</div>
фильтр удалит id=banner class=banner, несработает стиль
*[class*="banner"], *[id*="banner"] {display:none !important;}
и всё содержимое дива вывалится во всей красе
Nan0miT, нужно проверять, что див именно для скрипта
PS А может с таким стилем этот фильтр и не нужен ?


Я просто написал про такую возможность как блокирование скрипта по названию id/class. Можно делать проверку, пустой ли <div></div>, чтоб что не выскочило.
Я особо еще не задумывался, что там и как. Там еще приписка была: "Опять же, пока думаю, полезно это или нет."

Код:
[Patterns]
Name = "kill script by tag 110209 [Nano]"
Active = TRUE
Limit = 1024
Match = "$NEST(<div,*ban(n|)er*,>(\s|)</div>)"
Replace = "<div><ins filter="kill script by tag" style="margin: 0; padding: 0; text-decoration: none; "></ins></div>"

К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Чт, Фев 12 2009 22:32 Цитировать |  |  | 

Еще небольшое исправление и дополнение.

Код:
[Patterns]
Name = "kill script by tag 120209 [Nano]"
Active = TRUE
Limit = 1024
Match = "$NEST(<div,*(ban(n|)er|flashcontent)[^>]+,>(\s|)(\w|)(\s|)</div>)"
Replace = "<div><ins filter="kill script by tag" style="margin: 0; padding: 0; text-decoration: none; "></ins></div>"



Теперь див может содержать 1 слово.
Пока еще в разработке...
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Чт, Фев 12 2009 22:36 Цитировать |  |  | 

Решил попробовать добавить проверку, находится ли картинка на другом сайте "<img*http*", но мысль оказалась не очень удачной. Лучше как раньше, без проверки на http.

Код:
[Patterns]
Name = "kill offsite resources (black&white) 120209 [Nano]"
...
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пт, Фев 20 2009 12:28 Цитировать |  |  | 

Немного изменил фильтр. Теперь еще показывает тип и размер заблокированного элемента. Смотрится не очень, позже наверно сделаю указание размеров отдельным файлом.

Код:
[Patterns]
Name = "kill object by size 200209 [Nano]"
Active = TRUE
Limit = 1024
Match = "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#468])("|'|))\2*((weight|height)(=|:)("|'|)([#60])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#60])("|'|))\2*((weight|height)(=|:)("|'|)([#468])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#240])("|'|))\2*((weight|height)(=|:)("|'|)(|[#400])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#400])("|'|))\2*((weight|height)(=|:)("|'|)([#240])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#200])("|'|))\2*((weight|height)(=|:)("|'|)([#220])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#220])("|'|))\2*((weight|height)(=|:)("|'|)([#200])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#234])("|'|))\2*((weight|height)(=|:)("|'|)([#60])("|'|))\3*,</object>)|"
        "$NEST(<(object)\1,*((width|height)(=|:)("|'|)([#60])("|'|))\2*((weight|height)(=|:)("|'|)([#234])("|'|))\3*,</object>)|"
        "$NEST(<(a)\1,*((width|height)(=|:)("|'|)([#468])("|'|))\2*((weight|height)(=|:)("|'|)([#60])("|'|))\3*,</a>)|"
        "$NEST(<(a)\1,*((width|height)(=|:)("|'|)([#60])("|'|))\2*((weight|height)(=|:)("|'|)([#468])("|'|))\3*,</a>)|"
        "$NEST(<(a)\1,*((width|height)(=|:)("|'|)([#240])("|'|))\2*((weight|height)(=|:)("|'|)([#400])("|'|))\3*,</a>)|"
        "$NEST(<(a)\1,*((width|height)(=|:)("|'|)([#400])("|'|))\2*((weight|height)(=|:)("|'|)([#240])("|'|))\3*,</a>)|"
        "$NEST(<(a)\1,*((width|height)(=|:)("|'|)([#200])("|'|))\2*((weight|height)(=|:)("|'|)([#220])("|'|))\3*,</a>)|"
        "$NEST(<(a)\1,*((width|height)(=|:)("|'|)([#220])("|'|))\2*((weight|height)(=|:)("|'|)([#200])("|'|))\3*,</a>)|"
        "$NEST(<(img)\1,*((width|height)(=|:)("|'|)([#468])("|'|))\2*((weight|height)(=|:)("|'|)([#60])("|'|))\3*,>)|"
        "$NEST(<(img)\1,*((width|height)(=|:)("|'|)([#60])("|'|))\2*((weight|height)(=|:)("|'|)([#468])("|'|))\3*,>)"
Replace = "<ins filter="kill object by size" style="margin: 0; padding: 0; text-decoration: none; ">"
          "<a href="/" target="_self" style="margin: 0; padding: 0; font-size: 18px !important; text-decoration: none;" "
          "title="Proxomitron: kill object by size (\1: \2 x \3)">"
          "<span style="color: #FFBD00; font-size: 40px; margin: 0; padding: 0; text-decoration: none;">.</span></a></ins>"

К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Вс, Мар 01 2009 22:42 Цитировать |  |  | 

Решил попробовать исключать определенные адреса из сравнения для фильтра kill offsite resources (black&white).
Пока тестирую для скриптов, расположенных по адресу: google.com*/(api|solutions), а именно, поддерживает ли прокс такую запись.

Код:
[Patterns]
Name = "kill offsite resources (black&white) 010309 [Nano]"
Active = TRUE
URL = "(^*$LST(KORBypassList))"
Limit = 1024
Match = "$NEST(<a,*href=$AV((http://([0-9a-zA-Z_\-.@\:]+)\2*)\1)*<img*,</a>)($TST(\2=$LST(KORBlackList))$SET(9=display: none;))|"
        "$NEST(<a,*href=$AV((http://([0-9a-zA-Z_\-.@\:]+)\2*)\1)*<img*,</a>)((^$TST(\2=(\h|$LST(KORWhiteList))))&&(^$TST(\1=*.(jpg|gif|png))))|"
        "$NEST(<script,*$AV((http://([0-9a-zA-Z_\-.@\:]+)\2/*)\1)*,</script>)($TST(\2=$LST(KORBlackList))$SET(9=display: none;))|"
        "$NEST(<script,*$AV((http://([0-9a-zA-Z_\-.@\:]+)\2/*)\1)*,</script>)((^$TST(\2=(\h|$LST(KORWhiteList))))&&(^$TST(\1=*google.com*/(api|solutions)*)))|"
        "$NEST(<iframe,*src=$AV((http://([0-9a-zA-Z_\-.@\:]+)\2/*)\1)*,</iframe>)($TST(\2=$LST(KORBlackList))$SET(9=display: none;))|"
        "$NEST(<iframe,*(cgi-bin*\&rnd)\1*,</iframe>)$SET(9=display: none;)|"
        "$NEST(<iframe,*src=$AV((http://([0-9a-zA-Z_\-.@\:]+)\2/*)\1)*,</iframe>)(^$TST(\2=(\h|$LST(KORWhiteList))))|"
        "$NEST(<object,*src=$AV((http://([0-9a-zA-Z_\-.@\:]+)\2/*)\1)*,</object>)(^$TST(\2=(\h|$LST(KORWhiteList))))"
Replace = "<ins filter="kill offsite resources" style="margin: 0; padding: 0; text-decoration: none; \9">"
          "<a href="\1" target="_blank" style="margin: 0; padding: 0; font-size: 18px !important; text-decoration: none;" title="Proxomitron: kill offsite resources">"
          "<span style="color: red; margin: 0; padding: 0; text-decoration: none;">.</span></a></ins>"

К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пн, Апр 27 2009 21:49 Цитировать |  |  | 

Фильтр для сайта torrents.ru.

Код:
[Patterns]
Name = "kill script by tag {torrents.ru} 270409 [Nano]"
Active = TRUE
URL = "([^/]++.|)torrents.ru/"
Limit = 1024
Match = "$NEST(<div,*padding:*,></div>)"
Replace = "<div><ins filter="kill script by tag" style="margin: 0; padding: 0; text-decoration: none; "></ins></div>"



Особо не проверял, но с виду работает.
К началу Профиль Сообщение
1ik
Junior Member
Junior Member


Зарегистрирован: 05.01.2009
Сообщения: 25

СообщениеДобавлено: Вт, Апр 28 2009 21:37 Цитировать |  |  | 

Nan0miT писал(а):
Еще небольшое исправление и дополнение.
Код:
[Patterns]
Name = "kill script by tag 120209 [Nano]"
Active = TRUE
Limit = 1024
Match = "$NEST(<div,*(ban(n|)er|flashcontent)[^>]+,>(\s|)(\w|)(\s|)</div>)"
Replace = "<div><ins filter="kill script by tag" style="margin: 0; padding: 0; text-decoration: none; "></ins></div>"

Теперь див может содержать 1 слово.
Пока еще в разработке...
Заметил, что такие дивы часто содержат 1-2 слова, заканчивающиеся тремя точками:
Загрузка...
Загружается, подождите...
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Чт, Май 21 2009 22:33 Цитировать |  |  | 

Последняя версия фильтра для overclockers.ru (удаляет таблицы с рекламой)

Код:
[Patterns]
Name = "overclockers.ru 210509 {site} [Nano]"
Active = TRUE
URL = "([^/]++.|)overclockers.ru/"
Limit = 1024
Match = "(<OBJECT ) $SET(1=<OBJECT style="display: none;" )|"
        "(<table cellspacing="0" cellpadding="0" border="0" width="302" height="245") $SET(1=<table style="display: none;" )|"
        "(<table border="0" height="65" cellspacing="0" cellpadding="0") $SET(1=<table style="display: none;" )|"
        "(<table cellpadding="0" cellspacing="0" height="72") $SET(1=<table style="display: none;" )|"
        "($NEST(<table,*EEEEEE*,</table>))"
Replace = "\1"

К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Вт, Авг 25 2009 22:25 Цитировать |  |  | 

Новый баг на 2baksa.net: document.onmouseup=PopShow3; Smile

Источник: http://www.2baksa.net/counter.js

Багфикс:
Код:
[Patterns]
Name = "Cleaner 250809 {site} [Nano]"
Active = TRUE
URL = "([^/]++.|)2baksa.net/"
Limit = 256
Match = "$NEST(<script,(*2baksa.net/counter.js*)\1,</script>)"
Replace = "<ins\1</ins>"



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

Или в блоклист строку: ([^/]++.|)2baksa.net/counter.js - тоже по идее должно помочь.
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пт, Авг 28 2009 01:11 Цитировать |  |  | 

Этот баг с мышей похоже перерастает в эпидемию. Smile

Пока не решил, как лучше, поэтому пока так:
Код:
[Patterns]
Name = "Cleaner 280809 {site} [Nano]"
Active = TRUE
Limit = 256
Match = "document.onmouse"
Replace = "document_onmouse"

К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пн, Янв 04 2010 16:58 Цитировать |  |  | 

Если вам больше важна безопасность, чем всплывающие окна и куки, то можно еще так:

Код:
[Patterns]
Name = "kill nasty js 040110 [Nano]"
Active = TRUE
URL = "$TYPE(js)"
Limit = 1024
Match = "(window.open)\2 $SET(1=0; return;)|"
        "(navigator.cookieEnabled)\2 $SET(1=false)"
Replace = "\1"



Просто встречал такие строки в попапах. Лучше пока ничего не придумал. Можете дописать ограничение по сайтам.
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пн, Апр 19 2010 02:13 Цитировать |  |  | 

Проверка возраста на gametrailers.com

Код:
[Patterns]
Name = "NeoPlayer ageCheck 190410 [Nano]"
Active = TRUE
Bounds = "$NEST(<input,>)"
Limit = 512
Match = "*ageCheck*(\w[\w\d]+.write\([^\)]+\)\;)\1*"
Replace = "<script type="text/javascript">\1</script>"



(я не ограничивал одним сайтом, может еще где сработает)
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Чт, Апр 29 2010 22:36 Цитировать |  |  | 

Ссылка на видео youtube.com

Код:
[Patterns]
Name = "youtube.com direct link 300410 {site} [Nano]"
Active = TRUE
URL = "([^/]++.|)youtube.com/"
Limit = 20000
Match = "($NEST(<script,*(http%3A%2F%2Fv[0-9]+.lscache[0-9]+.\w.youtube.com%2Fvideoplayback*id%3D[0-9a-z]+)\1%2C([0-9]+)\2%7C*,</script>))\0"
        "("
        " ($TST(\2=22) $SET(3=1080p HD (mp4)))"
        "|($TST(\2=35) $SET(3=720p HD (mp4)))"
        "|($TST(\2=34) $SET(3=480p (flv)))"
        "|($TST(\2=5)  $SET(3=360p (flv)))"
        "|($TST(\2=[0-9]+) $SET(3=undef:\2 (flv)))"
        ")"
Replace = "\0<script type="text/javascript">"
          "document.getElementById("watch-headline-user-info").innerHTML+=' <span style="font-weight: bold;"><a style="color: red;" href="$UESC(\1)">DOWNLOAD</a> (Quality: \3)</span>';"
          "</script>"


(обновлено: 30.04.2010 00:32 Москва)

Ссылка дописыватся на странице, где-то под названием.
Сильно не заморачивался, показывается первая найденная ссылка, как правило это лучшее качество из доступных.

Не забывайте, что формат flv там чем-то подпорчен, и скачанное в данном формате видео нужно перекодировать в любое другое.
Формат mp4 пока нормальный, смотреть можно сразу после скачивания.


Последний раз редактировалось: Nan0miT (Пт, Апр 30 2010 01:09), всего редактировалось 1 раз
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пт, Апр 30 2010 00:13 Цитировать |  |  | 

Ссылка на видео youtube.com (кнопка)

Код:

[Patterns]
Name = "youtube.com direct link (button) 300410 {site} [Nano]"
Active = TRUE
URL = "([^/]++.|)youtube.com/"
Limit = 20000
Match = "($NEST(<script,*(http%3A%2F%2Fv[0-9]+.lscache[0-9]+.\w.youtube.com%2Fvideoplayback*id%3D[0-9a-z]+)\1%2C([0-9]+)\2%7C*,</script>))\0"
        "("
        " ($TST(\2=22) $SET(3=1080p HD (mp4)))"
        "|($TST(\2=35) $SET(3=720p HD (mp4)))"
        "|($TST(\2=34) $SET(3=480p (flv)))"
        "|($TST(\2=5)  $SET(3=360p (flv)))"
        "|($TST(\2=[0-9]+) $SET(3=undef:\2 (flv)))"
        ")"
Replace = "\0<script type="text/javascript">"
          "dlink = '<button type="button" title="Download video with best quality" class="master-sprite yt-uix-button yt-uix-tooltip" href="$UESC(\1)" onclick=";window.location.href=this.getAttribute(';"
          "dlink += "'href'";"
          "dlink += ');return false;"><span class="yt-uix-button-content">Download (Quality: \3)</span></button>';"
          "document.getElementById("watch-headline-user-info").innerHTML += dlink;"
          "</script>"



Отличие от предыдущего - ссылка оформлена в виде кнопки. Чисто для эстетов. Smile
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Пт, Апр 30 2010 02:52 Цитировать |  |  | 

Ссылка на видео youtube.com (все доступные ссылки)

Код:
[Patterns]
Name = "youtube.com direct links (buttons) 300410 {site} [Nano]"
Active = TRUE
URL = "([^/]++.|)youtube.com/"
Limit = 20000
Match = "($NEST(<script,*(fmt_url_map*(http%3A%2F%2Fv[0-9]+.lscache[0-9]+.\w.youtube.com%2Fvideoplayback*id%3D[0-9a-z]+)\1%2C([0-9]+)\2%7C*fmt_stream_map)\9*,</script>))\0"
Replace = "\0<script type="text/javascript">"
          "var input = '\9';  "
          "var buttons = [];"
          "var uni = [];"
          "var pat=/http\%3A\%2F\%2Fv[0-9]+.lscache[0-9]+.[a-z]+.youtube.com%2Fvideoplayback.*?id%3D[0-9a-z]+%2C[0-9]+%7C/g;"
          "var matches = input.match(pat);"
          "for (i in matches) {"
          "    var ml = matches[i];"
          "    var pat2=/(http\%3A\%2F\%2Fv[0-9]+.lscache[0-9]+.[a-z]+.youtube.com%2Fvideoplayback.*?id%3D[0-9a-z]+)%2C([0-9]+)%7C/g;"
          "    var data = pat2.exec(ml);"
          "    if (uni.indexOf(data[1])>0) continue;"
          "    uni.push(data[1]);"
          "    var quality = "???p (flv)";"
          "    if (data[2] == 22) quality = "1080p HD (mp4)";"
          "    if (data[2] == 35) quality = "720p HD (mp4)";"
          "    if (data[2] == 34) quality = "480p (flv)";"
          "    if (data[2] == 5) quality = "360p (flv)";"
          "    dlink = '<button type="button" title="Download video" class="master-sprite yt-uix-button yt-uix-tooltip" href="' + unescape(data[1]) + '" onclick=";window.location.href=this.getAttribute(';"
          "    dlink += "'href'";"
          "    dlink += ');return false;"><span class="yt-uix-button-content">Download (' + quality + ')</span></button>';"
          "    buttons.push(dlink);"
          "}"
          "document.getElementById("watch-headline-user-info").innerHTML += buttons.join(' ');"
          "</script>"



В данном варианте показываются все доступные ссылки.
Особо пока не проверял, надеюсь будет работать.
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Сб, Май 01 2010 16:15 Цитировать |  |  | 

Фильтр для рекламной странички и проверки возраста на gamespot.com

Код:
[Patterns]
Name = "gamespot.com ads page timer and age gate 010510 {site} [Nano]"
Active = TRUE
URL = "([^/]++.|)gamespot.com/"
Limit = 256
Match = "(setTimeout\('window.location.reload\(\)',[0-9]+\);) $SET(1=setTimeout('window.location.reload()',100);)"
        "|"
        "(<form class="age_gate" name="downloadAgeGate" method="post" action="*/([0-9]+)\2")\0 "
        "$SET(1=\0 style="display:none;">"
        "<select name="dob[Month]"><option label="May" value="05" selected="selected">May</option></select>"
        "<select name="dob[Day]"><option label="01" value="1" selected="selected">01</option></select>"
        "<select name="dob[Year]"><option label="1981" value="1981" selected="selected" >1981</option></select>"
        "<input type="hidden" name="nowplaying" value="\2" />"
        "<input id="autosubmit" type="submit" name="submit_btn" value="Enter" />"
        "</form>"
        "<script type="text/javascript">document.getElementById("autosubmit").click();</script>"
        "\0"
        ")"
Replace = "\1"

К началу Профиль Сообщение
Гость






СообщениеДобавлено: Чт, Май 20 2010 13:20 Цитировать |  |  | 

Народ, часто бывает слушаю музыку через youtube.com и для лучшего качества АУДИО добавляю "&fmt=18" (включается стерео), вообщем, скушное это дело копипэйстить для каждого ролика в отдельности, может можно как-нибудь сделать, шоб "&fmt=18" добавлялось автоматически?! Заранее спасибо за ответ Smile
К началу
Alex Qwerty
Gold Member
Gold Member


Зарегистрирован: 20.07.2007
Сообщения: 204

СообщениеДобавлено: Чт, Май 20 2010 14:55 Цитировать |  |  | 

Поищи тут "URL substitute".
К началу Профиль Сообщение
Nan0miT
Platinum Member
Platinum Member


Зарегистрирован: 11.10.2006
Сообщения: 315

СообщениеДобавлено: Ср, Май 26 2010 01:56 Цитировать |  |  | 

Фильтр, который запрещает выполнять document.write для текста со словом script.

Код:
[Patterns]
Name = "document.write no script 260510 [Nano]"
Active = TRUE
Limit = 512
Match = "($NEST(document.write\(,(*)\1,\);))\0"
Replace = "var testme = \1; if (testme.toLowerCase().indexOf("script") == -1) document.write(testme);"



Тестовая версия.
В будущем постараюсь придумать, как сузить поиск, но пока так.
Применять в особо тяжелых случаях, для конкретных сайтов. Можно и для всех, но за результат я не ручаюсь.
Smile
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




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


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