Shopify Tidak Memberikan Fail Log kepada Anda. Inilah Panduan Teknikal Lengkap untuk Mendapatkannya dengan Cloudflare (atau mana-mana Edge CDN).
Satu Titik Buta Besar dalam E-Dagang Baru Sahaja Diselesaikan
Sejak hari Shopify dilancarkan, platform ini menyimpan log pelayan mentah sepenuhnya di luar jangkauan pemilik kedai. Anda mendapat corong penukaran dan laporan jualan. Apa yang anda tidak dapat ialah satu perkara yang benar-benar memberitahu anda apa yang menghentam pelayan anda: log permintaan HTTP.
Selama bertahun-tahun, ini hanyalah gangguan kecil. Siapa yang peduli tentang log mentah apabila anda mempunyai paparan halaman dan kadar penukaran? Google Analytics menjejaki manusia anda. Platform iklan anda menjejaki kempen anda. Kehidupan baik.
Kemudian AI berlaku.
ChatGPT, Claude, Perplexity, Google AI Overviews, Microsoft Copilot - mereka semua menghantar bot ke kedai anda sekarang. Ada yang merangkak halaman anda untuk membina data latihan. Yang lain mengambil kandungan produk anda secara masa nyata untuk menjawab soalan pelanggan. Dan yang paling mengejutkan? Alat analitik tradisional seperti Google Analytics tidak dapat melihat mana-mana daripadanya. Mereka bergantung pada JavaScript pihak klien yang bot tidak pernah laksanakan. Majoriti interaksi AI dengan kedai anda tidak kelihatan kepada anda.
Ini adalah titik buta baharu dalam e-dagang. Bot AI tidak menjalankan skrip penjejakan anda. Mereka tidak menerima kuki. Mereka tidak muncul dalam laporan GA4 anda. Tetapi mereka pasti membaca halaman produk anda, menarik penerangan anda ke dalam jawapan yang dijana AI, dan membentuk sama ada pelanggan pernah menemui jenama anda.
Alat baharu yang tertumpu pada “analitik ejen” sedang muncul untuk membantu pemilik laman web memahami aktiviti perangkak AI dan rujukan yang dijana AI melalui penjejakan pihak pelayan, klasifikasi bot, dan pengesahan IP. Industri mengiktiraf bahawa model analitik pihak klien lama pada asasnya rosak untuk era penemuan kandungan yang mengutamakan AI. Itulah sebabnya kami membina Papan Pemuka WISLR AI Visibility - untuk memberikan jenama gambaran jelas tentang cara platform AI berinteraksi dengan kandungan mereka, daripada kadar rangkakan hingga permintaan pengambilan hingga trafik rujukan yang didorong AI.
Tetapi jika anda menggunakan Shopify, anda mempunyai masalah unik: anda tidak mengawal pelayan. Anda tidak boleh memasang penjejakan pihak pelayan secara langsung. Anda tidak boleh melihat log akses anda. Anda tidak boleh grep untuk GPTBot. Infrastruktur Shopify adalah kotak hitam, dan mereka tidak menunjukkan apa-apa keurganan untuk membukanya.
Tidak lagi. Inilah cara untuk mendapatkan semula log anda.
Panduan ini membimbing anda melalui pembinaan saluran pengelogan permintaan penuh anda sendiri untuk kedai Shopify menggunakan Cloudflare. Setiap permintaan HTTP. Data geografi penuh. Metrik prestasi. Dan yang paling penting, pengesanan dan klasifikasi bot yang lengkap, supaya anda akhirnya dapat melihat dengan tepat sistem AI mana yang melawat kedai anda, berapa kerap, dan halaman mana yang mereka minati.
Bagaimanakah Pengelogan Permintaan Cloudflare Berfungsi untuk Shopify?
Pelawat meminta kedai Shopify anda
│
▼
Cloudflare CDN (domain anda diproksi melalui Cloudflare)
│
▼
Cloudflare Worker (berjalan pada setiap permintaan)
├──→ Meneruskan permintaan ke asal Shopify (pelawat mendapat respons biasa)
└──→ POST entri log JSON ke penerima log anda (tidak menyekat, melalui ctx.waitUntil)
│
▼
Cloudflare Tunnel
(CNAME pada domain anda → terowong → localhost pada pelayan anda)
│
▼
Penerima HTTP Node.js (localhost:9090)
│
▼
Fail log JSON ditulis ke cakera
Tiada port didedahkan secara awam. Cloudflare Tunnel mengendalikan pengangkutan selamat dari pinggir Cloudflare ke pelayan anda melalui sambungan keluar sahaja.
Apa yang Anda Perlukan untuk Menyediakan Pengelogan Permintaan Shopify?
- Kedai Shopify dengan domain tersuai yang diproksi melalui Cloudflare (awan oren diaktifkan)
- Pelayan untuk menerima log
- Node.js dipasang pada pelayan
- Akaun Cloudflare dengan Workers diaktifkan
- Wrangler CLI dipasang (npm install -g wrangler)
- Cloudflared dipasang pada pelayan
Langkah 1: Cipta Cloudflare Worker
Worker memintas setiap permintaan pada domain anda, memproksi ke Shopify, dan menghantar entri log secara tak segerak ke penerima anda.
1a. Sumber 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. Konfigurasi 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" }
]
Gantikan www.yourdomain.com dengan domain tersuai kedai Shopify anda.
1c. Tetapkan Rahsia Worker
wrangler secret put INGEST_API_KEY
# Paste your generated API key when prompted
1d. Sebarkan
npx wrangler deploy
Langkah 2: Sediakan Penerima Log pada Pelayan Anda
Pelayan HTTP Node.js yang minimum yang menerima kumpulan log dan menulisnya ke cakera.
2a. Skrip Penerima (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}`);
});
Perkara utama:
- Diikat kepada
127.0.0.1sahaja - tidak didedahkan kepada internet - Mengesahkan permintaan dengan pengepala
X-API-Key - Menulis setiap kumpulan log sebagai fail JSON bertanda masa
- Had muatan 10MB setiap permintaan
2b. Perkhidmatan systemd
Cipta /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
Aktifkan dan mulakan:
systemctl daemon-reload
systemctl enable --now log-receiver
Langkah 3: Sediakan Cloudflare Tunnel
Terowong ini mencipta sambungan selamat dari pinggir Cloudflare ke pelayan anda - tiada port terbuka, tiada peraturan tembok api diperlukan.
3a. Pasang 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. Pengesahan
cloudflared tunnel login
# Opens a browser (or gives you a URL) to authorize with your Cloudflare account
Ini menyimpan cert.pem ke ~/.cloudflared/.
3c. Cipta Terowong
cloudflared tunnel create shopify-log-collector
Ini mengeluarkan ID Terowong (UUID) dan mencipta fail JSON kelayakan dalam ~/.cloudflared/.
3d. Konfigurasikan Terowong
Cipta ~/.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: Subdomain yang Worker anda akan POST log kepadanyaservice: Menghala ke penerima Node.js anda pada localhost:9090- Peraturan tangkap semua: Mengembalikan 404 untuk mana-mana hostname lain (diperlukan oleh cloudflared)
3e. Cipta Rekod DNS
cloudflared tunnel route dns shopify-log-collector log-collector.yourdomain.com
Ini mencipta rekod CNAME dalam DNS Cloudflare anda:
log-collector.yourdomain.com → <TUNNEL-ID>.cfargotunnel.com
Rekod ini diproksi melalui Cloudflare (awan oren) - ID terowong dalam CNAME tidak bermakna secara awam.
3f. Pasang sebagai Perkhidmatan Sistem
cloudflared service install
systemctl enable --now cloudflared
Ini menyalin konfigurasi anda ke /etc/cloudflared/config.yml dan mencipta unit systemd.
Sahkan Terowong
systemctl status cloudflared
# Should show: active (running)
curl https://log-collector.yourdomain.com/status
# Should return: {"status":"ok"}
Langkah 4: Jana Kunci API Anda
Jana kunci API rawak yang dikongsi antara Worker dan penerima:
openssl rand -hex 32
Tetapkan nilai ini:
- Sebagai rahsia Worker melalui
wrangler secret put INGEST_API_KEY - Dalam baris Environment systemd penerima (LOG_API_KEY=…)
Langkah 5: Sahkan Hujung ke Hujung
- Lawati kedai Shopify anda dalam pelayar
- Semak log penerima:
journalctl -u log-receiver -f
# Should show: Wrote logs-1234567890-abc123.json (1234 bytes)
- Periksa fail log:
cat /var/log/cdn-requests/logs-*.json | head -1 | python3 -m json.tool
Anda sepatutnya melihat entri log penuh dengan butiran permintaan, data geografi, dan metrik prestasi.
Contoh Entri Log
{
"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"
}]
}
Bagaimanakah Keseluruhan Saluran Pengelogan Shopify Berfungsi?
| Komponen | Apa yang dilakukan | Di mana ia berjalan |
|---|---|---|
| Cloudflare Worker | Memintas setiap permintaan, memproksi ke Shopify, menghantar entri log | Pinggir Cloudflare (disebarkan melalui Wrangler) |
| Cloudflare Tunnel | Menghubungkan pinggir Cloudflare ke pelayan anda dengan selamat (tiada port terbuka) | Daemon cloudflared pada pelayan anda |
| DNS CNAME | log-collector.yourdomain.com ke <tunnel-id>.cfargotunnel.com |
DNS Cloudflare untuk zon anda |
| Penerima Node.js | Menerima POST log JSON, mengesahkan melalui kunci API, menulis ke cakera | Pelayan anda, diikat ke localhost:9090 |
Aliran Data
1. Pelawat melayari https://www.yourdomain.com/products/something
2. Cloudflare menghala melalui Worker
3. Worker mengambil respons asal dari Shopify → mengembalikannya kepada pelawat
4. Worker POST { logs: [entry] } ke https://log-collector.yourdomain.com/collect
(tidak menyekat - pelawat tidak menunggu untuk ini)
5. Cloudflare menyelesaikan log-collector.yourdomain.com melalui CNAME terowong
6. Terowong memajukan permintaan ke localhost:9090 pada pelayan anda
7. Penerima mengesahkan X-API-Key, menulis fail JSON ke cakera
Apakah Data Permintaan Shopify yang Boleh Anda Tangkap yang Shopify Tidak Akan Tunjukkan kepada Anda?
Panel pentadbir Shopify menunjukkan anda paparan halaman, pesanan, dan sumber rujukan. Ia tidak menunjukkan bot AI mana yang melawat, halaman apa yang mereka ambil, dari mana mereka datang, atau seberapa pantas pelayan anda bertindak balas. Persediaan ini menangkap 40+ medan setiap permintaan merentasi kategori ini:
| Kategori | Medan |
|---|---|
| Permintaan | timestamp, method, url, path, host, userAgent, ip, referer |
| Pengesanan Bot | botName, botType (realtime / crawler / preview / unknown) |
| Geo Cloudflare | country, region, city, postalCode, latitude, longitude, timezone, continent |
| Rangkaian | 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 |
| Prestasi | edgeTimeToFirstByteMs, clientTcpRttMs, cacheCacheStatus, originResponseStatus |
Client Hints dan Fetch Metadata amat berguna untuk mengenal pasti pelayar tanpa kepala dan bot tidak bertandatangan - pelayar sebenar menghantar pengepala ini, kebanyakan bot tidak.
Bot AI Manakah yang Melawat Kedai Shopify Anda?
Shopify tidak membezakan antara pelawat manusia dan perangkak AI. Worker ini mengklasifikasikan setiap User-Agent ke dalam dua kategori yang penting untuk keterlihatan AI:
| Jenis | Penerangan | Contoh |
|---|---|---|
realtime |
Pembantu AI yang mengambil halaman sebagai respons kepada pertanyaan pengguna | ChatGPT-User, Claude-Web, Perplexity-User |
crawler |
Bot yang mengindeks kandungan untuk carian atau latihan AI | GPTBot, Googlebot, ClaudeBot, Bingbot |
Permintaan daripada User-Agent yang tidak dikenali ditandai other / unknown - anda boleh menganalisis ini kemudian untuk mencari perangkak tidak bertandatangan. Ini adalah data yang Shopify, Google Analytics, dan kebanyakan platform analitik SaaS langsung tidak sediakan.
Cara Menyimpan Data Bot Shopify dalam Pangkalan Data untuk Analisis Lebih Mendalam
Untuk analitik bot yang lebih mendalam, anda boleh melanjutkan Worker untuk melog permintaan bot ke Supabase (atau mana-mana pangkalan data) sebagai tambahan kepada cakera. Tambah rahsia Worker ini:
wrangler secret put SUPABASE_URL
wrangler secret put SUPABASE_SERVICE_KEY
Kemudian tambah fungsi logToDatabase() yang POST ke REST API pangkalan data anda, dipanggil melalui ctx.waitUntil() untuk permintaan bot yang dikenali. Ini memberikan anda data bot yang berstruktur dan boleh dikueri bersama fail log mentah.
Cara Mengkonfigurasikan DNS Cloudflare untuk Kedai Shopify dengan Pengelogan Permintaan
Untuk persediaan ini berfungsi, domain anda mesti diproksi melalui Cloudflare (awan oren). Persediaan DNS tipikal Shopify + Cloudflare:
| Jenis | Nama | Sasaran | Proksi |
|---|---|---|---|
| CNAME | www |
shops.myshopify.com |
Diproksi (oren) |
| CNAME | log-collector |
<tunnel-id>.cfargotunnel.com |
Diproksi (oren) |
CNAME www menunjuk ke Shopify - Cloudflare memproksi dan menyimpan cache. CNAME log-collector menunjuk ke terowong anda - Cloudflare menghala trafik log dengan selamat ke pelayan anda.
Penting: Laluan Worker mesti sepadan dengan hostname yang diproksi (cth.,
www.yourdomain.com/*). Ia tidak akan dicetuskan pada rekod yang tidak diproksi (awan kelabu).
Cara Memantau dan Menyelenggara Saluran Log Shopify Anda
# 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/
Pertimbangkan untuk menambah kerja cron bagi memantau penggunaan cakera dan memberi amaran apabila storan menghampiri had anda.
Soalan Lazim
Mengapa pemilik kedai Shopify tidak boleh mengakses log pelayan?
Shopify adalah platform SaaS yang diurus sepenuhnya. Pemilik kedai tidak mempunyai akses kepada infrastruktur pelayan yang mendasari, yang bermakna tiada akses kepada log permintaan HTTP mentah, log akses, atau log ralat. Shopify menyediakan papan pemuka analitiknya sendiri dengan paparan halaman, pesanan, dan data rujukan, tetapi ini tidak termasuk permintaan HTTP individu, ejen pengguna bot, masa respons, atau data geografi pada peringkat permintaan. Tiada pelan Shopify, termasuk Shopify Plus, yang menyediakan akses log pelayan mentah. Satu-satunya cara untuk menangkap data ini adalah dengan memintas permintaan pada lapisan CDN sebelum ia mencapai pelayan asal Shopify.
Bagaimana anda menjejaki trafik bot AI pada kedai Shopify?
Trafik bot AI tidak boleh dijejaki melalui Google Analytics, Shopify Analytics, atau mana-mana alat analitik JavaScript pihak klien kerana bot AI tidak melaksanakan JavaScript. Satu-satunya kaedah yang boleh dipercayai adalah pengelogan permintaan pihak pelayan. Untuk kedai Shopify, ini bermakna memintas permintaan pada lapisan CDN menggunakan Cloudflare Worker (atau fungsi pinggir yang setara pada CDN lain). Worker melog setiap permintaan masuk, termasuk pengepala User-Agent, yang mengenal pasti bot AI tertentu seperti ChatGPT-User, GPTBot, ClaudeBot, PerplexityBot, dan lain-lain. Ini adalah pendekatan yang sama digunakan oleh platform “analitik ejen” yang baru muncul, tetapi dihoskan sendiri dan sepenuhnya di bawah kawalan anda.
Apakah bot AI yang merangkak kedai Shopify sekarang?
Sehingga 2026, bot AI utama yang menghentam kedai Shopify terbahagi kepada dua kategori. Bot pengambilan masa nyata (ChatGPT-User, Claude-User, Perplexity-User) mengambil kandungan atas permintaan semasa perbualan pengguna secara langsung. Perangkak latihan (GPTBot, ClaudeBot, PerplexityBot, Bytespider, Amazonbot, Applebot) mengumpul kandungan mengikut jadual untuk latihan model dan pembinaan indeks. Tanpa pengelogan pihak pelayan, tiada satu pun daripada ini muncul dalam analitik Shopify atau Google Analytics.
Berapa banyak medan data yang Cloudflare log setiap permintaan?
Persediaan ini menangkap 40+ medan setiap permintaan, termasuk asas permintaan (timestamp, method, URL, path, user agent, IP, referer), klasifikasi bot (nama bot dan jenis), data geo Cloudflare (negara, wilayah, bandar, poskod, latitud, longitud, zon masa, benua), maklumat rangkaian (ASN, organisasi, pusat data, protokol HTTP, versi TLS), client hints (pengepala sec-ch-ua yang membantu mengesan pelayar tanpa kepala), fetch metadata (pengepala sec-fetch yang mengenal pasti permintaan programatik), dan metrik prestasi (masa ke bait pertama, masa perjalanan pergi balik TCP, status cache, status respons asal).
Bagaimanakah ini berbanding dengan analitik terbina dalam Shopify?
Papan pemuka analitik Shopify menunjukkan paparan halaman, sesi, kadar penukaran, dan sumber rujukan. Ia tidak menunjukkan permintaan HTTP individu, ejen pengguna bot, data geografi pada peringkat permintaan, metrik prestasi respons, atau sebarang aktiviti bot AI. Google Analytics, yang Shopify integrasikan, mempunyai had yang sama kerana ia bergantung pada JavaScript pihak klien. Persediaan pengelogan berasaskan Cloudflare ini menangkap setiap permintaan yang menyentuh domain anda, termasuk yang daripada bot yang tidak pernah melaksanakan JavaScript, memberikan anda gambaran lengkap yang alat Shopify tidak mampu sediakan.
Bolehkah anda menggunakan persediaan ini dengan CDN selain Cloudflare?
Seni bina ini boleh digunakan pada mana-mana edge CDN yang menyokong fungsi pinggir dan terowong selamat. Cloudflare Workers mempunyai setara pada platform lain: Vercel Edge Functions, AWS CloudFront Functions, Fastly Compute, dan Akamai EdgeWorkers semuanya boleh memintas permintaan dan menghantar data log. Komponen terowong boleh digantikan dengan mana-mana kaedah sambungan selamat (terowong SSH, VPN, titik akhir HTTPS langsung dengan senarai kebenaran IP). Corak teras adalah sama: mintas di pinggir, log secara tak segerak, hantar ke penerima anda sendiri.