Shopify Size Log Dosyasi Vermiyor. Cloudflare (veya Herhangi Bir Edge CDN) ile Bunlari Elde Etmenin Eksiksiz Teknik Rehberi.
E-Ticaretteki Buyuk Bir Kor Nokta Artik Cozuldu
Shopify kuruldugu gundan bu yana, ham sunucu loglarini magaza sahiplerinin erisiminden tamamen uzak tuttu. Donusum hunileri ve satis raporlari aliyorsunuz. Alamadiginiz sey ise sunucunuza neyin ulastigini gercekten gosteren tek sey: HTTP istek logu.
Yillarca bu kucuk bir rahatsizlikti. Sayfa goruntulemeleriniz ve donusum oranlariniz varken kim ham loglarla ilgilenir ki? Google Analytics insanlarinizi takip ediyor. Reklam platformunuz kampanyalarinizi takip ediyor. Her sey yolunda.
Sonra yapay zeka geldi.
ChatGPT, Claude, Perplexity, Google AI Overviews, Microsoft Copilot - hepsi su anda magazaniza bot gonderiyor. Bazilari egitim verisi olusturmak icin sayfalarinizi tariyorlar. Digerleri bir musterinin sorusunu yanitlamak icin urun icerigizi gercek zamanli olarak cekiyor. Ve isler asil burada cilginlasiyor: Google Analytics gibi geleneksel analitik araclari bunlarin hicbirini goremiyor. Istemci tarafli JavaScript’e bagimlilar ve botlar bunu hicbir zaman calistirmaz. Magazanizla olan yapay zeka etkilesiminin buyuk cogunlugu sizin icin gorunmez.
Bu, e-ticaretin yeni kor noktasi. Yapay zeka botlari takip betiklerinizi calistirmaz. Cerezleri kabul etmez. GA4 raporlarinizda gorunmezler. Ama urun sayfalarinizi kesinlikle okuyorlar, aciklamalarinizi yapay zeka tarafindan olusturulan yanitlara cekiyorlar ve musterilerin markanizi kesfedip kesfetmeyecegini sekillendiriyorlar.
“Ajan analitigi"ne odaklanan yeni araclar, sunucu tarafli takip, bot siniflandirmasi ve IP dogrulama yoluyla site sahiplerinin yapay zeka tarayici aktivitesini ve yapay zeka tarafindan olusturulan yonlendirmeleri anlamasina yardimci olmak icin ortaya cikiyor. Sektor, eski istemci tarafli analitik modelinin yapay zeka oncelikli icerik kesfi cagi icin temelden bozuk oldugunu kabul ediyor. WISLR AI Visibility Dashboard aracini tam da bu yuzden olusturduk - markalara yapay zeka platformlarinin icerikleriyle nasil etkilesime girdiginin net bir resmini vermek icin, tarama oranlarindan getirme isteklerine ve yapay zeka kaynakli yonlendirme trafigine kadar.
Ancak Shopify’daysaniz, benzersiz bir sorununuz var: sunucuyu siz kontrol etmiyorsunuz. Dogrudan sunucu tarafli takip kuramazsiniz. Erisim loglarinizi izleyemezsiniz. GPTBot’u arayamazsiniz. Shopify’in altyapisi bir kara kutu ve bunu acmak icin herhangi bir aciliyet gostermiyorlar.
Artik oyle degil. Loglarinizi geri almanin yolu burada.
Bu rehber, Cloudflare kullanarak bir Shopify magazasi icin kendi tam istek loglama boru hattinizi olusturma surecinde size yol gosteriyor. Her HTTP istegi. Tam konum verileri. Performans metrikleri. Ve en onemlisi, eksiksiz bot algilama ve siniflandirma - boylece magazanizi tam olarak hangi yapay zeka sistemlerinin ziyaret ettigini, ne siklikla geldigini ve hangi sayfalari onemsedigini nihayet gorebilirsiniz.
Cloudflare Istek Loglamasi Shopify Icin Nasil Calisiyor?
Visitor requests your Shopify store
│
▼
Cloudflare CDN (your domain proxied through Cloudflare)
│
▼
Cloudflare Worker (runs on every request)
├──→ Passes request through to Shopify origin (visitor gets normal response)
└──→ POSTs a JSON log entry to your log receiver (non-blocking, via ctx.waitUntil)
│
▼
Cloudflare Tunnel
(CNAME on your domain → tunnel → localhost on your server)
│
▼
Node.js HTTP Receiver (localhost:9090)
│
▼
JSON log files written to disk
Herkese acik hicbir port acilmaz. Cloudflare Tunnel, Cloudflare’in ucundan sunucunuza yalnizca giden baglanti uzerinden guvenli tasimayi saglar.
Shopify Istek Loglamasini Kurmak Icin Neye Ihtiyaciniz Var?
- Cloudflare uzerinden proxy edilen ozel alan adina sahip bir Shopify magazasi (turuncu bulut etkin)
- Loglari almak icin bir sunucu
- Sunucuda kurulu Node.js
- Workers etkinlestirilmis bir Cloudflare hesabi
- Kurulu Wrangler CLI (npm install -g wrangler)
- Sunucuda kurulu cloudflared
Adim 1: Cloudflare Worker’i Olusturun
Worker, alan adinizdaki her istegi yakalar, Shopify’a proxy eder ve asenkron olarak alicisiniza bir log girisi gonderir.
1a. Worker Kaynak Kodu (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. Wrangler Yapilandirmasi (wrangler.toml)
name = "shopify-request-logger"
main = "cloudflare-worker.js"
compatibility_date = "2024-01-01"
routes = [
{ pattern = "www.yourdomain.com/*", zone_name = "yourdomain.com" }
]
www.yourdomain.com kismini Shopify magazanizin ozel alan adiyla degistirin.
1c. Worker Gizli Anahtarlarini Ayarlayin
wrangler secret put INGEST_API_KEY
# Paste your generated API key when prompted
1d. Dagitim
npx wrangler deploy
Adim 2: Sunucunuzda Log Alicisini Kurun
Log gruplarini kabul eden ve diske yazan minimal bir Node.js HTTP sunucusu.
2a. Alici Betigi (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}`);
});
Onemli noktalar:
- Yalnizca
127.0.0.1’e baglanir - internete acik degildir - Istekleri
X-API-Keybasligi ile dogrular - Her log grubunu zaman damgali bir JSON dosyasi olarak yazar
- Istek basina 10MB yuk siniri
2b. systemd Servisi
/etc/systemd/system/log-receiver.service dosyasini olusturun:
[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
Etkinlestirin ve baslatin:
systemctl daemon-reload
systemctl enable --now log-receiver
Adim 3: Cloudflare Tunnel’i Kurun
Tunnel, Cloudflare’in ucundan sunucunuza guvenli bir baglanti olusturur - acik port yok, guvenlik duvari kurali gerekmiyor.
3a. cloudflared’i Kurun
# 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. Kimlik Dogrulama
cloudflared tunnel login
# Opens a browser (or gives you a URL) to authorize with your Cloudflare account
Bu, ~/.cloudflared/ dizinine bir cert.pem kaydeder.
3c. Tunnel’i Olusturun
cloudflared tunnel create shopify-log-collector
Bu, bir Tunnel ID (bir UUID) cikarir ve ~/.cloudflared/ dizininde bir kimlik bilgileri JSON dosyasi olusturur.
3d. Tunnel’i Yapilandirin
~/.cloudflared/config.yml dosyasini olusturun:
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: Worker’in loglari POST edecegi alt alan adiservice: localhost:9090’daki Node.js aliciniza yonlendirir- Yakalama kurali: Diger herhangi bir ana bilgisayar adi icin 404 dondurur (cloudflared tarafindan gereklidir)
3e. DNS Kaydini Olusturun
cloudflared tunnel route dns shopify-log-collector log-collector.yourdomain.com
Bu, Cloudflare DNS’inizde bir CNAME kaydi olusturur:
log-collector.yourdomain.com → <TUNNEL-ID>.cfargotunnel.com
Kayit, Cloudflare uzerinden proxy edilir (turuncu bulut) - CNAME’deki tunnel ID kamuya acik bir anlam tasimaz.
3f. Sistem Servisi Olarak Kurun
cloudflared service install
systemctl enable --now cloudflared
Bu, yapilandirmanizi /etc/cloudflared/config.yml dizinine kopyalar ve bir systemd birimi olusturur.
Tunnel’i Dogrulayin
systemctl status cloudflared
# Should show: active (running)
curl https://log-collector.yourdomain.com/status
# Should return: {"status":"ok"}
Adim 4: API Anahtarinizi Olusturun
Worker ve alici arasinda paylasilan rastgele bir API anahtari olusturun:
openssl rand -hex 32
Bu degeri ayarlayin:
wrangler secret put INGEST_API_KEYile bir Worker gizli anahtari olarak- Alicinin systemd Environment satirinda (LOG_API_KEY=…)
Adim 5: Uctan Uca Dogrulayin
- Shopify magazanizi bir tarayicida ziyaret edin
- Alici loglarini kontrol edin:
journalctl -u log-receiver -f
# Should show: Wrote logs-1234567890-abc123.json (1234 bytes)
- Bir log dosyasini inceleyin:
cat /var/log/cdn-requests/logs-*.json | head -1 | python3 -m json.tool
Istek ayrintilari, konum verileri ve performans metrikleri iceren tam bir log girisi gormelisiniz.
Ornek Log Girisi
{
"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"
}]
}
Tam Shopify Loglama Boru Hatti Nasil Calisiyor?
| Bilesen | Ne yapar | Nerede calisir |
|---|---|---|
| Cloudflare Worker | Her istegi yakalar, Shopify’a proxy eder, bir log girisi gonderir | Cloudflare ucu (Wrangler ile dagitilir) |
| Cloudflare Tunnel | Cloudflare ucunu sunucunuza guvenli bir sekilde baglar (acik port yok) | Sunucunuzdaki cloudflared daemon’u |
| DNS CNAME | log-collector.yourdomain.com ile <tunnel-id>.cfargotunnel.com arasinda |
Bolgeniz icin Cloudflare DNS |
| Node.js Alicisi | JSON log POST’larini kabul eder, API anahtari ile dogrular, diske yazar | Sunucunuz, localhost:9090’a bagli |
Veri Akisi
1. Visitor hits https://www.yourdomain.com/products/something
2. Cloudflare routes through the Worker
3. Worker fetches origin response from Shopify → returns it to visitor
4. Worker POSTs { logs: [entry] } to https://log-collector.yourdomain.com/collect
(non-blocking - visitor doesn't wait for this)
5. Cloudflare resolves log-collector.yourdomain.com via tunnel CNAME
6. Tunnel forwards request to localhost:9090 on your server
7. Receiver validates X-API-Key, writes JSON file to disk
Shopify’in Size Gostermedigi Hangi Istek Verilerini Yakalayabilirsiniz?
Shopify yonetim paneli size sayfa goruntulemelerini, siparisleri ve yonlendirme kaynaklarini gosterir. Hangi yapay zeka botlarinin ziyaret ettigini, hangi sayfalari cektigini, nereden geldiklerini veya sunucunuzun ne kadar hizli yanitladigini gostermez. Bu kurulum, su kategorilerde istek basina 40’tan fazla alan yakalar:
| Kategori | Alanlar |
|---|---|
| Istek | timestamp, method, url, path, host, userAgent, ip, referer |
| Bot Algilama | botName, botType (realtime / crawler / preview / unknown) |
| Cloudflare Konum Verileri | country, region, city, postalCode, latitude, longitude, timezone, continent |
| Ag | asn, asOrganization, colo, httpProtocol, tlsVersion |
| Client Hints | sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform |
| Fetch Metadata | sec-fetch-dest, sec-fetch-mode, sec-fetch-site |
| Performans | edgeTimeToFirstByteMs, clientTcpRttMs, cacheCacheStatus, originResponseStatus |
Client Hints ve Fetch Metadata ozellikle basliksiz tarayicilari ve imzasiz botlari tanimlamak icin cok kullanislidir - gercek tarayicilar bu basliklari gonderir, cogu bot gondermez.
Shopify Magazanizi Hangi Yapay Zeka Botlari Ziyaret Ediyor?
Shopify, insan ziyaretciler ve yapay zeka tarayicilari arasinda ayrimi yapmaz. Bu Worker, her User-Agent’i yapay zeka gorunurlugu icin onemli olan iki kategoriye siniflandirir:
| Tur | Aciklama | Ornekler |
|---|---|---|
realtime |
Kullanici sorgularina yanit olarak sayfalari getiren yapay zeka asistanlari | ChatGPT-User, Claude-Web, Perplexity-User |
crawler |
Arama veya yapay zeka egitimi icin icerik dizinleyen botlar | GPTBot, Googlebot, ClaudeBot, Bingbot |
Taninmayan User-Agent’lardan gelen istekler other / unknown olarak etiketlenir - imzasiz tarayicilari bulmak icin bunlari daha sonra analiz edebilirsiniz. Bu, Shopify, Google Analytics ve cogu SaaS analitik platformunun saglamadigi verilerdir.
Daha Derin Analiz Icin Shopify Bot Verilerini Veritabaninda Nasil Saklarsiniz
Daha derin bot analitigi icin, Worker’i diske ek olarak Supabase’e (veya herhangi bir veritabanina) bot isteklerini loglayacak sekilde genisletebilirsiniz. Su Worker gizli anahtarlarini ekleyin:
wrangler secret put SUPABASE_URL
wrangler secret put SUPABASE_SERVICE_KEY
Ardindan, veritabaninizin REST API’sine POST yapan ve bilinen bot istekleri icin ctx.waitUntil() araciligiyla cagrilan bir logToDatabase() fonksiyonu ekleyin. Bu, ham log dosyalarinin yaninda yapilandirilmis, sorgulanabilir bot verileri saglar.
Istek Loglamali Bir Shopify Magazasi Icin Cloudflare DNS Nasil Yapilandirilir
Bu kurulumun calismasi icin alan adinizin Cloudflare uzerinden proxy edilmis olmasi gerekir (turuncu bulut). Tipik bir Shopify + Cloudflare DNS kurulumu:
| Tur | Ad | Hedef | Proxy |
|---|---|---|---|
| CNAME | www |
shops.myshopify.com |
Proxy edilmis (turuncu) |
| CNAME | log-collector |
<tunnel-id>.cfargotunnel.com |
Proxy edilmis (turuncu) |
www CNAME kaydi Shopify’a isaret eder - Cloudflare proxy eder ve onbellege alir. log-collector CNAME kaydi tunnel’inize isaret eder - Cloudflare log trafigini guvenli bir sekilde sunucunuza yonlendirir.
Onemli: Worker rotasi, proxy edilen ana bilgisayar adiyla eslesmelidir (ornegin
www.yourdomain.com/*). Proxy edilmemis (gri bulut) kayitlarda tetiklenmez.
Shopify Log Boru Hattinizi Nasil Izler ve Bakimini Yaparsaniz
# 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/
Disk kullanimini izlemek ve depolama sinirininiza yaklastiginda uyari vermek icin bir cron gorevi eklemeyi dusunun.
Sikca Sorulan Sorular
Shopify magaza sahipleri neden sunucu loglarina erisemiyor?
Shopify tamamen yonetilen bir SaaS platformudur. Magaza sahipleri, altta yatan sunucu altyapisina erisime sahip degildir, bu da ham HTTP istek loglar, erisim loglari veya hata loglarini erisilmez kilar. Shopify, sayfa goruntulemelerini, siparisleri ve yonlendirme verilerini iceren kendi analitik kontrol panelini saglar, ancak buna bireysel HTTP istekleri, bot kullanici ajanlari, yanit sureleri veya istek duzeyinde konum verileri dahil degildir. Shopify Plus dahil hicbir Shopify plani ham sunucu log erisimi saglamaz. Bu verileri yakalamanin tek yolu, istekleri Shopify’in kaynak sunucularina ulasmadan once CDN katmaninda yakalamaktir.
Bir Shopify magazasinda yapay zeka bot trafigi nasil takip edilir?
Yapay zeka bot trafigi, Google Analytics, Shopify Analytics veya herhangi bir istemci tarafli JavaScript analitik araci araciligiyla takip edilemez cunku yapay zeka botlari JavaScript calistirmaz. Tek guvenilir yontem sunucu tarafli istek loglamasidir. Shopify magazalari icin bu, Cloudflare Worker (veya baska bir CDN’deki esdeger uc fonksiyonu) kullanarak CDN katmaninda istekleri yakalamak anlamina gelir. Worker, ChatGPT-User, GPTBot, ClaudeBot, PerplexityBot ve digerleri gibi belirli yapay zeka botlarini tanimlayan User-Agent basligi dahil her gelen istegi loglar. Bu, ortaya cikan “ajan analitigi” platformlari tarafindan kullanilan yaklasimin aynisidir, ancak kendi barindirdiginiz ve tamamen kontrolunuz altinda olan bir versiyonu.
Su anda Shopify magazalarini hangi yapay zeka botlari tariyor?
2026 itibariyle, Shopify magazalarina ulasan baslica yapay zeka botlari iki kategoriye ayrilir. Gercek zamanli getirme botlari (ChatGPT-User, Claude-User, Perplexity-User) canli kullanici konusmalari sirasinda talep uzerine icerik getirir. Egitim tarayicilari (GPTBot, ClaudeBot, PerplexityBot, Bytespider, Amazonbot, Applebot) model egitimi ve dizin olusturma icin programli olarak icerik toplar. Sunucu tarafli loglama olmadan bunlarin hicbiri Shopify analitiginde veya Google Analytics’te gorunmez.
Cloudflare istek basina kac veri alani logluyor?
Bu kurulum istek basina 40’tan fazla alan yakalar: istek temelleri (zaman damgasi, yontem, URL, yol, kullanici ajani, IP, yonlendiren), bot siniflandirmasi (bot adi ve turu), Cloudflare konum verileri (ulke, bolge, sehir, posta kodu, enlem, boylam, saat dilimi, kita), ag bilgileri (ASN, kurulis, veri merkezi, HTTP protokolu, TLS surumu), istemci ipuclari (basliksiz tarayicilari tespit etmeye yardimci olan sec-ch-ua basliklari), getirme meta verileri (programatik istekleri tanimlayan sec-fetch basliklari) ve performans metrikleri (ilk bayta kadar gecen sure, TCP gidis-donus suresi, onbellek durumu, kaynak yanit durumu).
Bu, Shopify’in yerlesik analitigiyle nasil karsilastirilir?
Shopify’in analitik kontrol paneli sayfa goruntulemelerini, oturumlari, donusum oranlarini ve yonlendirme kaynaklarini gosterir. Bireysel HTTP isteklerini, bot kullanici ajanlarini, istek duzeyinde cografik verileri, yanit performans metriklerini veya herhangi bir yapay zeka bot aktivitesini gostermez. Shopify’in entegre ettigi Google Analytics, istemci tarafli JavaScript’e bagli oldugu icin ayni sinirlamaya sahiptir. Bu Cloudflare tabanli loglama kurulumu, JavaScript calistirmayan botlardan gelenler de dahil olmak uzere alan adiniza ulasan her istegi yakalar ve Shopify’in araclarinin saglayamadigi eksiksiz bir resim sunar.
Bu kurulumu Cloudflare disinda bir CDN ile kullanabilir misiniz?
Mimari, uc fonksiyonlari ve guvenli tunelleme destekleyen herhangi bir edge CDN’e uygulanabilir. Cloudflare Workers’in diger platformlarda esdegerleri vardir: Vercel Edge Functions, AWS CloudFront Functions, Fastly Compute ve Akamai EdgeWorkers hepsi istekleri yakalayabilir ve log verilerini gonderebilir. Tunnel bileseni, herhangi bir guvenli baglanti yontemiyle degistirilebilir (SSH tunnel, VPN, IP izin listeli dogrudan HTTPS ucu). Temel kalip aynidir: ucta yakala, asenkron olarak logla, kendi aliciniza gonder.