Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№121-09-2019 20:18:17

negodnik
 
 
Группа: Members
Зарегистрирован: 14-03-2013
Сообщений: 516
UA: Seamonkey 2.38

Redirector

Redirector 2.9.1.1, 2.9.2, 2.9.3 в Симанке.
Отдельные правила, например: (^https?://\S+)(?:[&?]utm_source)+?, работают.
Но душа просит вкорячить их все в одну регулярку.

Если (https?://\S+)([&?]utm_)(?:source|medium|… и т.д., то получается рекурсия.
В консоли ошибок:
"Since this causes an endless loop, the redirect has been disabled.
Edit this redirect to fix the recursion."

Если (https?://[^?_&=]+)([&?]utm_)(?:source|medium|… и т.д., то не всегда срабатывает, бывают ссылки, где есть ?_&= до utm_ (ниже будут примеры).

Как применять \G и (1) — не разобрался.

В Notepad++ срабатывает такое:
Найти ()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
Заменить на (\1)

Redirector даже не даёт сохранить правило:
"The pattern
  ()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
is not a legal regular expression.
Details:
SyntaxError: nothing to repeat"

Вот, выписал несколько примеров:

скрытый текст

Выделить код

Код:

https://example.com/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=header-link
https://example.ru/maps/?utm_source=geoblock_maps_paris
https://example.ru/20190918/1558825891.html?utm_source=yxnews&utm_medium=desktop&utm_referrer=https%3A%2F%2Fyandex.ru%2Fnews
https://www.example.ru/russia/676607?utm_source=mst_rd
https://tv.example.ru/program/3894340?eventId=142758609&utm_source=yamain&utm_medium=informer&utm_campaign=link
https://example.ru/maps/?mode=search&utm_source=morda&utm_medium=service_subtitle&text=%D1%80%D1%8B%D0%B1%D0%B0%20%D0%B8%20%D0%BC%D0%BE%D1%80%D0%B5%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B&utm_region=222&utm_content=riba_i_moreprodukti
https://realty.example.ru/parij_i_parijskaja_oblast/kupit/kvartira/karta/?layer=price-sell&subLocality=193326&leftLongitude=37.410946&bottomLatitude=55.84627&rightLongitude=37.572994&topLatitude=55.892986&utm_source=yandex_sign&utm_medium=cpm&utm_campaign=subtitle_rayonu-r-1&utm_content=rayonu_ceny-na-zhiljo
https://example.ru/20190919/1558866070.html?utm_source=yxnews&utm_medium=desktop&utm_referrer=https%3A%2F%2Fyandex.ru%2Fnews


Может быть, кто нибудь, что нибудь сообразит?

Отредактировано negodnik (22-09-2019 18:56:51)

Отсутствует

 

№221-09-2019 21:00:49

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 326
UA: Firefox 60.0

Re: Redirector

брррр.... Ну, ЕЯвПП то:

negodnik пишет:

В Notepad++ срабатывает такое:
Найти ()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
Заменить на (\1)

Redirector даже не даёт сохранить правило:
"The pattern
  ()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
is not a legal regular expression.

Редиректор(чтоб оно такое не-было..) абсолютно прав, ибо нету в JS RegExt опертора\спецсимвола  ' \K '. Это нечто внутренее у Нотепад++.

Ты хочешь убрать мусорные(и это паравда, они таковые) гугло-параметры из ссылок..?  Если так, то вот, когда-то делал скриптег себе:

скрытый текст

Выделить код

Код:


// ==UserScript==
// @name        utm-Remove
// @namespace   *
// @include     *
// @exclude     https://www.youtube.com/watch?*
// @version     1
// @grant       none
// @run-at                      document-end
// ==/UserScript==


//document.addEventListener("DOMContentLoaded",utmRemove, false);
setTimeout(utmRemove, 100);

 function utmRemove() {

   const vRegExp = new RegExp(/[?&](?:utm_|fb_action_|yclid).*&?/gi);

// из строки адреса убрать
        if ( vRegExp.test(location.search) && history.replaceState) {
        history.replaceState(null,'', location.href.replace(vRegExp, '') );
        }


// убрать из ссылок страницы
//if (document.links) {
//  for( var x = 0; x < document.links.length; x++ ) { 
//        let curLink = document.links[x], newHref = '';
//    if( curLink.href.match(vRegExp) ) {
//         newHref = curLink.href.replace(vRegExp, '');
//         let oRel = curLink.getAttribute('rel');
//             oRel = oRel ? ( oRel + ' ' ) : '';
//             curLink.setAttribute('rel',oRel+'redirect');
//       curLink.setAttribute('replacedurl',curLink.href);
//       curLink.title = ( curLink.title ? ( curLink.title + ' - ' ) : '' ) + 'Old URL: \n' + decodeURIComponent(curLink.href);
//       curLink.href = newHref;
//     }
//   }
// };

};


ну т.е. регулярка такая КМК:

Выделить код

Код:

[?&](?:utm_|fb_action_|yclid).*&?/gi

А если поправить твою, то наверное так:

Выделить код

Код:

[&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer).*
// или без_пробельный, если сильно хоцца
[&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer)\S*

хотя, проще, поставить просто точка_звездочка вслед за utm_. Как выше в скрипте.
------------
я бодался\пытался тоже сам это все убирать, а потом один хороший парень заделал\портировал плугин VEG-a на PM Pure URL for Palemoon.
Чистит эту байду отовсюду.
Ave VEG, Ave moonbat!

Отредактировано mokujin (21-09-2019 21:04:55)

Отсутствует

 

№321-09-2019 22:23:23

negodnik
 
 
Группа: Members
Зарегистрирован: 14-03-2013
Сообщений: 516
UA: Seamonkey 2.38

Re: Redirector

> Это нечто внутренее у Нотепад++.
Не, не внутреннее: https://www.regular-expressions.info/keep.html и у Фридла в учебнике есть.

Так тоже не получается (в N++):
https?://\S+(?<=[&?]utm_(?:source|medium… — lookbehind asertion is not fexed leight
как и написано в regular-expressions.info: Perl and Boost require the lookbehind to be of fixed length.

Спасибо за помощь, но со скриптом не получилось. Грисманки или чего-то подобного нет, пробовал в NoScript’ (после загрузки DOM) — никакого эффекта.
Pure URL для Симанки только самая первая версия подходила (кажется), да и не хочется ещё одно расширение. С отдельными правилами получается Redirector’ом. Думал, может в одно удасться объединить.

UPD: Похоже, "source" всегда первый, тогда можно оставить только (^https?://\S+)[&?]utm_source
UPD 2: Неа, не всегда, увы.

Отредактировано negodnik (23-09-2019 15:45:08)

Отсутствует

 

№421-09-2019 22:37:24

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 326
UA: Firefox 60.0

Re: Redirector

Я хз. кто такой Фридл. Не читал.
Но самый обычный и очень хорошо, КМК наглядно, составленный тест(тысячи их , проверочных. Благодарочка вам, люди их создающие) не проходит твоё(и Фридла) вырежение Регулярные выражения
А всё потому, что ты путаешь\совмещаешь АКА отождествляешь лёгкое с синим. Классическая логическая ошибка.
Регулярки в Нотепаде++ свои, и они ниразу не должны совпадать с правилами RegExt JS.
Возможно, ты попутал подсведку синтаксиса - с проверкой соответствия стандататм RegExt JS ;)  Может такое быть? Тёплое не всгда синее, а бархатистое не значит сладкое.
N++ имеет своё виденье на то, что такое "регулярные выражения". И он, ска, может это виденье иметь как хочет. Это факт!

Отредактировано mokujin (21-09-2019 22:41:28)

Отсутствует

 

№521-09-2019 23:14:00

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 326
UA: Firefox 60.0

Re: Redirector

negodnik пишет:

может в одно удасться объединить.

Удастся. Если твой Редиректор правильно исполняет\интерпертирует JS RegExt, - то вообще никакой проблеммы нет.
Есть недостаточно верно сформулированная задача(неверный\с_ошибками составленный(~ое) JS_RegExt).

вот, например, выражения(й) кот-е работает у мя в расш-и SilenBlock и кот-е соотв-ют JS_RegEx. Ну т.е. вся текстовая срань, из сетевых запросов попавшая под это соответствие будет порезана ещё до..:

скрытый текст

Выделить код

Код:

\Wad(?!%)(?:_?river|betclickin|code|creative\d?|force|form|fox|frame\w*|gear|glare|healers|high|labs?|look|market\w*|master\w*|mixer|nium|nxs|packs|partner)[\W_]
(?:mix|\W)adv(?:ert\w*|redirr|ombat|_out)[\W_]
\Wt(?:ea|i)(?:s|z)ers?(?:net|bank|media|lady|\.ssl-services)?\W

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]