Unterstützung/Proxy-Anleitungen
Proxy-Anleitungen

Flowsery Analytics mit PHP proxyen

Leiten Sie Flowsery Analytics über Ihren PHP-Server weiter, um Störungen durch Adblocker zu vermeiden und genauere Besucherdaten zu erfassen.

1. Proxy-Endpunkte erstellen

Richten Sie zwei PHP-Dateien ein, die geproxte Requests verarbeiten:

script.php

PHP
<?php
header('Content-Type: application/javascript');
header('Cache-Control: public, max-age=31536000');
 
$ch = curl_init('https://cdn.flowsery.com/main.js');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$script = curl_exec($ch);
curl_close($ch);
 
echo $script;
PHP
<?php
header('Content-Type: application/json');
 
// Resolve the real visitor IP
function getClientIp() {
    if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        return $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
        return $_SERVER['HTTP_X_REAL_IP'];
    }
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        return trim($ips[0]);
    }
    return $_SERVER['REMOTE_ADDR'] ?? '';
}
 
// Determine the origin from request headers or build it from server variables
$origin = $_SERVER['HTTP_ORIGIN'] ??
    ($_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'];
 
$clientIp = getClientIp();
 
$requestHeaders = [
    'Content-Type: application/json',
    'User-Agent: ' . $_SERVER['HTTP_USER_AGENT'],
    'Origin: ' . $origin,
    'x-forwarded-for: ' . $clientIp,
];
 
if (!empty($clientIp)) {
    // CRITICAL: Flowsery reads this as the authoritative visitor IP. Without it, every visitor resolves to your server's region.
    $requestHeaders[] = 'x-flowsery-real-ip: ' . $clientIp;
}
 
$ch = curl_init('https://analytics.flowsery.com/analytics/events');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('php://input'));
curl_setopt($ch, CURLOPT_HTTPHEADER, $requestHeaders);
$response = curl_exec($ch);
curl_close($ch);
 
echo $response;

Hinweis: Wenn Ihre Anwendung bereits einen Endpunkt /api/track hat, verwenden Sie das Attribut data-api im Flowsery-Analytics-Skript, um Events an einen anderen Pfad zu senden. Zum Beispiel leitet data-api="/flowsery-events" Daten stattdessen an /flowsery-events.

Wichtig: Wenn im Dashboard jeder Besucher aus demselben Ort zu kommen scheint, prüfen Sie, ob x-flowsery-real-ip beim Weiterleiten an den Flowsery-Analytics-Endpunkt /events auf die echte Besucher-IP gesetzt wird und nicht auf die IP des Proxy-Servers.

2. Webserver-Routing einrichten

Apache (.htaccess)

APACHE
RewriteEngine On
RewriteRule ^js/script\.js$ script.php [L]
RewriteRule ^api/events$ events.php [L]
Nginx
location /js/main.js {
    try_files $uri $uri/ /script.php?$query_string;
}
 
location /api/track {
    try_files $uri $uri/ /events.php?$query_string;
}

3. Skript-Tag anpassen

Ersetzen Sie das ursprüngliche Flowsery-Analytics-Snippet durch die geproxyte Variante:

HTML
<script defer data-fl-website-id="flid_******" src="/js/main.js"></script>

4. Deploy

Nach dem Deploy Ihrer Änderungen wird die Proxy-Konfiguration automatisch aktiv.

Prüfen, ob es funktioniert

So validieren Sie das Proxy-Setup:

  1. Öffnen Sie Ihre Website.
  2. Öffnen Sie die Entwicklerwerkzeuge Ihres Browsers und wechseln Sie zum Tab "Network".
  3. Prüfen Sie, ob Analytics-Requests über Ihre Domain statt über analytics.flowsery.com ausgeliefert werden.

Fehlerbehebung

Jeder Besucher scheint aus demselben Ort zu kommen

Wenn alle Besucher aus einer einzigen geografischen Region erscheinen (typischerweise aus der Region Ihres Servers), leitet der Proxy die echte Besucher-IP nicht korrekt weiter.

Lösung:

  1. Stellen Sie sicher, dass Ihr Proxy den Header x-flowsery-real-ip mit der tatsächlichen Besucher-IP enthält und nicht mit der Server-IP, wenn Requests an den Flowsery-Analytics-Endpunkt /events weitergeleitet werden.
  2. Wenn PHP hinter einem weiteren Proxy läuft (Cloudflare, Vercel usw.), ist $_SERVER['REMOTE_ADDR'] die IP dieses Upstream-Proxys - lesen Sie stattdessen direkt $_SERVER['HTTP_CF_CONNECTING_IP'] oder $_SERVER['HTTP_X_REAL_IP'].