Rakip verilerini taramak, pazarlamacılar, pazar yeri satıcıları ve ajanslar için yaygın bir uygulamadır. Wildberries'deki fiyatları izler, Avito'dan ilanlar toplar, rakiplerin ürün yelpazesini analiz edersiniz. Ancak çoğu site toplu talepleri engeller ve robots.txt dosyasının göz ardı edilmesi yasal sorunlara yol açabilir. Bu yazıda, etik bir şekilde tarama yapmak için proxy'leri nasıl kullanacağınızı inceleyeceğiz: site kurallarına uymak, engellerden kaçınmak ve iş için risk olmadan veri toplamak.
robots.txt nedir ve sitelere neden gereklidir
robots.txt dosyası, bir web sitesinin kökünde bulunan bir metin belgesidir ve arama motoru robotlarına ve tarayıcılara hangi bölümlerin taranabileceğini ve hangilerinin yasaklandığını bildirir. Örneğin, bir e-ticaret sitesi, sepet veya kullanıcı panelinin dizine eklenmesini engelleyebilir, böylece bu sayfalar Google'da görünmez.
Tipik bir robots.txt dosyası şu şekilde görünür:
User-agent: * Disallow: /admin/ Disallow: /cart/ Disallow: /api/ Crawl-delay: 10 User-agent: Googlebot Allow: / Sitemap: https://example.com/sitemap.xml
Yönergelerin analizi:
User-agent: *— tüm botlar için kurallar (yıldız işareti "herhangi bir bot" anlamına gelir)Disallow: /admin/— /admin/ bölümünün taranması yasaktırCrawl-delay: 10— talepler arasında 10 saniyelik gecikmeUser-agent: Googlebot— Google için özel kurallar (her şey serbest)
Siteler neden robots.txt kullanır:
- Sunucu aşırı yüklenmesinden korunma — toplu tarama, sunucuya yük bindirir ve gerçek kullanıcılar için yavaşlatır
- Teknik sayfaların gizlenmesi — sepetler, ödeme formları, API uç noktaları dizine eklenmemelidir
- Ticari verilerin korunması — pazar yerleri, rakiplerin tüm ürün kataloğunu kolayca indirmesini istemez
- Veri trafiğinin tasarrufu — her bot talebi, site sahibine maliyet getirir
Önemli: robots.txt bir öneridir, teknik bir engel değildir. Dosya fiziksel olarak erişimi engellemez, ancak kuralların göz ardı edilmesi IP'nizin engellenmesine veya dava açılmasına yol açabilir (özellikle ABD ve Avrupa'da).
Tarama ile ilgili yasal riskler: yasa ne diyor
Veri tarama, yasaların gri alanında yer alır. Farklı ülkelerde farklı kurallar geçerlidir, ancak dava açmamak için bilmeniz gereken bazı genel ilkeler vardır.
Rusya'nın yasaları
Rusya'da tarama ile ilgili özel bir yasa yoktur, ancak genel kurallar uygulanmaktadır:
- Telif hakkı (Rusya Medeni Kanunu, madde 1259) — hak sahibinin izni olmadan özgün metinler, fotoğraflar, ürün açıklamaları kopyalanamaz. Fiyat ve özelliklerin taranması genellikle güvenlidir, çünkü bunlar gerçek verilerdir.
- Kişisel veriler (152-FZ) — kullanıcıların kişisel verilerini (ad, telefon, e-posta) izinsiz toplamak yasaktır. Bu, sosyal medya profillerinin veya iletişim veritabanlarının taranmasını kapsar.
- Rekabetin ihlali (Rusya İdari Yasa, madde 14.33) — tarama, iş modelinin kopyalanması veya müşterilerin yanıltılması için kullanılıyorsa, 500.000 rubleye kadar ceza alınabilir.
ABD ve Avrupa'nın yasaları
ABD ve AB'de yasalar daha katıdır:
- CFAA (Bilgisayar Dolandırıcılığı ve Kötüye Kullanım Yasası, ABD) — yetkisiz erişim, bilgisayar sistemlerine karşı bir suç olarak kabul edilir. robots.txt ihlali "yetkisiz erişim" olarak yorumlanabilir. Ünlü bir dava: LinkedIn vs hiQ Labs (2022) — mahkeme, kamu verilerinin taranmasının yasal olduğunu, ancak teknik engellerin (örneğin, captcha) göz ardı edilmesinin yasal olmadığını belirtti.
- GDPR (Genel Veri Koruma Yönetmeliği, AB) — AB vatandaşlarının kişisel verilerini açık rıza olmadan toplamak yasaktır. Cezalar 20 milyon euroya veya şirketin yıllık cirosunun %4'üne kadar çıkabilir.
- Kullanım Şartları (Hizmet Sözleşmeleri) — birçok site, kurallarında taramayı açıkça yasaklar. İhlal, sözleşmenin ihlali nedeniyle dava açılmasına yol açabilir.
Pratik öneri: Tarama yapmadan önce üç belgeyi kontrol edin: hedef sitenin robots.txt, Kullanım Şartları ve Gizlilik Politikası. Eğer tarama açıkça yasaklanmışsa, alternatif veri kaynakları (açık API'ler, ortaklık programları, hazır veri setleri) arayın.
Ne güvenli bir şekilde taranabilir
| Veri türü | Risk | Açıklama |
|---|---|---|
| Ürün fiyatları | Düşük | Gerçek veriler, telif hakkı ile korunmaz |
| Ürün özellikleri | Düşük | Teknik veriler güvenlidir |
| Özgün açıklamalar | Yüksek | Telif hakkı ile korunur |
| Ürün fotoğrafları | Yüksek | Hak sahibinin izni gereklidir |
| Kullanıcı iletişim bilgileri | Kritik | 152-FZ ve GDPR ihlali |
| Açık istatistikler | Düşük | Açık veriler güvenlidir |
Etik tarama: verileri ihlal etmeden nasıl toplarsınız
Etik tarama, iş hedefleri ile site sahiplerine saygı arasında bir denge kurmaktır. Gerekli verileri toplayabilir, hedef kaynağa sorun çıkarmadan ve yasalara uyarak gerçekleştirebilirsiniz.
Etik taramanın temel ilkeleri
- robots.txt'ye uyun — eğer bir bölüm taramaya kapalıysa, onu aşmaya çalışmayın. Alternatif veri kaynakları arayın.
- Taleplerin hızını sınırlayın — saniyede 1000 talep göndermeyin. Sunucuyu aşırı yüklememek için talepler arasında 2-10 saniye gecikmeler yapın.
- Tarayıcınızın User-Agent'ını kullanın — sıradan bir kullanıcı gibi gizlenmeyin. Dürüst bir User-Agent belirtin, örneğin: "MyCompanyParser/1.0 (contact@mycompany.com)". Bu, site yöneticilerinin sorun çıkarsa sizinle iletişime geçmesini sağlar.
- Sadece kamu verilerini tarayın — kapalı bölümlere, API'lere veya veri tabanlarına erişim sağlamaya çalışmayın.
- Kopyalanan verileri satmayın — toplanan bilgileri iç ihtiyaçlar için (rakip analizi, fiyat izleme) kullanın, rekabet eden bir hizmet oluşturmak için değil.
- Verileri önbelleğe alın — aynı sayfayı birden fazla kez sorgulamayın. Sonuçları yerel olarak saklayın ve belirli bir takvimle güncelleyin (günde bir, haftada bir).
Ne zaman tarama yapmamalısınız
Tarama yapmanın daha fazla sorun yarattığı durumlar vardır:
- Site API sağlıyorsa — birçok pazar yeri (Wildberries, Ozon, Yandex.Market) ortaklar için resmi API'lere sahiptir. Tarama yerine bunları kullanın — bu daha hızlı, daha yasal ve daha güvenilir.
- Veriler captcha veya kimlik doğrulama ile korunuyorsa — korumayı aşmak sistemin hacklenmesi olarak değerlendirilebilir.
- Site, Kullanım Şartları'nda taramayı açıkça yasaklıyorsa — dava riski çok yüksektir.
- Kişisel verileri topluyorsanız — bu GDPR ve 152-FZ ihlali olup büyük cezalara yol açar.
robots.txt nasıl doğru okunur ve uyulur
robots.txt dosyası alan adının kökünde bulunur: https://example.com/robots.txt. Tarama işlemine başlamadan önce bu dosyayı her zaman kontrol edin.
robots.txt'nin temel yönergeleri
| Yönerge | Anlamı | Örnek |
|---|---|---|
User-agent |
Kuralların hangi bot için geçerli olduğu | User-agent: * (tüm botlar) |
Disallow |
Tarama için yasaklanan bölümler | Disallow: /admin/ |
Allow |
İzin verilen bölümler (Disallow'dan istisna) | Allow: /public/ |
Crawl-delay |
Talepler arasındaki minimum gecikme (saniye cinsinden) | Crawl-delay: 10 |
Sitemap |
Tüm sayfaların listesini içeren site haritası bağlantısı | Sitemap: /sitemap.xml |
robots.txt örnekleri ve nasıl yorumlanacağı
Örnek 1: Taramanın tamamen yasaklanması
User-agent: * Disallow: /
Bu, "Tüm botların tüm siteyi taraması yasaktır" anlamına gelir. Böyle bir sitenin taranması, sahibi tarafından belirlenen kuralların ihlali olur. Alternatif veri kaynakları arayın.
Örnek 2: Seçici kısıtlamalar
User-agent: * Disallow: /admin/ Disallow: /api/ Disallow: /cart/ Allow: /products/ Crawl-delay: 5
Bu, "Ürünler bölümünü (/products/) taramak serbest, ancak /admin/, /api/ ve /cart/ yasaktır. Talepler arasında 5 saniye gecikme yapın" anlamına gelir. Bu normal şartlardır — ürünleri taramak mümkündür, sınırlara uyarak.
Örnek 3: Belirli botlar için kurallar
User-agent: Googlebot Allow: / User-agent: * Disallow: / Crawl-delay: 10
Bu, "Google tüm siteyi tarayabilir, ancak diğer tüm botlar tarayamaz" anlamına gelir. Eğer Google değilseniz, tarama yasaktır.
Tarama öncesinde robots.txt nasıl kontrol edilir
Çoğu programlama dili, robots.txt'yi otomatik olarak kontrol etmek için kütüphanelere sahiptir. Python'da bir örnek:
from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
# Sayfanın taranıp taranamayacağını kontrol et
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"
if rp.can_fetch(user_agent, url):
print("Tarama izni var")
else:
print("robots.txt tarafından tarama yasaklandı")
Bu, kuralları otomatik olarak kontrol eder ve belirli bir URL'nin taranıp taranamayacağını bildirir.
Rate Limiting ve talepler arasındaki gecikmeler
Rate Limiting (talep hızının sınırlandırılması) — siteleri aşırı yüklenmeden koruma yöntemidir. Eğer çok fazla talep gönderirseniz, sunucu IP'nizi engelleyebilir veya captcha gösterebilir.
Gecikmelere uymanın önemi
- IP engellemesinden kaçınma — siteler, bir IP'den gelen talep sıklığını izler. Eğer dakikada 100 talep gönderiyorsanız, bot olarak engellenirsiniz.
- Sunucu üzerindeki yükü azaltma — toplu tarama, özellikle düşük maliyetli bir barındırma hizmetinde olan küçük bir siteyi "çökertebilir".
- robots.txt'deki Crawl-delay'e uyma — eğer site 10 saniyelik bir gecikme belirtmişse, bu kuralı göz ardı etmek etik değildir.
- Daha doğal bir davranış — normal kullanıcılar saniyede 10 sayfa açmaz. Gecikmeler, tarayıcınızı gerçek bir insana benzetir.
Farklı görevler için önerilen gecikmeler
| Tarama türü | Talepler arasındaki gecikme | Açıklama |
|---|---|---|
| Küçük site (1000 sayfadan az) | 5-10 saniye | Düşük sunucu gücü |
| Orta site (e-ticaret sitesi) | 2-5 saniye | Optimal denge |
| Büyük pazar yeri (Wildberries, Ozon) | 1-3 saniye | Güçlü altyapı, ancak güçlü koruma |
| API uç noktaları | API limitlerine göre (genellikle 10-100 talep/dakika) | API belgelerine bakın |
| Sosyal medya (Instagram, VK) | 10-30 saniye | Çok katı limitler, yüksek yasak riski |
Kodu gecikmelerle nasıl uygulayabilirsiniz
time kütüphanesini kullanarak Python'da bir örnek:
import time
import requests
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
response = requests.get(url)
print(f"Tarandı: {url}")
# Bir sonraki talep öncesinde 3 saniye gecikme
time.sleep(3)
Daha karmaşık senaryolar için, davranışı daha doğal hale getirmek için rastgele gecikmeler (random delay) kullanın:
import time
import random
for url in urls:
response = requests.get(url)
# 2 ile 5 saniye arasında rastgele gecikme
delay = random.uniform(2, 5)
time.sleep(delay)
Etik tarama için proxy döngüsü
robots.txt'ye uyduğunuz ve gecikmelere dikkat ettiğiniz halde, tek bir IP üzerinden büyük miktarda veri taramak şüphe uyandırabilir. Proxy döngüsü, talepleri farklı IP adresleri arasında dağıtarak birçok gerçek kullanıcının davranışını taklit etmeye yardımcı olur.
Proxy döngüsünün avantajları
- Rate Limiting'i aşma — eğer bir IP'den saatte 100 talep limiti varsa, 10 proxy size saatte 1000 talep sağlar.
- Coğrafi dağılım — bölgesel verileri taramak için (örneğin, Moskova ve Vladivostok'taki Wildberries fiyatları) farklı şehirlerden proxy'lere ihtiyaç vardır.
- Şüpheleri azaltma — farklı IP'lerden gelen talepler, gerçek kullanıcıların trafiği gibi görünür.
- Yedekleme — bir proxy engellenirse, tarayıcı otomatik olarak başka birine geçer.
Etik tarama için hangi proxy'leri kullanmalısınız
| Proxy türü | Artıları | Eksileri | Ne zaman kullanılmalı |
|---|---|---|---|
| İkametgah Proxy'leri | Gerçek ev kullanıcılarının IP'leri, düşük yasak riski | Diğer türlerden daha pahalı | Sosyal medya, güçlü korumaya sahip pazar yerleri için tarama |
| Mobil Proxy'ler | Mobil operatörlerin IP'leri, maksimum güvenilirlik | En pahalı, daha az mevcut IP | Instagram, TikTok, mobil uygulamalar için tarama |
| Veri Merkezi Proxy'leri | Ucuz, yüksek hız | Kolayca tespit edilir, sık sık kara listelerde yer alır | Basit sitelerin taranması, testler için |
Etik tarama için öneri: İkametgah proxy'leri ile otomatik döngü kullanın. Bu, maliyet ve güvenilirlik arasında bir denge sağlar ve IP'leri normal kullanıcılar gibi görünür.
Proxy döngüsü stratejileri
- Her talep için döngü — her talep yeni bir IP'den gelir. Sert limitleri olan sitelerin taranması için uygundur (sosyal medya, pazar yerleri).
- Zamana göre döngü (her 5-10 dakikada bir) — bir IP birkaç talep için kullanılır, ardından değiştirilir. Daha doğal bir davranış.
- Sticky sessions (yapışkan oturumlar) — bir IP, bir kullanıcının tüm oturumu için kullanılır (örneğin, kimlik doğrulama + kullanıcı panelinin taranması). Kimlik doğrulama gerektiren siteler için zorunludur.
- Coğrafi döngü — her bölge için o bölgeden bir proxy kullanılır. Örnek: Moskova'daki Wildberries fiyatlarını tararken, Moskova'dan bir proxy kullanın.
Python'da proxy döngüsü örneği
import requests
import random
import time
# Proxy listesi (gerçeklerle değiştirin)
proxies_list = [
{"http": "http://user:pass@proxy1.example.com:8080"},
{"http": "http://user:pass@proxy2.example.com:8080"},
{"http": "http://user:pass@proxy3.example.com:8080"}
]
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
# Rastgele bir proxy seç
proxy = random.choice(proxies_list)
try:
response = requests.get(url, proxies=proxy, timeout=10)
print(f"{url} üzerinden tarandı {proxy}")
except Exception as e:
print(f"{proxy} ile hata: {e}")
# 3 saniye gecikme
time.sleep(3)
Pratik vakalar: pazar yerleri ve rakiplerin taranması
İş için etik tarama ile ilgili gerçek senaryoları inceleyelim.
Vaka 1: Wildberries'de fiyat izleme
Görev: Wildberries'de ürün satıyorsunuz ve rakiplerin fiyatlarını izlemek istiyorsunuz.
Sorunlar:
- Wildberries sık talep geldiğinde IP'yi engelliyor
- Fiyatlar teslimat bölgesine bağlı
- Günde 100-500 ürünü taramak gerekiyor
Etik çözüm:
- robots.txt'yi kontrol edin — Wildberries, ürün kartlarının taranmasına izin veriyor, ancak API uç noktalarını yasaklıyor.
- İkametgah proxy'leri kullanın — her bölge için (Moskova, St. Petersburg, Novosibirsk) o bölgeden proxy alın.
- Her talep için döngü — her ürünü yeni bir IP ile tarayın.
- 2-3 saniye gecikme — talepler arasında duraklama yapın.
- Günde bir kez tarayın — fiyatları her saat güncellemeye gerek yok, günlük izleme yeterlidir.
Sonuç: Rakiplerin güncel fiyatlarını engellenmeden alıyorsunuz. Wildberries, zaman ve IP'ler arasında dağıtılmış talepler nedeniyle anormal bir yük hissetmiyor.
Vaka 2: Avito'da ilan tarama
Görev: Bir emlakçısınız ve şehrinizdeki tüm daire satış ilanlarını toplamak istiyorsunuz.
Sorunlar:
- Avito, şüpheli etkinlikte captcha gösteriyor
- 5000+ ilanı taramak gerekiyor
- Veriler her gün güncelleniyor
Etik çözüm:
- robots.txt'yi kontrol edin — Avito, ilan sayfalarının taranmasına izin veriyor, ancak Crawl-delay: 5 saniye ile sınırlı.
- İkametgah proxy'leri kullanın — her 10 talepte bir döngü (her talep için değil, şüpheli görünmemek için).
- 5-7 saniye gecikme — robots.txt'deki Crawl-delay'e uyun.
- Gece saatlerinde tarayın — siteye yükün en az olduğu zaman (sabah 2-6 arası).
- Verileri önbelleğe alın — aynı ilanı iki kez taramayın, sonuçları veritabanında saklayın.
Sonuç: Gece boyunca tüm yeni ilanları captcha ve engeller olmadan topluyorsunuz. Avito aşırı yüklenmiyor, gerekli verileri alıyorsunuz.
Vaka 3: Rakip ürün yelpazesinin analizi
Görev: Elektronik e-ticaret mağazasının sahibisiniz ve rakibinizin hangi yeni ürünleri olduğunu öğrenmek istiyorsunuz.
Sorunlar:
- Rakip sitenin korumalı bir barındırma hizmeti var ve anti-bot sistemi mevcut
- 10.000 ürün içeren bir kataloğu taramak gerekiyor
- Bunu haftada bir yapmak istiyorsunuz
Etik çözüm:
- robots.txt'yi kontrol edin — /catalog/ taramasına izin var, ancak /admin/ ve /api/ yasak.
- Sitemap kullanın — tüm sayfaları manuel olarak taramak yerine, sitemap.xml'den URL listesini alın (bu daha hızlı ve gereksiz yük yaratmaz).
- İkametgah proxy'leri ile her 5 dakikada bir döngü — bir IP 20-30 talep yapar, ardından değişir.
- 3-5 saniye gecikme — normal bir kullanıcının davranışını taklit edin.
- Yalnızca yeni ürünleri tarayın — mevcut kataloğu önceki ile karşılaştırın ve yalnızca değişiklikleri tarayın.
Sonuç: Haftada bir rakibinizin yeni ürün listesini engellenmeden alıyorsunuz. Rakip sitenin sorun yaşamadığı bir süreçte, rekabet avantajı elde ediyorsunuz.
Kurallara uyarak otomasyon için araçlar
Etik taramayı kolaylaştıran ve otomatik olarak robots.txt'ye uyan hazır araçlar mevcuttur.
Scrapy (Python)
Scrapy, Python'da tarama için popüler bir çerçevedir. Otomatik olarak robots.txt'yi kontrol eder ve kurallara uyar.
Scrapy'de robots.txt'ye uyma ayarları:
# settings.py # robots.txt'ye uyma özelliğini etkinleştir ROBOTSTXT_OBEY = True # Talepler arasındaki gecikme (saniye cinsinden) DOWNLOAD_DELAY = 3 # Rastgele gecikme (0.5 ile 1.5 * DOWNLOAD_DELAY arasında) RANDOMIZE_DOWNLOAD_DELAY = True # Bir alan adına eşzamanlı taleplerin sınırı CONCURRENT_REQUESTS_PER_DOMAIN = 1 # Tarayıcınızın User-Agent'ı USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'
Bu ayarlarla Scrapy, tarama öncesinde otomatik olarak robots.txt'yi kontrol eder ve tüm kurallara uyar.
Apify (bulut platformu)
Apify, kod yazmadan web taraması için bir bulut platformudur. Görsel arayüz aracılığıyla bir tarayıcı oluşturursunuz ve Apify otomatik olarak proxy'leri ve limitleri yönetir.
Etik tarama için avantajlar:
- Yerleşik proxy döngüsü (ikametgah ve veri merkezleri)
- Otomatik robots.txt uyumu
- Arayüz üzerinden gecikme ayarları
- Çalışma programı (günde/haftada bir tarama)
Octoparse (kodsuz tarayıcı)
Octoparse, kodlama gerektirmeyen bir masaüstü uygulamasıdır. Kod yazmayı bilmeyen pazarlamacılar ve satıcılar için uygundur.
Octoparse'da etik taramayı nasıl ayarlarsınız:
- Görev ayarlarını açın (Task Settings)
- "robots.txt'ye saygı göster" seçeneğini etkinleştirin
- 3-5 saniye gecikme ayarlayın (Delay)
- "Proxy Ayarları" bölümünde proxy'leri bağlayın
- Çalışma programını ayarlayın (Schedule)
Puppeteer/Playwright (JavaScript)
Puppeteer ve Playwright, tarayıcı otomasyonu için kütüphanelerdir. JavaScript ile render edilen siteleri taramak için uygundur.
Puppeteer ile etik tarama örneği:
const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');
async function ethicalScrape(url) {
// robots.txt'yi kontrol et
const robots = robotsParser('https://example.com/robots.txt',
'MyParser/1.0');
if (!robots.isAllowed(url)) {
console.log('robots.txt tarafından tarama yasaklandı');
return;
}
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Sayfa yüklenmeden önce gecikme
await new Promise(resolve => setTimeout(resolve, 3000));
await page.goto(url);
const data = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log(data);
await browser.close();
}
ethicalScrape('https://example.com/product1');
Sonuç
Proxy üzerinden etik tarama, iş hedefleri ile site sahiplerine saygı arasında bir denge kurmaktır. robots.txt'ye uyarak, talepler arasında gecikmeler yaparak ve proxy döngüsü kullanarak, gerekli verileri yasal riskler ve engeller olmadan toplayabilirsiniz. Temel ilkeler: taramadan önce robots.txt'yi kontrol edin, taleplerin hızını sınırlayın, dürüst bir User-Agent kullanın ve yalnızca kamu verilerini tarayın. Bu, işinizi dava açma risklerinden koruyacak ve tarayıcıların istikrarlı çalışmasını sağlayacaktır.
Eğer pazar yerlerini, rakip siteleri taramayı veya piyasa analizi için veri toplamayı planlıyorsanız, ikametgah proxy'leri ile otomatik döngü kullanmanızı öneririz. Bu, maliyet ve güvenilirlik arasında bir denge sağlar ve IP'leri normal kullanıcılar gibi görünür.