Shopify nie udostępnia plików logów. Oto kompletny przewodnik techniczny, jak je uzyskać za pomocą Cloudflare (lub dowolnego Edge CDN).
Duży martwy punkt w e-commerce właśnie został rozwiązany
Od momentu uruchomienia Shopify platforma ta całkowicie uniemożliwia właścicielom sklepów dostęp do surowych logów serwera. Dostajesz lejki konwersji i raporty sprzedaży. Nie dostajesz jednak jednej rzeczy, która naprawdę mówi Ci, co trafia na Twój serwer: logu żądań HTTP.
Przez lata było to drobne niedogodność. Kogo obchodzą surowe logi, skoro masz odsłony stron i współczynniki konwersji? Google Analytics śledzi Twoich użytkowników. Platforma reklamowa śledzi Twoje kampanie. Życie jest piękne.
A potem pojawił się AI.
ChatGPT, Claude, Perplexity, Google AI Overviews, Microsoft Copilot - wszystkie wysyłają boty do Twojego sklepu właśnie teraz. Niektóre przeszukują Twoje strony, aby budować dane treningowe. Inne pobierają treści Twoich produktów w czasie rzeczywistym, aby odpowiedzieć na pytanie klienta. A najgorsze? Tradycyjne narzędzia analityczne, takie jak Google Analytics, nie widzą niczego z tego. Opierają się na JavaScript po stronie klienta, którego boty nigdy nie wykonują. Większość interakcji AI z Twoim sklepem jest dla Ciebie niewidoczna.
To nowy martwy punkt w e-commerce. Boty AI nie uruchamiają Twoich skryptów śledzących. Nie akceptują ciasteczek. Nie pojawiają się w raportach GA4. Ale absolutnie czytają Twoje strony produktów, pobierają Twoje opisy do odpowiedzi generowanych przez AI i wpływają na to, czy klienci w ogóle odkryją Twoją markę.
Pojawiają się nowe narzędzia skupione na “analityce agentów”, które pomagają właścicielom stron zrozumieć aktywność crawlerów AI i ruch poleceń generowanych przez AI poprzez śledzenie po stronie serwera, klasyfikację botów i weryfikację IP. Branża uznaje, że stary model analityki po stronie klienta jest fundamentalnie nieadekwatny w erze odkrywania treści opartego na AI. Dlatego stworzyliśmy WISLR AI Visibility Dashboard - aby dać markom jasny obraz tego, jak platformy AI wchodzą w interakcję z ich treściami, od częstotliwości crawlowania po żądania pobierania i ruch poleceń napędzany przez AI.
Ale jeśli korzystasz z Shopify, masz unikalny problem: nie kontrolujesz serwera. Nie możesz zainstalować śledzenia po stronie serwera bezpośrednio. Nie możesz przeglądać logów dostępu. Nie możesz wyszukać GPTBot za pomocą grep. Infrastruktura Shopify to czarna skrzynka i nie wykazują pilności w jej otwarciu.
Koniec z tym. Oto jak odzyskać swoje logi.
Ten przewodnik przeprowadzi Cię przez budowę własnego kompletnego pipeline’u logowania żądań dla sklepu Shopify przy użyciu Cloudflare. Każde żądanie HTTP. Pełne dane geolokalizacyjne. Metryki wydajności. A co najważniejsze, kompletne wykrywanie i klasyfikacja botów, dzięki czemu w końcu zobaczysz dokładnie, które systemy AI odwiedzają Twój sklep, jak często i które strony ich interesują.
Jak działa logowanie żądań Cloudflare dla Shopify?
Odwiedzający wysyła żądanie do Twojego sklepu Shopify
│
▼
Cloudflare CDN (Twoja domena przekierowana przez Cloudflare)
│
▼
Cloudflare Worker (uruchamiany przy każdym żądaniu)
├──→ Przekazuje żądanie do serwera źródłowego Shopify (odwiedzający otrzymuje normalną odpowiedź)
└──→ Wysyła wpis logu JSON POST do Twojego odbiornika logów (nieblokująco, przez ctx.waitUntil)
│
▼
Cloudflare Tunnel
(CNAME w Twojej domenie → tunel → localhost na Twoim serwerze)
│
▼
Odbiornik HTTP Node.js (localhost:9090)
│
▼
Pliki logów JSON zapisywane na dysku
Żadne porty nie są publicznie otwarte. Cloudflare Tunnel obsługuje bezpieczny transport z krawędzi Cloudflare do Twojego serwera przez połączenie wyłącznie wychodzące.
Czego potrzebujesz do skonfigurowania logowania żądań Shopify?
- Sklep Shopify z własną domeną przekierowaną przez Cloudflare (pomarańczowa chmurka włączona)
- Serwer do odbierania logów
- Node.js zainstalowany na serwerze
- Konto Cloudflare z włączonymi Workers
- Wrangler CLI zainstalowany (npm install -g wrangler)
- Cloudflared zainstalowany na serwerze
Krok 1: Utwórz Cloudflare Worker
Worker przechwytuje każde żądanie na Twojej domenie, przekazuje je do Shopify i asynchronicznie wysyła wpis logu do Twojego odbiornika.
1a. Źródło Worker (cloudflare-worker.js)
/**
* Shopify Request Logger
*
* Cloudflare Worker that:
* 1. Logs ALL requests to a self-hosted log receiver (via Cloudflare Tunnel)
* 2. Optionally logs detailed bot request data to a database
*/
// ============================================
// CONFIG - update these for your setup
// ============================================
const INGEST_URL = 'https://log-collector.yourdomain.com/collect'; // Your tunnel hostname
const INGEST_API_KEY = process.env.INGEST_API_KEY || ''; // Set as Worker secret
// ============================================
// BOT DETECTION PATTERNS
// ============================================
const BOT_PATTERNS = {
// AI realtime fetchers (user-triggered queries)
'ChatGPT-User': { pattern: /ChatGPT-User/i, type: 'realtime' },
'Perplexity-User': { pattern: /Perplexity-User/i, type: 'realtime' },
// Add your own patterns here for other AI bots
// Search engine crawlers
'Googlebot': { pattern: /Googlebot/i, type: 'crawler' },
'Bingbot': { pattern: /bingbot/i, type: 'crawler' },
// Social link preview bots
'FacebookBot': { pattern: /facebookexternalhit/i, type: 'preview' },
'LinkedInBot': { pattern: /LinkedInBot/i, type: 'preview' },
};
function identifyBot(userAgent) {
if (!userAgent) return { name: 'unknown', type: 'unknown' };
for (const [name, config] of Object.entries(BOT_PATTERNS)) {
if (config.pattern.test(userAgent)) return { name, type: config.type };
}
return { name: 'other', type: 'unknown' };
}
function isKnownBot(userAgent) {
if (!userAgent) return false;
return Object.values(BOT_PATTERNS).some(config => config.pattern.test(userAgent));
}
async function logToReceiver(request, env, perfData = {}) {
const url = new URL(request.url);
const cf = request.cf || {};
const bot = identifyBot(request.headers.get('user-agent') || '');
const logEntry = {
// Request basics
timestamp: new Date().toISOString(),
method: request.method,
url: request.url,
path: url.pathname,
host: url.hostname,
userAgent: request.headers.get('user-agent') || '',
ip: request.headers.get('cf-connecting-ip') || '',
referer: request.headers.get('referer') || '',
cfRay: request.headers.get('cf-ray') || '',
// Bot classification
botName: bot.name,
botType: bot.type,
// Cloudflare geo data
country: cf.country || '',
region: cf.region || '',
city: cf.city || '',
postalCode: cf.postalCode || '',
latitude: cf.latitude || '',
longitude: cf.longitude || '',
timezone: cf.timezone || '',
continent: cf.continent || '',
// Network info
asn: cf.asn || '',
asOrganization: cf.asOrganization || '',
colo: cf.colo || '',
httpProtocol: cf.httpProtocol || '',
tlsVersion: cf.tlsVersion || '',
// Client hints (helps detect headless browsers)
secChUa: request.headers.get('sec-ch-ua') || '',
secChUaMobile: request.headers.get('sec-ch-ua-mobile') || '',
secChUaPlatform: request.headers.get('sec-ch-ua-platform') || '',
// Fetch metadata (helps detect programmatic requests)
secFetchDest: request.headers.get('sec-fetch-dest') || '',
secFetchMode: request.headers.get('sec-fetch-mode') || '',
secFetchSite: request.headers.get('sec-fetch-site') || '',
// Performance metrics
edgeStartTimestamp: perfData.startTime || '',
edgeEndTimestamp: perfData.endTime || '',
edgeTimeToFirstByteMs: perfData.ttfbMs ?? '',
clientTcpRttMs: cf.clientTcpRtt ?? '',
cacheCacheStatus: perfData.cacheStatus || '',
originResponseStatus: perfData.responseStatus ?? '',
};
try {
await fetch(INGEST_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': env.INGEST_API_KEY,
},
body: JSON.stringify({ logs: [logEntry] }),
});
} catch (e) {
console.error(`Log ingest failed: ${e.message}`);
}
}
export default {
async fetch(request, env, ctx) {
const startTime = Date.now();
const url = new URL(request.url);
// Avoid infinite loop - skip logging for your ingest hostname
if (url.hostname === 'log-collector.yourdomain.com') {
return fetch(request);
}
// Fetch the origin response (Shopify)
const response = await fetch(request);
const endTime = Date.now();
// Ship log entry asynchronously (does not delay the response)
ctx.waitUntil(logToReceiver(request, env, {
startTime,
endTime,
ttfbMs: endTime - startTime,
cacheStatus: response.headers.get('cf-cache-status') || '',
responseStatus: response.status,
}));
return response;
}
};
1b. Konfiguracja Wrangler (wrangler.toml)
name = "shopify-request-logger"
main = "cloudflare-worker.js"
compatibility_date = "2024-01-01"
routes = [
{ pattern = "www.yourdomain.com/*", zone_name = "yourdomain.com" }
]
Zastąp www.yourdomain.com własną domeną Twojego sklepu Shopify.
1c. Ustaw sekrety Worker
wrangler secret put INGEST_API_KEY
# Paste your generated API key when prompted
1d. Wdrożenie
npx wrangler deploy
Krok 2: Skonfiguruj odbiornik logów na swoim serwerze
Minimalny serwer HTTP Node.js, który przyjmuje paczki logów i zapisuje je na dysku.
2a. Skrypt odbiornika (receive-logs.js)
const http = require('http');
const fs = require('fs');
const path = require('path');
const PORT = 9090;
const API_KEY = process.env.LOG_API_KEY;
const LOG_DIR = '/var/log/cdn-requests'; // Choose your log directory
if (!API_KEY) {
console.error('LOG_API_KEY environment variable is required');
process.exit(1);
}
// Ensure log directory exists
fs.mkdirSync(LOG_DIR, { recursive: true });
const server = http.createServer((req, res) => {
// Health check
if (req.method === 'GET' && req.url === '/status') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'ok' }));
return;
}
// Log ingest endpoint
if (req.method === 'POST' && req.url === '/collect') {
const apiKey = req.headers['x-api-key'];
if (apiKey !== API_KEY) {
res.writeHead(401, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'unauthorized' }));
return;
}
let body = '';
let size = 0;
const MAX_BODY = 10 * 1024 * 1024; // 10MB limit
req.on('data', chunk => {
size += chunk.length;
if (size > MAX_BODY) {
res.writeHead(413, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'payload too large' }));
req.destroy();
return;
}
body += chunk;
});
req.on('end', () => {
try {
JSON.parse(body); // Validate JSON
} catch (e) {
res.writeHead(400, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'invalid JSON' }));
return;
}
const filename = `logs-${Date.now()}-${Math.random().toString(36).slice(2, 8)}.json`;
const filepath = path.join(LOG_DIR, filename);
fs.writeFile(filepath, body, err => {
if (err) {
console.error(`Write failed: ${err.message}`);
res.writeHead(500, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'write failed' }));
return;
}
console.log(`Wrote ${filename} (${size} bytes)`);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ ok: true }));
});
});
} else {
res.writeHead(404, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'not found' }));
}
});
server.listen(PORT, '127.0.0.1', () => {
console.log(`Log receiver listening on 127.0.0.1:${PORT}`);
});
Kluczowe informacje:
- Nasłuchuje wyłącznie na
127.0.0.1- nie jest wystawiony na internet - Uwierzytelnia żądania za pomocą nagłówka
X-API-Key - Zapisuje każdą paczkę logów jako plik JSON ze znacznikiem czasu
- Limit ładunku 10MB na żądanie
2b. Usługa systemd
Utwórz /etc/systemd/system/log-receiver.service:
[Unit]
Description=Shopify request log receiver
After=network.target
[Service]
Type=simple
Environment=LOG_API_KEY=<your-generated-api-key>
ExecStart=/usr/bin/node /opt/log-receiver/receive-logs.js
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Włącz i uruchom:
systemctl daemon-reload
systemctl enable --now log-receiver
Krok 3: Skonfiguruj Cloudflare Tunnel
Tunel tworzy bezpieczne połączenie z krawędzi Cloudflare do Twojego serwera - bez otwartych portów, bez konieczności konfiguracji firewalla.
3a. Zainstaluj cloudflared
# Debian/Ubuntu
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb \
-o /tmp/cloudflared.deb
dpkg -i /tmp/cloudflared.deb
3b. Uwierzytelnianie
cloudflared tunnel login
# Opens a browser (or gives you a URL) to authorize with your Cloudflare account
To zapisuje plik cert.pem w katalogu ~/.cloudflared/.
3c. Utwórz tunel
cloudflared tunnel create shopify-log-collector
To generuje Tunnel ID (UUID) i tworzy plik JSON z poświadczeniami w ~/.cloudflared/.
3d. Skonfiguruj tunel
Utwórz ~/.cloudflared/config.yml:
tunnel: <YOUR-TUNNEL-ID>
credentials-file: /root/.cloudflared/<YOUR-TUNNEL-ID>.json
ingress:
- hostname: log-collector.yourdomain.com
service: http://localhost:9090
- service: http_status:404
hostname: Subdomena, na którą Worker będzie wysyłał logi metodą POSTservice: Kieruje ruch do Twojego odbiornika Node.js na localhost:9090- Reguła domyślna: Zwraca 404 dla każdej innej nazwy hosta (wymagane przez cloudflared)
3e. Utwórz rekord DNS
cloudflared tunnel route dns shopify-log-collector log-collector.yourdomain.com
To tworzy rekord CNAME w DNS Cloudflare:
log-collector.yourdomain.com → <TUNNEL-ID>.cfargotunnel.com
Rekord jest przekierowany przez Cloudflare (pomarańczowa chmurka) - identyfikator tunelu w CNAME nie ma publicznego znaczenia.
3f. Zainstaluj jako usługę systemową
cloudflared service install
systemctl enable --now cloudflared
To kopiuje Twoją konfigurację do /etc/cloudflared/config.yml i tworzy jednostkę systemd.
Zweryfikuj tunel
systemctl status cloudflared
# Should show: active (running)
curl https://log-collector.yourdomain.com/status
# Should return: {"status":"ok"}
Krok 4: Wygeneruj klucz API
Wygeneruj losowy klucz API współdzielony między Worker a odbiornikiem:
openssl rand -hex 32
Ustaw tę wartość:
- Jako sekret Worker za pomocą
wrangler secret put INGEST_API_KEY - W linii Environment usługi systemd odbiornika (LOG_API_KEY=…)
Krok 5: Zweryfikuj działanie end-to-end
- Odwiedź swój sklep Shopify w przeglądarce
- Sprawdź logi odbiornika:
journalctl -u log-receiver -f
# Should show: Wrote logs-1234567890-abc123.json (1234 bytes)
- Sprawdź plik logu:
cat /var/log/cdn-requests/logs-*.json | head -1 | python3 -m json.tool
Powinieneś zobaczyć pełny wpis logu ze szczegółami żądania, danymi geolokalizacyjnymi i metrykami wydajności.
Przykładowy wpis logu
{
"logs": [{
"timestamp": "2026-03-04T15:19:55.584Z",
"method": "GET",
"url": "https://www.yourdomain.com/products/example",
"path": "/products/example",
"host": "www.yourdomain.com",
"userAgent": "Mozilla/5.0 ...",
"ip": "198.51.100.23",
"country": "US",
"city": "Seattle",
"asn": 16509,
"asOrganization": "Amazon.com",
"colo": "SEA",
"edgeTimeToFirstByteMs": 109,
"originResponseStatus": 200,
"cacheCacheStatus": "HIT",
"botName": "other",
"botType": "unknown"
}]
}
Jak działa pełny pipeline logowania Shopify?
| Komponent | Co robi | Gdzie działa |
|---|---|---|
| Cloudflare Worker | Przechwytuje każde żądanie, przekazuje do Shopify, wysyła wpis logu | Krawędź Cloudflare (wdrożony przez Wrangler) |
| Cloudflare Tunnel | Bezpiecznie łączy krawędź Cloudflare z Twoim serwerem (bez otwartych portów) | Demon cloudflared na Twoim serwerze |
| DNS CNAME | log-collector.yourdomain.com do <tunnel-id>.cfargotunnel.com |
DNS Cloudflare dla Twojej strefy |
| Odbiornik Node.js | Przyjmuje logi JSON przez POST, uwierzytelnia kluczem API, zapisuje na dysku | Twój serwer, nasłuchujący na localhost:9090 |
Przepływ danych
1. Odwiedzający otwiera https://www.yourdomain.com/products/something
2. Cloudflare kieruje ruch przez Worker
3. Worker pobiera odpowiedź ze źródła Shopify → zwraca ją odwiedzającemu
4. Worker wysyła POST { logs: [entry] } do https://log-collector.yourdomain.com/collect
(nieblokująco - odwiedzający na to nie czeka)
5. Cloudflare rozwiązuje log-collector.yourdomain.com przez CNAME tunelu
6. Tunel przekazuje żądanie na localhost:9090 na Twoim serwerze
7. Odbiornik weryfikuje X-API-Key, zapisuje plik JSON na dysku
Jakie dane żądań Shopify możesz rejestrować, których Shopify Ci nie pokaże?
Panel administracyjny Shopify pokazuje odsłony stron, zamówienia i źródła poleceń. Nie pokazuje, które boty AI odwiedziły sklep, jakie strony pobrały, skąd pochodziły ani jak szybko serwer odpowiedział. Ta konfiguracja rejestruje ponad 40 pól na żądanie w następujących kategoriach:
| Kategoria | Pola |
|---|---|
| Żądanie | timestamp, method, url, path, host, userAgent, ip, referer |
| Wykrywanie botów | botName, botType (realtime / crawler / preview / unknown) |
| Geolokalizacja Cloudflare | country, region, city, postalCode, latitude, longitude, timezone, continent |
| Sieć | asn, asOrganization, colo, httpProtocol, tlsVersion |
| Client Hints | sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform |
| Metadane Fetch | sec-fetch-dest, sec-fetch-mode, sec-fetch-site |
| Wydajność | edgeTimeToFirstByteMs, clientTcpRttMs, cacheCacheStatus, originResponseStatus |
Client Hints i Fetch Metadata są szczególnie przydatne do identyfikowania przeglądarek bezgłowych i nieoznakowanych botów - prawdziwe przeglądarki wysyłają te nagłówki, większość botów nie.
Które boty AI odwiedzają Twój sklep Shopify?
Shopify nie rozróżnia między ludzkimi odwiedzającymi a crawlerami AI. Ten Worker klasyfikuje każdy User-Agent w dwie kategorie istotne dla widoczności AI:
| Typ | Opis | Przykłady |
|---|---|---|
realtime |
Asystenci AI pobierający strony w odpowiedzi na zapytania użytkowników | ChatGPT-User, Claude-Web, Perplexity-User |
crawler |
Boty indeksujące treści do wyszukiwania lub trenowania AI | GPTBot, Googlebot, ClaudeBot, Bingbot |
Żądania z nierozpoznanych User-Agentów są oznaczane jako other / unknown - możesz je analizować później, aby znaleźć nieoznakowane crawlery. To dane, których Shopify, Google Analytics i większość platform analitycznych SaaS po prostu nie dostarcza.
Jak przechowywać dane botów Shopify w bazie danych do głębszej analizy
Aby uzyskać głębszą analitykę botów, możesz rozszerzyć Worker o logowanie żądań botów do Supabase (lub dowolnej bazy danych) oprócz zapisu na dysku. Dodaj następujące sekrety Worker:
wrangler secret put SUPABASE_URL
wrangler secret put SUPABASE_SERVICE_KEY
Następnie dodaj funkcję logToDatabase(), która wysyła POST do REST API Twojej bazy danych, wywoływaną przez ctx.waitUntil() dla rozpoznanych żądań botów. To daje Ci ustrukturyzowane, możliwe do odpytywania dane o botach obok surowych plików logów.
Jak skonfigurować DNS Cloudflare dla sklepu Shopify z logowaniem żądań
Aby ta konfiguracja działała, Twoja domena musi być przekierowana przez Cloudflare (pomarańczowa chmurka). Typowa konfiguracja DNS Shopify + Cloudflare:
| Typ | Nazwa | Cel | Proxy |
|---|---|---|---|
| CNAME | www |
shops.myshopify.com |
Proxied (pomarańczowa) |
| CNAME | log-collector |
<tunnel-id>.cfargotunnel.com |
Proxied (pomarańczowa) |
CNAME www wskazuje na Shopify - Cloudflare pośredniczy i buforuje. CNAME log-collector wskazuje na Twój tunel - Cloudflare bezpiecznie kieruje ruch logów do Twojego serwera.
Ważne: Trasa Worker musi odpowiadać proxowanej nazwie hosta (np.
www.yourdomain.com/*). Nie uruchomi się na rekordach bez proxy (szara chmurka).
Jak monitorować i utrzymywać pipeline logów Shopify
# Check receiver status
systemctl status log-receiver
# Check tunnel status
systemctl status cloudflared
# Tail live logs
journalctl -u log-receiver -f
# Count stored log files
ls /var/log/cdn-requests/*.json | wc -l
# Check disk usage
du -sh /var/log/cdn-requests/
Rozważ dodanie zadania cron do monitorowania użycia dysku i alertowania, gdy przestrzeń dyskowa zbliża się do limitu.
Najczęściej zadawane pytania
Dlaczego właściciele sklepów Shopify nie mają dostępu do logów serwera?
Shopify to w pełni zarządzana platforma SaaS. Właściciele sklepów nie mają dostępu do podstawowej infrastruktury serwera, co oznacza brak dostępu do surowych logów żądań HTTP, logów dostępu ani logów błędów. Shopify udostępnia własny panel analityczny z odsłonami stron, zamówieniami i danymi o poleceniach, ale nie obejmuje to poszczególnych żądań HTTP, user agentów botów, czasów odpowiedzi ani danych geolokalizacyjnych na poziomie żądania. Żaden plan Shopify, w tym Shopify Plus, nie zapewnia dostępu do surowych logów serwera. Jedynym sposobem na uzyskanie tych danych jest przechwycenie żądań na warstwie CDN, zanim dotrą one do serwerów źródłowych Shopify.
Jak śledzić ruch botów AI w sklepie Shopify?
Ruchu botów AI nie da się śledzić za pomocą Google Analytics, Shopify Analytics ani żadnego narzędzia analitycznego JavaScript po stronie klienta, ponieważ boty AI nie wykonują JavaScript. Jedyną niezawodną metodą jest logowanie żądań po stronie serwera. W przypadku sklepów Shopify oznacza to przechwytywanie żądań na warstwie CDN za pomocą Cloudflare Worker (lub równoważnej funkcji edge na innym CDN). Worker loguje każde przychodzące żądanie, w tym nagłówek User-Agent, który identyfikuje konkretne boty AI, takie jak ChatGPT-User, GPTBot, ClaudeBot, PerplexityBot i inne. Jest to takie samo podejście, jakie stosują powstające platformy “analityki agentów”, ale hostowane samodzielnie i w pełni pod Twoją kontrolą.
Jakie boty AI przeszukują sklepy Shopify w tej chwili?
Według stanu na 2026 rok, główne boty AI odwiedzające sklepy Shopify dzielą się na dwie kategorie. Boty pobierające w czasie rzeczywistym (ChatGPT-User, Claude-User, Perplexity-User) pobierają treści na żądanie podczas rozmów z użytkownikami na żywo. Crawlery treningowe (GPTBot, ClaudeBot, PerplexityBot, Bytespider, Amazonbot, Applebot) zbierają treści według harmonogramu do trenowania modeli i budowania indeksów. Bez logowania po stronie serwera żadne z nich nie pojawiają się w analityce Shopify ani Google Analytics.
Ile pól danych Cloudflare rejestruje na żądanie?
Ta konfiguracja rejestruje ponad 40 pól na żądanie, w tym podstawowe dane żądania (timestamp, method, URL, path, user agent, IP, referer), klasyfikację botów (nazwa i typ bota), dane geolokalizacyjne Cloudflare (country, region, city, postal code, latitude, longitude, timezone, continent), informacje o sieci (ASN, organization, data center, HTTP protocol, TLS version), Client Hints (nagłówki sec-ch-ua pomagające wykrywać przeglądarki bezgłowe), metadane Fetch (nagłówki sec-fetch identyfikujące żądania programistyczne) oraz metryki wydajności (time to first byte, TCP round trip time, cache status, origin response status).
Jak to się ma do wbudowanej analityki Shopify?
Panel analityczny Shopify pokazuje odsłony stron, sesje, współczynniki konwersji i źródła poleceń. Nie pokazuje poszczególnych żądań HTTP, user agentów botów, danych geograficznych na poziomie żądania, metryk wydajności odpowiedzi ani żadnej aktywności botów AI. Google Analytics, z którym Shopify się integruje, ma to samo ograniczenie, ponieważ opiera się na JavaScript po stronie klienta. Ta konfiguracja logowania oparta na Cloudflare rejestruje każde żądanie trafiające na Twoją domenę, w tym te od botów, które nigdy nie wykonują JavaScript, dając Ci pełny obraz, którego narzędzia Shopify nie są w stanie zapewnić.
Czy można użyć tej konfiguracji z innym CDN niż Cloudflare?
Architektura ma zastosowanie do dowolnego edge CDN, który obsługuje funkcje edge i bezpieczne tunelowanie. Cloudflare Workers mają odpowiedniki na innych platformach: Vercel Edge Functions, AWS CloudFront Functions, Fastly Compute i Akamai EdgeWorkers - wszystkie mogą przechwytywać żądania i wysyłać dane logów. Komponent tunelu można zastąpić dowolną metodą bezpiecznego połączenia (tunel SSH, VPN, bezpośredni endpoint HTTPS z listą dozwolonych adresów IP). Podstawowy wzorzec jest taki sam: przechwytuj na krawędzi, loguj asynchronicznie, wysyłaj do własnego odbiornika.