Fastly
Fastly’nin gerçek zamanlı günlük akışı, hizmetinizin istek günlüklerini HTTPS üzerinden Ahrefs’e gönderebilir. Fastly kontrol panelinden Fastly hizmetinize bir günlükleme uç noktası eklersiniz; Ahrefs’in Fastly hesabınıza erişmesi asla gerekmez.
Ön koşullar
- Ahrefs projenizin alan adına hizmet veren bir Fastly CDN hizmeti. Ücretsiz katman dâhil olmak üzere tüm Fastly planları uygundur.
- Bu hizmetin yapılandırmasını düzenleme ve yeni bir sürümü etkinleştirme izni.
1. adım — Erişim anahtarınızı alın
- Ahrefs’te projeniz için Proje Ayarları → Bot Analytics bölümüne gidin.
- Fastly’yi seçin.
- URL’yi, özel üstbilgi adını ve özel üstbilgi değerini kopyalayın. Üstbilgi değeri erişim anahtarınızdır: projenizi tanımlar, bu yüzden onu bir parola gibi koruyun.
İhtiyacınız olan diğer her şey bu sayfada.
2. adım — Günlükleme uç noktasını ekleyin
Fastly kontrol panelinde hizmetinizi açın, Yapılandırmayı düzenle’ye tıklayın ve etkin sürümü klonlayın. Sol menüden Günlükleme’yi, ardından HTTPS’yi ve Uç nokta oluştur’u seçin.
Uç nokta alanları
| Alan | Değer |
|---|---|
| İsim | Ahrefs Bot Analytics |
| Yerleşim | Biçim sürümü varsayılanı |
| Günlük biçimi | Aşağıdaki günlük biçimini kullanın ve varsayılanı bununla değiştirin |
| URL | https://analytics.ahrefs.com/api/fastly/logs |
| Maksimum günlük sayısı, Maksimum bayt sayısı | Boş bırakın |
| İçerik türü | application/json |
| Özel başlık adı | X-Ahrefs-Web-Analytics-Property |
| Özel başlık değeri | 1. adımdaki erişim anahtarı |
| Yöntem | POST |
| JSON günlük girdisi biçimi | Yeni satırla ayrılmış. JSON dizisi de işe yarar. |
| Sıkıştırma | Gzip (önerilir) veya yok. Zstd ve Snappy kabul edilmez. |
| TLS alanları | Boş bırakın |
Advanced seçenekler altında, Günlük satırı biçimi seç ayarını Boş olarak belirleyin. Oluştur’a tıklayın, ardından yeni sürümü Etkinleştir’in. Fastly hemen akışa başlar.
warning
Günlük satırı biçimi Boş olmalıdır. Varsayılan olan Klasik, her satırın başına bir syslog başlığı ekler ve Ahrefs bu toplu gönderimleri reddeder.
info
Uç noktayı kaydettiğinizde Fastly, hedef ana bilgisayarın Fastly hizmetlerinden gelen günlükleri kabul ettiğini kontrol eder. Ahrefs bu kontrole herkes için yanıt verdiğinden sizin tarafınızda yapılandırmanız gereken bir şey yoktur.
Günlük biçimi
Fastly, her istek için %{...}V yer tutucularını doldurur. Neyi paylaşacağınıza siz karar verirsiniz: Bot Analytics’in çalışması için minimum biçim yeterlidir; önerilen biçim ise daha iyi sonuçlar verir. Bilinmeyen anahtarlar yok sayılır; bu yüzden zaten kaydettiğiniz ekstra alanları tutabilirsiniz.
Minimum. Ziyaret zamanı, sayfa ve bot adıyla birlikte bot ziyaretleri:
{
"timestamp": %{time.start.msec}V,
"host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
"url": "%{json.escape(req.url)}V",
"request_user_agent": "%{json.escape(req.http.User-Agent)}V"
}
Önerilen. Konum verileri için ziyaretçi IP’sini; her ziyaretle birlikte gösterilen durum ve yanıt ayrıntılarını; Web Bot Auth doğrulamasını; ayrıca hizmetiniz shielding kullanıyorsa kopyaları kaldıran edge işaretçisini ekler:
{
"timestamp": %{time.start.msec}V,
"client_ip": "%{req.http.Fastly-Client-IP}V",
"host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
"scheme": "%{req.protocol}V",
"url": "%{json.escape(req.url)}V",
"request_method": "%{json.escape(req.method)}V",
"request_referer": "%{json.escape(req.http.Referer)}V",
"request_user_agent": "%{json.escape(req.http.User-Agent)}V",
"response_state": "%{json.escape(fastly_info.state)}V",
"response_status": %{resp.status}V,
"response_body_size": %{resp.body_bytes_written}V,
"response_content_type": "%{json.escape(resp.http.Content-Type)}V",
"fastly_server": "%{json.escape(server.identity)}V",
"fastly_is_edge": %{if(fastly.ff.visits_this_service == 0, "true", "false")}V,
"request_id": "%{json.escape(req.xid)}V",
"signature": "%{json.escape(req.http.Signature)}V",
"signature_input": "%{json.escape(req.http.Signature-Input)}V",
"signature_agent": "%{json.escape(req.http.Signature-Agent)}V"
}
İkisini istediğiniz gibi harmanlayın: Minimum dört anahtar zorunludur; diğer tüm anahtarlar çıkarılabilir, boş bırakılabilir veya (null) olabilir. Hizmetinizde bir shield varsa fastly_is_edge değerini koruyun; aksi takdirde her miss iki kez sayılır. Tırnaksız anahtarların (timestamp, response_status, response_body_size, fastly_is_edge) her zaman bir değeri olmalıdır; aksi takdirde satır geçerli bir JSON değildir.
info
Fastly Compute hizmetleri, 2. Adım’daki uç nokta ayarlarıyla aynı JSON’u kod aracılığıyla, satır başına bir nesne olacak şekilde yazar.
3. Adım — Doğrulayın
Fastly, günlükleri küçük partiler hâlinde, genellikle isteklerden sonraki bir dakika içinde teslim eder. Bot ziyaretleri birkaç dakika sonra Bot Analytics raporunda görünür. Tarayıcılardan gelen istekler de gönderilir; Ahrefs bot olmayan her şeyi eler.
Sorun giderme
Fastly, kontrol panelinde HTTPS uç noktaları için teslimat hatalarını göstermez; bu yüzden hiçbir şey gelmiyorsa ayarları yukarıdaki tabloyla karşılaştırarak kontrol edin. Ahrefs her partiye aşağıdakilerden biriyle yanıt verir:
| Yanıt | Neden |
|---|---|
401 missing authentication header | Özel üstbilgi adı yanlış yazılmış veya boş. |
403 invalid authentication | Özel üstbilgi değeri bir Ahrefs projesiyle eşleşmiyor. 1. adımdan tekrar kopyalayın. |
400 record 0: … | Günlük satırı biçimi Boş yerine Klasik, sıkıştırma Gzip ya da yok seçeneklerinden biri değil ya da günlük biçimi geçerli bir JSON değil. |
400 record N: Missing record field … | Yeni satırla ayrılmış: günlük biçiminde gerekli anahtarlardan biri eksik. |
400 invalid body: not a JSON array of log records: … | JSON dizisi: günlük satırı biçimi Boş yerine Klasik, günlük biçiminde gerekli bir anahtar eksik ya da geçerli bir JSON değil. |
400 body is not valid gzip | Fastly’de sıkıştırma Gzip olarak ayarlı, ancak gövdenin sıkıştırması açılamadı. |