Ergebnis 1 bis 14 von 14

Thema: [Projekt] Ref/Tracking-Links und was man dagegensetzen kann?

  1. #1

    [Projekt] Ref/Tracking-Links und was man dagegensetzen kann?

    Hallo zusammen!

    TL;DR
    Ich halte das Thema für relativ wichtig und zeitgemäß - und es soll dazu führen das Web wieder zurück in die Hände der Anwender zu bringen, aus den Armen der Datenkraken.

    Um was es geht, ein Beispiel (von mehreren):
    https://domain.com/?utm_source="wearetrackednet"&utm_campaign="sponsor2018"&user_id=1234

    Ein Tracking Link für eine Kampagne: "sponsor2018" mit Schlüsselwort "wearetrackednet" und der "user_id" 1234.
    Damit wäre es zum Beispiel sehr schnell möglich euch zu identifizieren und auch euer Surfverhalten nachzuvollziehen.

    Und dagegen möchte ich mit einem völlig neuem Browser Add-on/Extension angehen.
    Und ich würde euch gerne von der Pieke auf dabei haben wollen eure Meinungen und Erfahrungen zu schildern und euch mit Ideen/Wünschen einzubringen.

    Ziel
    - GET"-Parameter von URLs/Links auf Webseiten herausfiltern und entfernen, so das man nicht einfach nachvollzogen werden kann




    Beispiele für solche derartigen URLs/Links:

    + UTM Tracking Links
    https://domain.net/?utm_source="wearetrackednet"&utm_campaign="1412"




    + Google Suche, "Nächste Seite" + "Vorherige Link":
    https://www.google.de/search?q=suchanfrage&ei=1234Xid1&start=10&sa=N




    + Google Suche: "See results about" / "Ergebnisse von" Link:
    https://www.google.de/search?q=Test+2013&stick=H4sIAAAAAAAAAONgecToyi3w8sc9YSmbSWtOXmM04-IKzsgvd80rySypFNLgYoOy5Lj4pLj0c_UNyuPTq-JNNBikeLiQ-DwAanpke0oAAAA&sa=X&ved=2ahUKEwiY7ODZmp_cAhWGsqQKHQ7NAY4Q6RMwIHoECAoQBA




    + Google Bildersuche (krass lange Links)...
    https://www.google.de/imgres?imgurl=https%3A%2F%2Fwww.advidera.com%2Fwp-content%2Fuploads%2F2016%2F01%2Fgmx-login-navigation-suchanfrage.png&imgrefurl=https%3A%2F%2Fwww.advidera.com%2Fblog%2Fsuchanfragen-der-schluessel-zu-gutem-seo%2F&docid=lkzpEqi7cCymyM&tbnid=kkkkkkkkkkkk%3A&vet=123456i&w=1511&h=507&bih=672&biw=1283&q=suchanfrage&ved=1234xaya&iact=mrc&uact=8




    + Reflinks und Shopping Links (selbst dieser Link hat Reflinks, kommt aus Google)
    https://partnernet.amazon.de/help/topic/t5/a6/ref=amb_link_ZdaVG7HANcm70yIIKDQobw_7?pf_rd_p=00000000-0000-0000-916f-2a4a54e52000




    Und es gibt mit Sicherheit noch viele weitere Anbieter/Typen dieser Links/URLs.
    Und in der Regel werden diese Webseite auch weiterhin funktionieren, ohne das es wirklich nötig ist all diese Parameter an die Webseiten und Firmen zu übergeben.




    Helft mit und Brainstormed und schildert eure Sichtweise und Erfahrungen!

    1) Was für Tracking/Referal Links kennt ihr und wie sind diese aufgebaut, Beispiele!

    2) Wie sollte man die Request-Parameter einstellen können die entfernt werden bzw. erlaubt sind (Blacklist, Whitelist, nach Muster(n)... für jede Domain/Global) ?

    3) Wie sollte das Interface aufgebaut sein? Mobilansicht zuerst / Desktop? Welche Informationen müssen ersichtlich sein? Wie könnte ein mögliches Interface aufgebaut sein?

    4) Etwas wichtiges vergessen? Bitte angeben.

    PS: Sollte dies der falsche Platz für dieses Thema sein, bitte ich darum es zu verschieben.
    Geändert von theSplit (15.07.18 um 19:39 Uhr) Grund: Tracking URL hinzugefügt
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  2. #2
    ♪♪♫♪♫♫♪ Avatar von KaPiTN
    Registriert seit
    Jul 2013
    Beiträge
    8.465
    ngb:news Artikel
    7

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    Geht das über das hinaus, was diese Erweiterung macht?

    RefControl
    J'irai pisser sur votre bombes
    You can educate a fool, but you cannot make him think

  3. #3

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    RefControl scheint mir ausschließlich den HTTP-Referer zu manipulieren. Bei Ref-Links geht es zumindest meistens um Query-Parameter in der URL. Das wäre aber eine interessante Frage, wie weit verbreitet Ref-Links per Referer sind. Ich denke v.a. an Preissuchmaschinen mit den üblichen »Preis gilt nur bei Einstieg über diese Seite«-Links. Wie die üblicherweise technisch umgesetzt sind, weiß ich aber nicht.

    Was mir ansonsten spontan in den Sinn kam: Gibts da vielleicht schon was von Ratiopharm, a.k.a. uBlock/uMatrix? Schaut nicht so aus. Könnte aber vermutlich nicht schaden, mit denen für ein paar gute Tipps Kontakt aufzunehmen. Auf Anhieb sieht es mit so aus, dass ein Ref-Link-Filter ähnlich aufgebaut sein müsste.

    Ein möglicher Showstopper: Linkmanipulation durch Extensions ist von der Sicherheit her betrachtet echt kritisch. Inwieweit erlauben die relevanten Browser sowas überhaupt?
    Für diesen Beitrag bedankt sich KaPiTN

  4. #4
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.462
    ngb:news Artikel
    1

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @KaPiTN: Wenn ich das, von dir erwähnte, 'RefControl' richtig verstehe, wird damit der Referer (von welcher Seite man aus kommt) als Information entfernt.

    Im Grunde geht es aber darum, "wie" ein Link/URLs aufgerufen wird und ist ein wenig etwas anderes. Der Unterschied ist der folgende:

    Rufst du im Browser die URL 1) oder 2) auf und übermittelst damit etwas - du rufst die URL ja mit den Parametern auf, die erfasst werden können.
    1) https://google.de/search?q=IchBinDerQueryBeiGoogle&ved=12345idUser&start=10
    oder
    2) https://google.de/search?q=IchBinDerQueryBeiGoogle&start=10

    Für Google wäre nur der Query (1) Interessant nach WAS du suchst und "start" auf welcher Seite du bist bzw. ab welchem Ergebnis, aber nicht die Zuordnung über den Parameter "ved", zum Beispiel.

    Die Idee ist aber, nicht der Referer von wo du kommst entfernt wird, sondern das die URL überhaupt nicht mit diesem Parameter "ved", der dich einkreisen könnte, angesteuert wird.

    Ein anderes Beispiel wäre die "nächste Seite" Link im ersten Beitrag, hier ist nur wichtig auf welcher Seite du dich befindest, also Ergebnis 1-10, 11-20 usw... und damit du navigieren kannst in der Suche, alles andere ist theoretisch "überflüssig" und dient, vermutlich, nur dazu dich und deine Sitzung nachzuvollziehen.

    @Brother John:
    Linkmanipulation geht über ein content-Skript, das würde dann einfach die URL von
    https://google.de/q=Suchanfrage&ved=12345&start=10

    umschreiben zu:
    https://google.de/q=Suchanfrage&start=10

    Und diese Manipulationen sind meines wissen nach absolut möglich, andere Add ons wie Greasemonkey zum Beispiel, erlauben es dir ja auch Javascript auf eine Seite anzuwenden und diese zu modifizieren.

    Bezüglich eines Filtermechanismusses, "Update" Listen wären in der Tat gut, da müsste man nich alles von Hand einstellen müssen und könnte einfach "Updaten" - auch nicht unbedingt "technische" Leute. Auf der anderen Seite sollte aber dann ein manuelles "überschreiben" der Regeln, aus einer Liste, möglich sein. Und ich würde auch sagen, muss man selbst auch eigene Regeln vergeben können für eine Domain(?) oder selektiv deaktivieren können.
    Für diesen Beitrag bedankt sich KaPiTN
    Geändert von theSplit (15.07.18 um 16:50 Uhr) Grund: "n" != "start" als GET Parameter + LINK zu MDN
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  5. #5
    ♪♪♫♪♫♫♪ Avatar von KaPiTN
    Registriert seit
    Jul 2013
    Beiträge
    8.465
    ngb:news Artikel
    7

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    Ach so. Also geht es um Tracking URLs.

    Da gibt es auch bereits Erweiterungen. Ich weiß nicht, ob man die noch toppen kann und muß. (?)


    Beispiele:

    Link Cleaner

    Clean Links
    J'irai pisser sur votre bombes
    You can educate a fool, but you cannot make him think

  6. #6
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.462
    ngb:news Artikel
    1

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @KaPiTN:

    Ich passe mal den Threadtitel an bzw. ergänze das.

    Ich gehe mal die Add-ons kurz durch, mit etwas Meinung und auch mit einer Frage zu "Clean Links".

    Link Cleaner liest sich sehr speziell:

    - removes utm_* parameters
    - on item pages of aliexpress and amazon, removes tracking parameters
    - skip redirect pages of facebook, steam and reddit
    UTM parameter, okay - und Anti-Tracking auf Ali, Amazon(?) - das klingt etwas wenig. Und es lässt sich scheinbar nicht konfigurieren.

    Clean Links verstehe ich nicht ganz um ehrlich zu sein, sieht aber schon sehr genau danach aus.
    Hier sehe ich nur das Problem das man RegEx schreiben und verstehen muß und selbst mit dem Beispiel, wie muß das Add on bzw. der Regex konfiguriert werden, um den GET hier zu bereinigen damit aus der URL bzw. dem Request:

    https://www.google.de/search?q=test&...&start=30&sa=N

    das hier wird?
    https://www.google.de/search?q=test&start=30

    Und normalerweise verstehe ich RegEx ja schon einigermaßen, aber ich wüsste nicht, wie das eingestellt werden muß. Daher, wie kann man das damit umsetzen?
    Ich frage nicht weil ich faul bin, ich bin nur überfordert den RegEx String so anzupassen, dass man genau die Parameter abschneidet/herausgefiltert werden aus der URL.
    Und dann die Frage auch im Anschluss, ist das so für dich in dieser Form nutzbar?
    Geändert von theSplit (15.07.18 um 19:44 Uhr)
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  7. #7
    ♪♪♫♪♫♫♪ Avatar von KaPiTN
    Registriert seit
    Jul 2013
    Beiträge
    8.465
    ngb:news Artikel
    7

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @theSplit:

    Da ist doch bereits ein RegEx-string vorgegeben



    Code (Text):
    1. (?:ref|aff)\\w*|utm_\\w+|(?:merchant|programme|media)ID
    J'irai pisser sur votre bombes
    You can educate a fool, but you cannot make him think

  8. #8
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.462
    ngb:news Artikel
    1

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @KaPiTN: Das habe ich gesehen Aber wie wäre die korrekte Einstellung dafür?

    Aber auch ein Punkt, ist das wirklich praktikabel in der Form?
    Technisch vielleicht, weil man den UserRegEx über den Request bzw. URL "matched/replaced" aber wenn man diverse Seiten hätte die zig Parameter nehmen. Dann kann ich den Wert nicht mehr managen, vermute ich - zumindest nicht ohne anderes Interface.
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  9. #9
    Temporär Suspendiert :D Avatar von KcDaRookie
    Registriert seit
    Jul 2013
    Beiträge
    276

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @theSplit: Regex wäre z. Bsp. folgender: (http[s]:\/\/www\.google\.de\/search).*?(q=[^&]*).*?(&start=\d*).*?
    Ersetzen dann mit: $1?$2$3

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Unbenannt.png 
Hits:	9 
Größe:	32,9 KB 
ID:	51802
    Für diesen Beitrag bedankt sich theSplit
    Was Microsoft außer Windows und Office noch zu bieten hat.
    Die Kunst das letzte Wort zu haben.
    Die Wahrscheinlichkeit das keine Antwort mehr nach meinem Post kommt liegt bei 80% ^^

    R.I.P. Gulli *6. November 1998 - † 01. Juli 2013

  10. #10
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.462
    ngb:news Artikel
    1

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @KcDaRookie: Danke dir, das mit den Catching Groups ist mir auch ein Begriff. - aber ich wollte halt wissen "wie" geht das bei dem vorgeschlagenen 'Clean Links' Add-on?

    Ich will doch nur 2 Parameter aus der URL weg haben...


    Edit: So sieht das in den Settings der Extension aus:

    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  11. #11
    Temporär Suspendiert :D Avatar von KcDaRookie
    Registriert seit
    Jul 2013
    Beiträge
    276

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    Genau so.
    Du matchst mit RegEx nicht das, was du nicht willst, das kennst du ja garnicht.
    Sondern matchst, was du behalten willst und baust den String dann selbst auf.

    Wie willst du denn andersrum matchen, wenn du garnicht weißt wonach du suchst?

    Edit: Also ob Clean Links so funktioniert kA, hab das Add-On nicht. Aber andersrum ist halt ziemlich unsinnig zu arbeiten.

    Edit2: Sehe deinen Nachtrag, da wüsste ich das auch nicht.
    Was Microsoft außer Windows und Office noch zu bieten hat.
    Die Kunst das letzte Wort zu haben.
    Die Wahrscheinlichkeit das keine Antwort mehr nach meinem Post kommt liegt bei 80% ^^

    R.I.P. Gulli *6. November 1998 - † 01. Juli 2013

  12. #12
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.462
    ngb:news Artikel
    1

    Re: [Projekt] Ref-Links und was man dagegensetzen kann?

    @KcDaRookie: Hier ist ein Screenshot der Settings (RegEx Pattern) von Clean Links. Schau dir das mal an ob du damit klar kommen würdest.

    \w = Word Character, okay...
    () die Gruppe

    aber:
    Code (Text):
    1.  
    2. [?&]ei[^&]*
    3.  
    geht nicht? So würde ich das aber umsetzen was, ich vermute, was verlangt wird siehe (siehe Screenshot):

    https://www.picflash.org/picture.php...QM&action=show
    Geändert von theSplit (16.07.18 um 02:25 Uhr) Grund: Jetzt geht es doch, aber ich bin nicht zufrieden damit :p
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  13. #13
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.462
    ngb:news Artikel
    1

    Re: [Projekt] Ref/Tracking-Links und was man dagegensetzen kann?

    Ich bin etwas unzufrieden mit den anderen Lösungen, daher habe mal etwas Code geschrieben...

    Das ganze kann man so in GreaseMonkey verwenden:

    Spoiler: 

    Code (JavaScript):
    1. // ==UserScript==
    2. // @name                    GETRequestCleaner-test
    3. // @author                  theSplit <touch@dwrox.net> (https://github.com/jrie)
    4. // @description                      Cleans links GET Parameters based on rules and optional extra patterns using regular expressions
    5. // @license                 GPL-3.0+; http://www.gnu.org/licenses/gpl-3.0.txt
    6. // @version                         0.1
    7. // @grant                   none
    8. // ==/UserScript==
    9.  
    10. // Rules
    11. // Global rules and patterns, appliying to every page those patterns are joined
    12. let globalRules = {
    13.   'UTM': ['utm_']
    14. }
    15.  
    16. // On which domain names: http[s]://$DomainTrigger - to trigger a rule by set name and domain.
    17. // Can be 'www12.google.com' or 'google.com' or just 'google', last to target every domain where "google" occurs
    18. // NOTE: $domainRules has to be the exact name for rules to apply!!
    19. let domainTrigger = ['google']
    20.  
    21. // Domain specific rules triggered by $DomainTrigger - those are joined together = "(ei|biw|bih|...)"
    22. let domainRules = {
    23.   'google': ['ei', 'biw', 'bih', 'vet', 'ved', 'source', 'iact', 'ie', 'oe', 'stick', 'gl']
    24.   // Example: 'www12.google.com': ['ei', 'biw', 'bih', 'vet', 'ved', 'source', 'iact', 'ie', 'oe', 'stick', 'gl']
    25. }
    26.  
    27. // This are additions (regEx) to the joined $globalRules and $domainRules and appended to the regular expression.
    28. // NOTE: This is unrequired, but can be to more precise - you can simplify or remove google perhaps as we check for '?|&'
    29. let ruleExtras = {
    30.   'UTM': '.*=',
    31.   'google': '='
    32. }
    33.  
    34. // Whats the name of the rule by $Trigger
    35. // NOTE: Also this can be empty, then just we say that $trigger not $ruleName changed links!
    36. let ruleNames = {
    37.   'UTM' : 'UTM link pattern',
    38.   'google': 'Google pages'
    39. }
    40.  
    41. // Is a console present? No need to change...
    42. let hasConsole = window.console !== undefined
    43.  
    44. // --------------------------------------------------------------------------------------------------------------------------------
    45.  
    46. function applyRulesToLinks (evt) {
    47.   let hrefLinks = document.querySelectorAll('a')
    48.   let location = document.location.toString()
    49.  
    50.   let targetLinks = []
    51.   for (let link of hrefLinks) {
    52.     if (link.href.indexOf('?') !== -1) targetLinks.push(link)
    53.   }
    54.  
    55.   let modifiedByRules = {}
    56.  
    57.   for (let link of targetLinks) {
    58.  
    59.     for (let trigger of Object.keys(globalRules)) {
    60.       let ruleSetString = '(' + globalRules[trigger].join('|') + ')'
    61.  
    62.       if (ruleExtras[trigger] !== undefined) ruleSetString += ruleExtras[trigger]
    63.  
    64.       let regex = new RegExp('[?&]' + ruleSetString + '[^&]*', 'gi')
    65.  
    66.       let oldHref = link.href
    67.       link.href = link.href.replace(regex, '')
    68.  
    69.       if (link.href.indexOf('?') === -1) link.href = link.href.replace('&', '?')
    70.  
    71.       if (oldHref !== link.href) {
    72.         if (modifiedByRules[trigger] === undefined) modifiedByRules[trigger] = 1
    73.         else ++modifiedByRules[trigger]
    74.  
    75.         console.log('before')
    76.         console.log(oldHref)
    77.         console.log('after general')
    78.         console.log(link.href)
    79.       }
    80.     }
    81.  
    82.   }
    83.  
    84.   for (let trigger of domainTrigger) {
    85.     let domainRegEx = new RegExp('.*(' + trigger + ')[^\/]', 'i')
    86.     let domainLocationMatch = location.match(domainRegEx)
    87.     /*
    88.     console.log('Match:')
    89.     console.log(domainRegEx.toString())
    90.     console.log(domainLocationMatch)
    91.     */
    92.  
    93.     if (domainLocationMatch !== null) {
    94.       if (domainRules[trigger] !== undefined) {
    95.         let ruleSetString = '(' + domainRules[trigger].join('|') + ')'
    96.  
    97.         if (ruleExtras[trigger] !== undefined) ruleSetString += ruleExtras[trigger]
    98.  
    99.         let regex = new RegExp('[?&]' + ruleSetString + '[^&]*', 'gi')
    100.  
    101.         for (let link of targetLinks) {
    102.           let oldHref = link.href
    103.           link.href = link.href.replace(regex, '')
    104.  
    105.           if (link.href.indexOf('?') === -1) link.href = link.href.replace('&', '?')
    106.  
    107.           if (oldHref !== link.href) {
    108.             if (modifiedByRules[trigger] === undefined) modifiedByRules[trigger] = 1
    109.             else ++modifiedByRules[trigger]
    110.           }
    111.         }
    112.       }
    113.     }
    114.   }
    115.  
    116.   if (hasConsole) {
    117.     for (let appliedRule of Object.keys(modifiedByRules)) {
    118.       let changedLinks = modifiedByRules[appliedRule]
    119.       if (ruleNames[appliedRule] !== undefined) console.log('[' + new Date().toLocaleString() + '] Rule applied: "' + ruleNames[appliedRule] + '" and ' + changedLinks + ' ' + (changedLinks === 1 ? 'link' : 'links') + ' changed.')
    120.       else console.log('[' + new Date().toLocaleString() + '] Unknown rule applied: "' + appliedRule + '" and ' + changedLinks + ' ' + (changedLinks === 1 ? 'link' : 'links') + ' changed.')
    121.     }
    122.   }
    123. }
    124.  
    125. // --------------------------------------------------------------------------------------------------------------------------------
    126. // When the document is ready, trigger the function
    127. document.onreadystatechange = applyRulesToLinks


    Nichts desto trotz wäre ein Add-on mit Interface schöner, das darauf aufbaut und die Einstellungen wartbar macht und zum Beispiel erlaubt zu filternde Parameter, in die Regeln, hinzuzufügen oder zu entfernen.

    Dev Note:
    Das ganze funktioniert schon hinreichend und ist wesentlich einfacher zu bedienen als die bisher vorgeschlagen Lösungen. Lizenz, GPL3+, ja, weil ich denke das es arbeit war. - Auch wenn es keine Raketenwissenschaft ist.

    Ansonsten, ich bin schon dabei gewesen das ganze in ein Add-on zu gießen, das unteranderem die GET Parameter sammelt und an ein UI übergibt welches diese darstellt (erstmal aufgebaut wie FlagCookies, aber das ist nicht der Stein der Weisen in dem Anwendungsfall). Jedenfalls funktioniert das schon prima.

    Ich bin aktuell nur am überlegen, wie man das UI aufbaut. Aber die Grundlagen mit den Regeln und wie diese angewandt werden, stehen ja bereits schon.

    Feedback ist willkommen.


    Hier mal take 2 der etwas schneller läuft:

    Code (JavaScript):
    1. // ==UserScript==
    2. // @name                    GETRequestCleaner-test
    3. // @author                  theSplit <touch@dwrox.net> (https://github.com/jrie)
    4. // @description          Cleans links GET Parameters based on rules and optional extra patterns using regular expressions
    5. // @license                 GPL-3.0+; http://www.gnu.org/licenses/gpl-3.0.txt
    6. // @version                 0.1
    7. // @grant                   none
    8. // ==/UserScript==
    9.  
    10. // Rules
    11. // Global rules and patterns, appliying to every page those patterns are joined
    12. let globalRules = {
    13.   'UTM': ['utm_']
    14. }
    15.  
    16. // On which domain names: http[s]://$DomainTrigger - to trigger a rule by set name and domain.
    17. // Can be 'www12.google.com' or 'google.com' or just 'google', last to target every domain where "google" occurs
    18. // NOTE: $domainRules has to be the exact name for rules to apply!!
    19. let domainTrigger = ['google']
    20.  
    21. // Domain specific rules triggered by $DomainTrigger - those are joined together = "(ei|biw|bih|...)"
    22. let domainRules = {
    23.   'google': ['ei', 'biw', 'bih', 'vet', 'ved', 'source', 'iact', 'ie', 'oe', 'stick', 'gs_l', 'psy_l', 'sa', 'fg']
    24.   // Example: 'www12.google.com': ['ei', 'biw', 'bih']
    25. }
    26.  
    27. // This are additions (regEx) to the joined $globalRules and $domainRules and appended to the regular expression.
    28. // NOTE: This is unrequired, but can be to more precise - you can simplify or remove google perhaps as we check for '?|&'
    29. let ruleExtras = {
    30.   'UTM': '.*=',
    31.   'google': '='
    32. }
    33.  
    34. // Whats the name of the rule by $Trigger
    35. // NOTE: Also this can be empty, then just we say that $trigger not $ruleName changed links!
    36. let ruleNames = {
    37.   'UTM': 'UTM link pattern',
    38.   'google': 'Google pages'
    39. }
    40.  
    41. // Is a console present? No need to change...
    42. let hasConsole = window.console !== undefined
    43.  
    44. // --------------------------------------------------------------------------------------------------------------------------------
    45.  
    46. function applyRulesToLinks (evt) {
    47.   let hrefLinks = document.querySelectorAll('a')
    48.  
    49.   let location = document.location.toString()
    50.  
    51.   let targetLinks = []
    52.   for (let link of hrefLinks) {
    53.     if (link.href.indexOf('?') !== -1) {
    54.       targetLinks.push(link)
    55.     }
    56.   }
    57.  
    58.   let modifiedByRules = {}
    59.  
    60.   let tmpHref = ''
    61.   for (let link of targetLinks) {
    62.     for (let trigger of Object.keys(globalRules)) {
    63.       let ruleSetString = '(' + globalRules[trigger].join('|') + ')'
    64.  
    65.       if (ruleExtras[trigger] !== undefined) ruleSetString += ruleExtras[trigger]
    66.  
    67.       let regex = new RegExp('[?&]' + ruleSetString + '[^&]*', 'gi')
    68.  
    69.       tmpHref = link.href.toString().replace(regex, '')
    70.  
    71.       if (tmpHref.length !== link.href.length) {
    72.         if (tmpHref.indexOf('?') === -1) tmpHref = tmpHref.replace('&', '?')
    73.         link.href = tmpHref
    74.  
    75.         if (modifiedByRules[trigger] === undefined) modifiedByRules[trigger] = 1
    76.         else ++modifiedByRules[trigger]
    77.       }
    78.     }
    79.   }
    80.  
    81.   for (let trigger of domainTrigger) {
    82.     let domainRegEx = new RegExp('.*(' + trigger + ')[^\/]', 'i')
    83.     let domainLocationMatch = location.match(domainRegEx)
    84.  
    85.     if (domainLocationMatch !== null) {
    86.       if (domainRules[trigger] !== undefined) {
    87.         let ruleSetString = '(' + domainRules[trigger].join('|') + ')'
    88.  
    89.         if (ruleExtras[trigger] !== undefined) ruleSetString += ruleExtras[trigger]
    90.  
    91.         let regex = new RegExp('[?&]' + ruleSetString + '[^&]*', 'gi')
    92.         let hasModifiedLink = false
    93.         for (let link of targetLinks) {
    94.           let targetHref = link.href.toString().replace(regex, '')
    95.  
    96.           if (targetHref.length !== link.href.length) {
    97.             if (targetHref.indexOf('?') === -1) targetHref = targetHref.replace('&', '?')
    98.  
    99.             link.href = targetHref
    100.  
    101.             if (!hasModifiedLink) {
    102.               modifiedByRules[trigger] = 1
    103.               hasModifiedLink = true
    104.             } else ++modifiedByRules[trigger]
    105.           }
    106.         }
    107.       }
    108.     }
    109.   }
    110.  
    111.   // ------------------------------------------------------------------------------------------------------------------------------
    112.  
    113.   if (hasConsole) {
    114.     for (let appliedRule of Object.keys(modifiedByRules)) {
    115.       let changedLinks = modifiedByRules[appliedRule]
    116.       if (ruleNames[appliedRule] !== undefined) console.log('[' + new Date().toLocaleString() + '] Rule applied: "' + ruleNames[appliedRule] + '" and ' + changedLinks + ' ' + (changedLinks === 1 ? 'link' : 'links') + ' changed.')
    117.       else console.log('[' + new Date().toLocaleString() + '] Unknown rule applied: "' + appliedRule + '" and ' + changedLinks + ' ' + (changedLinks === 1 ? 'link' : 'links') + ' changed.')
    118.     }
    119.   }
    120. }
    121.  
    122. // --------------------------------------------------------------------------------------------------------------------------------
    123. // When the document is ready, trigger the function
    124. document.onreadystatechange = applyRulesToLinks
    125.  
    Für diesen Beitrag bedankt sich BurnerR
    Geändert von theSplit (17.07.18 um 22:20 Uhr) Grund: 2te schnellere Version
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @ The past; yesterday, the present; here and now; the future; to be shaped. @
    +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead+++ KISS Ebook Starter [Linux] +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp +++ Github +++ Touch +++

  14. #14
    Mitglied Avatar von phre4k
    Registriert seit
    Mar 2015
    Beiträge
    5.351
    ngb:news Artikel
    4

    Re: [Projekt] Ref/Tracking-Links und was man dagegensetzen kann?

    https://addons.mozilla.org/de/firefox/addon/neat-url/

    Neat URL cleans URLs, removing parameters such as Google Analytics' utm parameters.
    Example
    Before: http://www.phoronix.com/scan.php?pag...nix+(Phoronix)

    After: http://www.phoronix.com/scan.php?pag...3-Auto-Updater

    Custom rules can be added using the global format or the domain specific format (parameter@domain). A domain specific parameter would be, for example, utm_campaign@phoronix.com.
    Parameter rules
    A parameter is something that starts with ?. You can add your own parameter in the options of Neat URL. The ? is ommitted in the options, so a ?ved parameter becomes "ved". There are a few exceptions to this rule (see below)

    Parameters can be global (for every domain):
    utm_source

    Parameters can contain @ signs (domain-specific):
    nb@tweakers.net

    Parameters can contain @ signs with a wildcard so every subdomain will match too:
    param@*.wired.com

    Parameters can contain @ signs with a wildcard at the end of a domain name (matches every domain name which begins with "google" and ends in an unknown suffix:
    param@google.*

    Parameters can also apply globally (first rule), except for a (wilcard) domain (second rule):

    ref
    !ref@amazon.co.uk

    The excluded domain always takes precedence. Should you include "ref" and "!ref", "!ref" will apply.

    Other valid parameters (exceptions to the ? rule):
    #xtor=RSS-8 (remove this parameter - be sure to include its value as well when you are using anchor tags)
    #xtor=RSS-8@futura-sciences.com
    $/ref@amazon.* (remove everything after /ref on amazon domains - this will only apply when there are no query parameters left after removing the filtered query parameters)
    $$/ref@amazon.* (remove everything after /ref on amazon domains - this will always apply, even when there are other query parameters after removing the filtered query parameters - this option is available because the user should be in control but beware that double dollar signs are dangerous, it might break the URL)

    Invalid parameters:
    param@*.google.* (too many wildcards)
    !ved (this is some random string - not supported, but it might work)
    /ref@amazon.*$ (dollar sign should be at the beginning)
    History
    Neat URL is based on Lean URL. Neat URL contains a few improvements:
    * set your own URL parameters on the options page (to reach feature parity with Pure URL)
    * fixed for recent Firefox versions
    * a nice animation in the toolbar (can be changed or disabled)
    * domain-specific blocked parameters (to reach feature parity with Pure URL)
    * wildcard domain-specific blocked parameters
    Bug reports and feature requests
    You can open an issue on GitHub: https://github.com/Smile4ever/Neat-URL/issues/new
    Für diesen Beitrag bedanken sich theSplit, BurnerR
    *mit Linux wäre das natürlich nicht passiert™
    Arguing that you don't care about the right to privacy because you have nothing to hide is no different than saying you don't care about free speech because you have nothing to say. – Edward Snowden
    tilde.fun – dein kostenloser Linux-Account in der Cloud | Inoffizielle ngb-Telegram-Gruppe
    GCM/S/TW d s+:- a-----? C++$ UL+++$ P-- L+++ E---- W++++ !N ?K w- M-- !P[A-Z] Y++ PGP R* tv-- b++>++++ DI++\:\( G+ e+>++++ h*

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •