IP yasaklarının faaliyetlerinizi aksatmasından bıktınız mı? Yüksek hızlı rotasyon için Konut Proxy’lerimizi veya hesaplarınızın uzun ömürlü olmasını sağlamak için güvenli ISP Proxy’lerimizi kullanın.
Görüntüleri kazımak kulağa basit geliyor — URL’leri bul, dosyaları indir. Ancak pratikte, modern web bu işlemin neredeyse her aşamasını olması gerekenden daha zor hale getiriyor: galeriler kaydırma sırasında gecikmeli yükleniyor, görüntü URL’leri CDN’ler tarafından imzalanıyor, en yüksek kaliteli sürüm fareyle üzerine gelindiğinde görünür hale geliyor ve kazımaya değer herhangi bir site, birkaç yüz istek içinde basit bir komut dosyasını tespit edecek bot önleme savunmalarına sahip.
Bu kılavuz, tek seferlik tarayıcı uzantılarından üretim düzeyinde Python iş akışlarına kadar 2026 yılında gerçekten işe yarayan yöntemleri ele almaktadır; ayrıca çoğu öğretici kılavuzun atladığı konuları da kapsamaktadır: JavaScript ile işlenen içeriğin yönetimi, hotlink korumasını aşma yöntemleri ve göz ardı edilmesi giderek zorlaşan hukuki ve etik boyut.
Gerçekten ne kadar ihtiyacınız olduğuna göre yönteminizi seçin
Görüntü kazıma işlemi genel olarak dört aşamaya ayrılır ve doğru aracın seçimi, iş hacmine, hedefe ve bu işlemi ne sıklıkla gerçekleştireceğinize bağlıdır.
1. Seviye — Tek seferlik, küçük hacimli, tek bir kaynak. Bir tarayıcı eklentisi kullanın ya da sağ tıklayıp kaydedin. Bunun dışındaki her şey gereksizdir.
2. Seviye — Tek bir siteden on ila yüzlerce resim. Özel bir resim çıkarma aracı veya tek bir sayfayı tarayan basit bir Python betiği.
3. Seviye — Birçok sayfada veya sitede yer alan binlerce görsel. Uygun hız sınırlaması, yeniden deneme mantığı ve depolama özelliğine sahip gerçek bir veri toplama betiği.
4. Seviye — Sürekli, büyük ölçekli veri toplama (makine öğrenimi eğitim verileri, devam eden pazar araştırması). Dönen vekiller, başsız tarayıcı desteği ve gerçek bir veri deposu içeren bir üretim iş akışı.
Bu konuyla ilgili makalelerin çoğu bu iki kavramı birbirine karıştırmaktadır. 1. seviye için doğru yaklaşım, 4. seviyenin sadece daha küçük bir versiyonu değil, ondan gerçekten farklıdır.
1. Seviye: Tarayıcı eklentileri
Tek bir sayfadan bir düzine resim almak için tarayıcı uzantıları hâlâ en hızlı yoldur. Bugün yüklemeye değer olanlar:
- Resim İndirici (Chrome) — boyut ve dosya türüne göre filtreleme özelliği ile kolay toplu indirme. Evrensel bir varsayılana en yakın seçenek.
- Imageye (Chrome, Edge) — benzer özellikler, boyut ve format için iyi bir filtre kullanıcı arayüzü.
- DownThemAll! (Firefox) — uzun süredir kullanılan bir klasik; hâlâ güncelleniyor ve sadece resimlerden başka birçok dosya türünü de destekliyor.
Bir yıldan uzun süredir güncellenmemiş uzantılardan kaçının (2020 neslinden kalma “çift tıklamayla indirme” araçlarının çoğu artık terk edilmiş ya da fark edilmeden zararlı hale gelmiştir — Chrome’un uzantı mağazası bir süredir adeta bir mezarlık gibidir). Herhangi bir şeyi yüklemeden önce son güncelleme tarihini kontrol edin.
Herhangi bir eklentinin sınırı: her sayfayı yine de kendiniz yüklemeniz gerekiyor. Birkaç yüz resimden sonra eliniz kramp giriyor.
2. Seviye: Görüntü çıkarma araçları ve başsız araçlar
Eklentilerden bir adım öte: Bir URL’yi alarak, görüntülenen sayfadaki tüm resimleri çeken araçlar. Çoğu, aynı anda yalnızca bir siteyle sınırlı olsa da, tıklama işlemlerini sizin yerinize halleder.
Tek seferlik işler için en basit seçenek genellikle şudur: wget komut satırından:
bash
wget -r -l 2 -A jpg,jpeg,png,webp,gif --no-parent https://example.com/gallery/
Bu komut, bir URL’den iki katman derinliğe kadar resimleri özyinelemeli olarak indirir ve resim dosya türlerine göre filtreler. 25 yıldır tüm Linux dağıtımlarında yer almaktadır ve statik siteler için hâlâ işe yaramaktadır. Windows için buna karşılık gelen komut ise şudur: curl veya PowerShell’in Invoke-WebRequest.
Komut dosyası yazmak istemediğiniz siteler için, kendini kanıtlamış kodsuz araçlar: Octoparse (hala güvenilir, freemium modeli), Apify (daha çok geliştiricilere yönelik, görüntüye özel olanlar da dahil olmak üzere hazır kazıyıcıların bulunduğu bir pazar yeri), Bardeen (daha yeni, tarayıcı uzantısı tabanlı, diğer iş akışı araçlarıyla entegre olur). ParseHub, üç yıl önceki gibi artık ilk akla gelen bir öneri değil — ücretsiz kullanım sınırları önemli ölçüde daraltıldı.
Bu araçlar, sayfalandırma, temel JavaScript işleme ve CSV formatında dışa aktarma işlemlerini gerçekleştirir. Ancak, güvenlik önlemleri sıkı olan sitelerde veya oturum açma gerektiren sonsuz kaydırma özelliğine sahip sitelerde düzgün çalışmayabilir.
3. Seviye: Python — aktif yazılımcıların varsayılan tercihi
Gerçekten büyük bir hacim istiyorsanız, kendiniz yazın. 2026 yılında da güvenilir bir şekilde çalışacak Python yığını oldukça kısadır:
requests— sayfaları getirir ve resim dosyalarını indirirBeautifulSoup— HTML’yi ayrıştırır ve şunu bulur<img>etiketler vesrcsetözelliklerPlaywright— site, resimleri görüntülemek için JavaScript’e ihtiyaç duyduğunda gerçek bir başsız tarayıcı çalıştırırPillow— indirilen görüntüleri işler (boyutlandırma, yinelenenlerin ayıklanması, format doğrulaması)
Statik bir sayfanın temel iş akışı:
python
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import os
url = "https://example.com/gallery"
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"}
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")
os.makedirs("images", exist_ok=True)
for img in soup.find_all("img"):
src = img.get("src") or img.get("data-src")
if not src:
continue
full_url = urljoin(url, src)
filename = os.path.join("images", os.path.basename(full_url.split("?")[0]))
with open(filename, "wb") as f:
f.write(requests.get(full_url, headers=headers).content)
Bu, 30 saniyelik özet. Pratikte ise birkaç gerçekle başa çıkmanız gerekecek:
- Gecikmeli yüklenen resimler yaşamak
data-src,data-original, ya da bunun yerine benzer özelliklersrc— İşaretlemeyi güvenilir kabul etmeden önce sayfayı inceleyin. srcsetözellikler duyarlı görseller için birden fazla çözünürlük seçeneği sunar. En yüksek kaliteli sürüm genellikle istenen sürüm değildirsrcişaret ettiği; ayrıştırsrcseten büyüğünü kapmak için.- JavaScript ile oluşturulan galeriler şurada görünmeyecek
requestshiçbir çıktı yok. Playwright’a geçin, galerinin yüklenmesini bekleyin, ardından DOM’dan verileri çıkarın. - İmzalı CDN URL’lerinin geçerlilik süresi dolmaktadır — URL’leri tek seferde toplar ve daha sonra indirirseniz, 403 hatalarıyla karşılaşabilirsiniz. Buldukça indirin.
- Hotlink koruması yetkisi olmayan talepleri reddediyor
Refererbaşlık. Kaynak sayfanın URL’siniRefererve bunların çoğu kendiliğinden geçer.
Playwright ile gerçekleştirilen veri kazıma için:
python
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://example.com/gallery")
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
page.wait_for_timeout(2000)
image_urls = page.eval_on_selector_all(
"img",
"elements => elements.map(el => el.src)"
)
browser.close()
Bu, çoğu modern resim galerisinde basit veri kazıyıcıların çalışmasını engelleyen “kaydırarak daha fazlasını yükle” modelini halleder.
4. Aşama: Üretim ölçeğinde toplama
Her çalıştırmada birkaç bin görüntüyü aştığınızda ya da koleksiyon işlerini kesintisiz olarak yürüttüğünüzde (en yaygın durumlar: makine öğrenimi eğitimi için görüntü veri kümesi oluşturmak, rakiplerin görsel varlıklarını izlemek veya büyük ölçekte içerik akışlarını düzenlemek), darboğazlar değişir.
Artık sorun komut dosyasında değil. Sorunlar şunlar:
Hız sınırlaması ve IP engellemeleri. Her ciddi site, dakikada birkaç kereden fazla erişim yapan tek bir IP adresini engeller. Bunun çözümü, dönen ev tipi proxy’lerdir — normal kullanıcı trafiğinden ayırt edilemeyen, gerçek evlere atanan IP adresleri. Veri merkezi proxy’leri bu amaçla işe yaramaz; büyük resim barındırma siteleri ve e-ticaret platformları, veri merkezi IP aralıklarını varsayılan olarak işaretler.
Coğrafi sınırlamalı içerik. Bazı görseller yalnızca belirli bölgelere sunulur (lisanslı spor görselleri, bölgesel ürün fotoğrafları). Bu durum ülke düzeyinde proxy hedefleme ile yönetilir; gerçek anlamda yerelleştirilmiş içerik söz konusu olduğunda ise şehir düzeyinde hedefleme önem kazanır.
Depolama ve tekilleştirme. Her biri 200 KB olan 100.000 görüntüyü indiren bir işlem 20 GB’lık bir alan kaplar. Her görüntüyü indirirken hash değeri hesaplamak (basit bir hashlib.md5(content).hexdigest()) paralel bir dosya adı veritabanı tutmanıza gerek kalmadan yinelenenleri atlamanıza olanak tanır.
Yeniden deneme mantığı. Ağlar çökebilir, CDN’ler hız kısıtlaması uygulayabilir, tarayıcılar kilitlenebilir. Her indirme işlemini “geri çekme ile yeniden deneme” mekanizmasıyla sarın ve hatalar karşısında işlemlerin kesilmesine izin vermek yerine, hataları günlüğe kaydedin.
Eşzamanlılık. Kullanım aiohttp ile asyncio ağır indirme iş yükleri için. İstek başına 200 ms süren ve 10K resim indiren basit bir sıralı komut dosyası 33 dakika sürer; eşzamansız sürüm ise bir dakikadan az sürer (kaynağın bunu kaldırabileceğini varsayarsak — başkasının sunucusunu çökertmeyin).
Bu seviyedeki projelerde, proxy altyapısı veri toplama komut dosyasından daha önemlidir. Komut dosyası, bir öğleden sonra yazabileceğiniz 100 satırlık bir metindir. Güvenilir, dönüşümlü ve ev tipi IP adresleri, işin sonuna kadar devam edip etmeyeceğini ya da IP adresinin engellenmesi nedeniyle %30’da takılıp kalacağını belirleyen asıl unsurdur.
IPBurger bu tanıma tam olarak uyuyor — dönüşümlü konut proxy’leri, ülke düzeyinde hedefleme, gerektiğinde kalıcı oturumlar — ve daha genel bir bakış açısı, sağlayıcıdan bağımsız olarak geçerlidir: bu seviyede, yükü taşıyan unsur proxy katmanıdır.
Çoğu rehberin atladığı kısım: yasallık ve etik
Görüntü kazıma, web kazımacılığının hukuki açıdan en belirsiz alanlarından biridir; bunun nedeni, son iki yıl içinde daha da belirgin hale gelen birkaç özel nedendir:
Görseller için telif hakkı varsayılan olarak geçerlidir. Adil kullanımın daha geniş bir alan tanıdığı metin alıntılarının aksine, görsellerin çoğaltılması genellikle telif hakkı kapsamındadır. Bir görselin internette herkese açık olması, onu kopyalama ve yeniden dağıtma izni vermez. Ticari kullanım söz konusu olduğunda bu durum gerçek bir risk oluşturur; makine öğrenimi eğitim veri kümeleri için ise bu, hukuki açıdan aktif ve henüz netleşmemiş bir alandır.
Hizmet şartları genellikle veri kazımayı açıkça yasaklar. Hizmet şartlarını ihlal etmek genellikle cezai bir suç değildir, ancak hukuki bir sorun teşkil edebilir ve hesaplarınızın ve IP adreslerinizin engellenmesine yol açabilir. Büyük ölçekte veri kazıması yaptığınız her sitenin hizmet şartlarını okuyun.
AB Yapay Zeka Yasası ve benzeri düzenlemeler, yapay zeka modelleri için eğitim veri kaynaklarının açıklanmasını zorunlu hale getirmeye başlıyor. Makine öğrenimi amacıyla veri topluyorsanız, verilerin nereden geldiğini ve nasıl toplandığını belgelendirin.
Bazı içerikler, teknik erişilebilirlik durumuna bakılmaksızın yasaktır. Kimliği tespit edilebilen özel şahısları, özellikle de reşit olmayanları gösteren görseller kesinlikle kabul edilemez — sayfa herkese açık olsa bile. Gizlilik düzenlemeleri (GDPR, CCPA) geçerlidir.
Pratik bir kural: Eğer veri toplama işleminizi bir hakime ya da sitenin avukatına açıklamaktan utanacak oluyorsanız, bunu yapmayın. Eğer bunu net bir şekilde açıklayabiliyorsanız — “fiyat karşılaştırması amacıyla kamuya açık ürün görsellerini topluyoruz, robots.txt dosyasına uyuyoruz, isteklerimizi hız sınırlamasına tabi tutuyoruz ve kaynakları belirtiriz” — muhtemelen bir sorun yoktur.
Mantıklı bir varsayılan iş akışı
Bugün bir resim kazıma projesine başlıyorsanız ve hangi pakete ihtiyacınız olduğundan emin değilseniz, ölçeklenebilirlik açısından en uygun yol şudur:
- Sayfayı tarayıcının geliştirici araçlarında inceleyin. Görsel URL’lerinin gerçekte nerede bulunduğunu bulun. Statik
src?srcset?data-src? CSS’de arka plan resimleri mi? Bu 10 dakikalık araştırma, ileride saatlerce zaman kazandırır. - Deneyin
wgetya da küçük birrequests + BeautifulSoupönce komut dosyası. Görüntülerde herhangi bir sorun çıkmazsa, işiniz bitti demektir. - JavaScript işleme sırasında sorun çıkarsa Playwright’a geçin. Başsız tarayıcılar daha yavaştır ancak gerçek bir kullanıcının görebileceği her şeyi işleyebilir.
- 403 veya 429 hataları almaya başlarsanız, bir ev tipi proxy katmanı ekleyin. Başlıkları sonsuza dek değiştirerek bot önleme sistemini atlatmaya çalışmayın; bir site IP adresinizi bir kez tespit etti mi, artık tespit edilmiştir.
- Hacim, bu karmaşıklığı haklı kıldığında veri tekilleştirme, yeniden deneme mantığı ve eşzamanlılık özelliklerini ekleyin. Üretim boru hattını ilk günden itibaren kurmayın.
Çoğu görüntü toplama projesi 4. adımın ortasında başarısızlıkla sonuçlanır — bunun nedeni komut dosyası yazmanın zor olması değil, operatörün konut IP’lerinin kullanılması gereken bir durumda veri merkezi IP’lerini kullanmaya çalışması, bu konuda üç gününü boşa harcaması ve sonunda pes etmesidir. Başlangıçtan itibaren doğru altyapıyı seçerseniz, gerisi oldukça basittir.
İşletmenizin gücü, proxy sunucularınızın çalışma süresiyle doğru orantılıdır. Özel hızlar ve sarsılmaz güvenilirlik için kurumsal düzeyde Statik ISP Proxy’lerine geçin. YA DA Dönen Ev Proxy’lerini kullanın ve %99,9’luk veri toplama başarı oranı elde edin.
