Forum Replies Created

Viewing 15 replies - 31 through 45 (of 157 total)
  • Hi,

    Cachify does not actually cache cookies. I assume you want to exclude cache generation/display when a user request contains a certain cookie?

    You can achieve this using the cachify_skip_cache hook, e.g.

    add_filter(
      'cachify_skip_cache',
      function( $skip ) {
        return $skip || isset( $_COOKIE['cookie_name'] );
      }
    );
    

    If you use HDD caching with direct webserver configuration, you need to extend this as well.

    nginx
    Extend

    if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) {
      return 405;
    }

    with cookie name as required:

    if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_|cookie_name ) {
      return 405;
    }

    Apache (htaccess)

    Extend

    RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_

    to

    RewriteCond %{HTTP_COOKIE} !((wp-postpass|wordpress_logged_in|comment_author)_|cookie_name)

    Cheers,
    Stefan

    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Yours:
    Mine: '

    Different character.
    It may look similar depending on the font, but is not the same.

    Probably typed on some mobile device keyboard or modified by auto“correction“. Only one of them is a valid string delimiter in PHP.

    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Oh, I see. Copied some wrong quoting signs, so it is not a valid PHP string. Should be highlighted red in the editor and it obviously is not.

    Correct: 'statify__user_can_see_stats'
    Incorrect: ‘statify__user_can_see_stats‘

    Same for both strings.

    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Hi @wvgdesign,

    Apparently the example from the documentation is invalid. The filter should be a function, not a boolean result…

    This should be valid:

    add_filter(
      ‘statify__user_can_see_stats’,
      function( $previous ) {
        return $previous || current_user_can( ‘edit_others_pages’ );
      }
    );

    $previous is the result of previously executed filters or – if none – the default result of Statify which is either true or false. Can be extended as needed.

    Cheery,
    Steafn

    Hi Grant,

    we just updated the compatibility flag, should be 6.0 by now.

    Also no regressions found on some test sites.

    Cheers,
    Stefan

    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Alternativ die Tabelle wie sie ist importieren und dann die Daten übertragen und die alte dann löschen:

    INSERT INTO wpnew_statify (created, referrer, target)
    SELECT created, referrer, target FROM wpold_statify ORDER BY id

    (id absichtlich nicht übertragen. Wenn man die mitnimmt, müsste man hinterher Auto-Increment noch neu setzen)

    Neue löschen und alte umbenennen geht theoretisch auch, wenn sie denn wirklich gleich ist.

    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Hi,

    JavaScript based tracking is required for about every form of caching. With or without nonce depending on the desired cache timeout.

    None of the methods requires jQuery for the tracking part. The tracking routine is plain JS.

    Cheers,
    Stefan

    Plugin Author Stefan Kalscheuer

    (@stklcode)

    Hi,

    ich bin kein Experte für das Plugin, aber wenn ich das gerade richtig im Kopf habe, zeigt die Übersicht nach Verweisen keine Aufrufe ohne Verweis an.

    Davon gibt es tendenziell auch einige (erfahrungsgemäß irgendwo zwischen 25 und 75%) aus den verschiedensten Gründen, z.B. direkte URL-Eingabe, Links aus E-Mails/Chats, Lesezeichen, “noreferrer“ Links, Privacy-Plugins im Browser. Viele Bots/Crawler/Monitoringtools schicken auch keine Referrer-Header mit (wozu auch, wenn sie nicht auf Referrer-Spam aus sind), aber allein von der Nicht-Existenz lässt sich auf nicht wirklich viel schließen.

    Sowas bekommen externe Analysetools wie GA teilweise etwas präziser hin, wenn sie auf mehreren Seiten eingebunden sind und die Nutzer einfach auf anderem Wege nachverfolgen können (z.B. Tracking-Cookies).
    Wenn man viel mit Mails/Newslettern arbeitet, gibt es noch die Möglichkeiten von Weiterleitungsdiensten, die das für einen nachhalten oder es werden extra Parameter in die Links eingefügt “…?origin=newsletter-2022-07“.
    Betreibt man diese Aufwände nicht (Kosten, Zeit, Datenschutz oder warum auch immer), ksnn man eben nur auswerten, was man vom Nutzer mitgeschickt bekommt – und genau das tut Statify.

    Gruß,
    Stefan

    Plugin Author Stefan Kalscheuer

    (@stklcode)

    Hi Asterios,

    das Statify – Extended Evaluation Plugin von Patrick Robrecht bietet unter anderem eine Aufstellung nach Referrer (Verweise) über einstellbare Zeiträume, optional auch pro Seite.

    Was da drin ist und zwischenzeitlich schon auf der Filterliste steht, lässt sich mit dem Filter-Plugin nach Bedarf manuell bereinigen, wenn man rückwirkend etwas präzisere Zahlen möchte/braucht.

    Was davon Spam ist, ist eine Wissenschaft für sich. Klar gibt es die Klassiker, Bitc*in, SEO, D*llar, S*x, Dr*gs, … teilweise schlicht Werbung für dubiose Onlineshops.
    Muss man im Einzelfall etwas ein Gespür für entwickeln oder verdächtige Stichproben mit bekannten Listen abgleichen. Wenn man über Cryptowährungen, Suchmaschinenoptimierung oder zwischenmenschliche Aktivitäten bloggt, sind manche der typischen Schlagwörter ja möglicher Weise nicht pauschal Spam. Aufrufe aus dem Ausland haben manchmal auch erst auf den zweiten Blick nachvollziehbare, legitime Gründe. Kommt immer etwas drauf an, wie viel Traffic die Seite sieht und wie breit die Zielgruppe ist.

    Gruß,
    Stefan

    Plugin Author Stefan Kalscheuer

    (@stklcode)

    Hi @astera77,

    das kann man grundsätzlich so machen.

    Statify selbst hat auch die eingebaute Option Tracking ausschließen für “Nicht erlaubte Verweise”. Damit werden Referrer über die “Kommentar-Sperrliste” abgefangen (Einstellungen > Diskussion), wenn die Domain übereinstimmt. Eine Liste wie die genannte von Matomo kann man auch hier einsetzen, dann benötigst du das Statify Filter Plugin zumindest für diesen Zweck nicht.

    So gern ich hier mein eigenes Plugin anpreisen würde, für viele Installationen reicht das schon.

    Was das Filter-Plugin mit Blick auf Referrer mehr kann, sind komplexere Ausdrücke. Wenn man z.B. Spam von “spam1.example.com”, “spam2.example.com”, “spam1337.exampe.com” und vielleicht auch noch “spam5.example.NET” sieht, die nicht alle auf solchen Filterlisten landen, gäbe es hier die Möglichkeit (die die Kommentar-Sperrliste nicht bietete), auch mit Subdomains und regulären Ausdrücken zu arbeiten.
    Also z.B. “example.com” mit Einstellung Subdomain sperrt die ersten 3 aus der o.g. Liste oder ein Ausdruck wie “spam[0-9]+\.example\.(com|net)” alle.

    Und natürlich die Bereinigungsfunktion, falls die Statify-Statistik schon voll mit Spam ist.

    Ob eine externe Spammer-Listen nötig oder ausreichend ist, kann im Einzelfall verschieden sein. Ich habe Seiten, auf denen in der Liste bloß 5 Einträge stehen, einfach gesammelt oder irgendwas sehr individuelles. Manchmal sind es auch gar keine klassischen Spammer, sondern Bots, die nach typischen Schwachstellen suchen oder ganz harmlose Monitoring-Systeme, die durch die Standardfilter durchfallen.

    Spambots, die Kommentar- oder Kontaktformulare “bedienen”, sind noch einmal eine andere Kategorie. Teilweise sind die echt gut, unterstützen Javascript, brechen durch Parameter in der URL absichtlich das Caching und identifizieren sich selbst als ganz normaler Webbrowser ohne Referrer oder so tuend, als kämen sie von einer Suchmaschine (wenn die Rechenzeit jemand anders zahlt, kann man’s ja machen…) Viele sind zum Glück etwas stumpfer, da hat man es leichter, da fliegt teilweise 90% durch Aktivieren des Javascript-Tracking weg.

    Gruß,
    Stefan

    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Hallo Iokonie,

    ich sehe hier 2 Mögliche Ursachen:

    Zum einen hast du die Seite mindestens 2x hier im Supportforum angegeben (was oft auch bei der Diagnose helfen kann) und in deinem Benutzerprofil verlinkt. Ich selbst habe selbst sicher ein paarmal draufgeklickt und den einen oder anderen stillen Mitleser gibt es vermutlich auch. Das als Besucher zu erfassen ist schätzungsweise legitim – ich würde mich als durchaus real betrachten 😉

    Darüber hinaus hattest du wohl eine gewisse Zeit den hier diskutieren Filter aktiv, der durch das false die in Statify eingebauten Filter ausgehebelt hatte. Dadurch kann es wohl sein, dass ein paar automatisierte Anfragen nicht aussortiert wurden.

    Da letzteres inzwischen behoben ist, würde ich das ganze ein paar Tage lang beobachten. Die Themen hier verlieren mit der Zeit an Relevanz, demnach sollten dieser Herkunftsweg anteilig abnehmen, wenn hier keine verstärkten Aktivitäten folgen. Bei geringem regelmäßigen Besucheraufkommen können eine Hand voll Personen schonmal kurzfristig einen Peak verursachen.

    Gruß,
    Stefan

    PS: Ohne jetzt wieder groß Eigenwerbung machen zu wollen … Wenn du Statify Filter sowieso schon aktiv hast, kannst du Herkunftsseiten wie “wordpress.org” in die Filterliste eintragen und über den Button “Datenbank bereinigen” bereits existierende Einträge entfernen lassen. Davon ausgehend, dass hier aber doch echte Menschen die Links benutzen, muss das vielleicht gar nicht sein.

    PPS: Und der Vollständigkeit halber Ja, es gibt “Referrer Spam”. Wenn verstärkt SEO-Werbung oder grenzlegales Zeug in den Top-Listen steht, sind die Chancen ganz gut, dass Spambots unterwegs sind, die hinreichend gut echte Besucher simulieren. wordpress.org ist mir in diesem Zusammenhang aber noch nie negativ aufgefallen.

    Plugin Author Stefan Kalscheuer

    (@stklcode)

    Hallo Iokonie,

    da beliebig viele Filter-Hooks konfiguriert wer können, gibt es eine Reihenfolge, in der diese abgearbeitet werden. Dazu gibt es eine Priorität. Standard ist 10, kleiner heißt „höhere Priorität“, also „wird früher ausgeführt“. Innerhalb einer Priorität in der Reihenfolge, in der sie hinzugefügt werden, also abhängig von der Verarbeitungsreihenfolge der PHP Dateien. Die Priorität kann man als dritten Parameter von add_filter übergeben, nach Hook-Name und Funktion. Z.B. so:

    
    add_filter(
      ‘statify__skip_tracking’,
      function() {
        return is_page( ‘besucher-statistik’ ) return true;
        return null;
      },
      20
    );
    

    Filter bekommen üblicher Weise immer das Ergebnis eines vorher ausgeführten Filters mit übergeben. So kann man aktiv mit der Reihenfolge arbeiten, um komplexere Ketten aufzubauen. Bei Statify fängt die Kette immer mit null an und ganz am Schluss kommt die eingebaute Filterlogik (Suchmaschinen, Fehlerseiten, etc. ausschließen), falls bis dahin noch keine Entscheidung getroffen wurde. Eigene Filter oder Plugin dazwischen in o.g. Reihenfolge.

    In diesem Fall könnte man die Funktion entsprechend mit einem Parameter bauen, z.B. statt fest null einfach das letzte Resultat weiterreichen, egal was es war.

    
    add_filter(
      ‘statify__skip_tracking’,
      function( $prev_result ) {
        if ( is_page( ‘besucher-statistik’ ) return true;
        return $prev_result;
      },
      20
    );
    

    (Referenz: https://developer.wordpress.org/reference/functions/add_filter/ )

    Gruß,
    Stefan

    Plugin Author Stefan Kalscheuer

    (@stklcode)

    Hi,

    da dürfte das Problem liegen.

    Der Filter Hook kennt 3 Rückgabewerte:

    • true – Tracking skippen (keine weiteren Tests ausführen)
    • false – Tracking nicht skippen (keine weiteren Tests ausführen)
    • null – keine Entscheidung (weitere Filter auswerten)

    (Dokumentation)

    Du solltest hier vermutlich null zurückgeben und nicht false.

    Ist nicht ganz intuitiv, aber so kann man selbst die in Statify eingebauten Filter übergehen, wenn man es denn mag.

    Falls es tatsächlich beabsichtigt sein sollte, nach diesem Filter immer zu tracken, muss die Filterpriorität reduziert werden, damit die Reihenfolge passt (dritter Parameter von add_filter größer als 10)

    Gruß,
    Stefan

    PS: Den Seitenfilter bekämst du alternativ auch über das Filterplugin hin 😉

    Plugin Author Stefan Kalscheuer

    (@stklcode)

    Hallo lokonie,

    ich habe es gerade mal auf einer Seite mit gleichem Softwarestand (WP 5.8.3, Statify 1.8.3, Statify Filter 1.6.1, kein JS Tracking) ausprobiert, das hat funktioniert.

    Wie hast du die Adressen eingetragen? Der Schilderung nach würde ich 2 Zeilen mit je einer IPv4 Adresse erwarten (v6 spricht der Server nicht), also

    203.0.113.50
    198.51.100.42

    Und sind es tatsächlich die öffentlichen Adressen, über die du die Seite erreichst?
    Entweder mit einem öffentlichen Service wie https://www.whatismyip.com/ abgleichen (Public IPv4) oder, falls die Möglichkeit besteht, ein kleines Test PHP-Skript hochladen, das die Logik des Plugins direkt abbildet:

    
    <?php
    foreach(array('HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR',) as $k) {
    	if (isset($_SERVER[$k])) {
    		foreach(explode(',',$_SERVER[$k]) as $ip) {
    			if(false !== filter_var($ip, FILTER_VALIDATE_IP)) {
    				print $ip;
    				exit;
    			}
    		}
    	}
    }
    

    In der Hoffnung, dass wir dem Problem damit etwas näher kommen.

    Gruß,
    Stefan

    Forum: Plugins
    In reply to: [Statify] Crawler, Bots?
    Plugin Support Stefan Kalscheuer

    (@stklcode)

    Mit JS oder Nicht-JS hat das gar nichts zu tun. Die interne Verarbeitung ist dieselbe.

    Im Prinzip ja, allerdings schließt JS basiertes Tracking tatsächlich eine Reihe automatisierter Anfragen aus. Es gab Zeiten, da hat JS 90% und mehr aussortiert.

    Suchmaschinen und Crawler führen es aber inzwischen zunehmend aus, um dynamische Inhalte so, wie sie der Nutzer sieht, korrekt zu erfassen. Die weisen sich aber überwiegend erkennbar als “bot“ oder “crawler“ aus. Gleiches gilt für Tools zur Accessibility Analyse, o.Ä.

    Monitoring-Systeme, Link-Crawler, Webanalyzer, etc. sind etwas vielfältiger was die UserAgent Kenner angeht, falls sie nicht sogar einen echten Browser vorgaukeln. Die allermeisten führen aber weiterhin kein JS aus, da für die Anwendung nicht nötig.

    Aber das “Jein“ bleibt. Eine absolute Trefferquote gibt es mit keiner der beiden Methoden, aber man versucht es.

Viewing 15 replies - 31 through 45 (of 157 total)