Proxy scraper, çeşitli çevrimiçi kaynaklardan herkese açık proxy sunucu adreslerini bulup çıkarmak için tasarlanmış otomatik bir araç ya da betiktir. Bu araçlar; web sitelerini, forumları ve proxy listelerine ayrılmış depoları sistematik olarak tarayarak kullanılabilecek IP adreslerini ve port numaralarını toplar.
Proxy scraping nedir
Proxy scraping, proxy sunucu bilgilerinin — genellikle IP adresleri ve port numaralarının — internetten programatik olarak toplanmasıdır. Temel amaç, belirli görevler için çalışan proxy'lerden oluşan bir liste oluşturmaktır; bu görevler çoğunlukla IP tabanlı kısıtlamaları aşmak, ağ isteklerini dağıtmak veya anonimliği artırmaktır.
Proxy scraper'lar nasıl çalışır
Proxy scraping süreci genellikle şu adımları izler:
- Kaynakların belirlenmesi: Scraper'lar, ücretsiz proxy listeleri yayımladığı bilinen siteleri hedefler. Bunlar proxy listelerine ayrılmış siteler, forumlar, bloglar ya da kullanıcıların proxy bilgisi paylaştığı pastebin benzeri servisler olabilir.
- Veri çekme: Scraper, belirlenen URL'lere HTTP istekleri gönderir.
- İçeriğin ayrıştırılması: Çekilen HTML, JSON veya düz metin içerik, ilgili proxy verilerini çıkarmak için ayrıştırılır. Bu genellikle şunları içerir:
- Düzenli ifadeler: IP adresi ve port numarası biçimlerini bulmak için desen eşleştirme (örneğin
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{2,5}). - HTML ayrıştırıcıları: Document Object Model (DOM) içinde gezinmek ve belirli HTML öğelerinden (örneğin tablo satırları, liste öğeleri) veri çıkarmak için Beautiful Soup (Python) veya Jsoup (Java) gibi kütüphaneler kullanılır.
- API etkileşimleri: Kaynak bir API sunuyorsa, scraper yapılandırılmış veriyi almak için bu API ile etkileşime geçebilir.
- Düzenli ifadeler: IP adresi ve port numarası biçimlerini bulmak için desen eşleştirme (örneğin
- Verinin çıkarılması: Elde edilen IP adresleri ve port numaraları bir listede toplanır.
- Proxy doğrulama: Çıkarılan her proxy genellikle çalışıp çalışmadığı açısından test edilir. Bu doğrulama süreci şunları içerir:
- Bağlantı testi: Proxy üzerinden bilinen ve güvenilir bir uç noktaya (örneğin
http://google.com) bağlantı kurma denemesi. - Hız testi: Proxy'nin yanıt süresinin ölçülmesi.
- Anonimlik kontrolü: Proxy üzerinden erişildiğinde hedef sunucunun döndürdüğü HTTP başlıklarına (örneğin
X-Forwarded-For,Via,Proxy-Connection) bakılarak proxy'nin anonimlik seviyesinin belirlenmesi. - Protokol tespiti: Proxy'nin HTTP, HTTPS, SOCKS4 veya SOCKS5 desteklediğinin belirlenmesi.
- Bağlantı testi: Proxy üzerinden bilinen ve güvenilir bir uç noktaya (örneğin
- Liste yönetimi: Çalışan ve doğrulanmış proxy'ler, çoğu zaman hız, anonimlik seviyesi ve son doğrulama zamanı gibi meta verilerle birlikte saklanır.
Toplanan proxy türleri
Proxy scraper'lar çeşitli proxy türlerini bulabilir:
- HTTP/HTTPS proxy'leri: En yaygın olanlar; web'de gezinme ve HTTP/HTTPS istekleri için kullanılır.
- SOCKS4/SOCKS5 proxy'leri: Daha esnektir, HTTP/HTTPS dışındaki çeşitli ağ protokollerini de destekler. SOCKS5 ayrıca UDP desteği ve kimlik doğrulama sunar.
- Şeffaf proxy'ler: Kullanıcının gerçek IP adresini açığa çıkarır. Hiç anonimlik sağlamaz.
- Anonim proxy'ler: Kullanıcının gerçek IP adresini gizler ancak proxy kullanıldığını belirten başlıklar ekleyebilir.
- Elite proxy'ler (yüksek anonimlik): Kullanıcının gerçek IP adresini gizler ve kullanıcıyı proxy kullanıcısı olarak tanımlayan hiçbir başlık eklemez.
Toplanan proxy'lerin zorlukları ve sınırları
Toplanmış proxy listelerine güvenmek ciddi operasyonel ve güvenlik sorunları doğurur:
- Düşük güvenilirlik ve uptime: Herkese açık proxy'ler çoğunlukla geçicidir, aşırı yüklüdür veya hızla engellenir. Uptime değerleri genelde düşüktür; bu da sık bağlantı hatalarına ve görevlerin yarıda kesilmesine yol açar.
- Değişken performans: Toplanan proxy'ler ağ tıkanıklığı, sunucu yükü ve coğrafi mesafe nedeniyle tutarsız hızlar gösterir. Bu öngörülemezlik, istikrarlı performans gerektiren işleri sekteye uğratır.
- Güvenlik riskleri:
- Veri ele geçirme: Herkese açık proxy'ler çoğu zaman kimliği bilinmeyen kişilerce işletilir; bu kişiler üzerlerinden geçen trafiği kaydedebilir, izleyebilir, hatta değiştirebilir. Bu da hassas veriler için risktir.
- Zararlı yazılım dağıtımı: Bazı kötü niyetli proxy'ler web trafiğine zararlı yazılım veya istenmeyen reklam enjekte edebilir.
- IP kara listesi: Genel listelerdeki IP'ler sıklıkla kötüye kullanımla ilişkilendirilir ve hedef siteler tarafından yaygın biçimde kara listeye alınır.
- Sınırlı anonimlik: Herkese açık proxy'lerin çoğu şeffaftır ya da en iyi ihtimalle anonimdir; hassas işlemler için gereken yüksek anonimlik seviyesini sağlayamaz. Elite proxy'ler genel listelerde nadirdir ve kısa ömürlüdür.
- Coğrafi kısıtlar: Toplanan listelerde çoğunlukla belirli bir coğrafi hedefleme veya geniş bir konum çeşitliliği bulunmaz.
- Bakım yükü: Genel kaynaklardan sürekli proxy toplamak, doğrulamak ve rotasyona sokmak, kullanılabilir bir havuzu ayakta tutmak için ciddi emek ve altyapı gerektirir.
Basit bir proxy scraper yazmak (örnek)
Basit bir proxy scraper, HTTP istekleri için requests ve HTML ayrıştırma için BeautifulSoup gibi kütüphanelerle Python'da yazılabilir.
import requests
from bs4 import BeautifulSoup
import re
def scrape_proxies(url):
"""
Verilen URL'de IP:Port proxy desenlerini tarar.
"""
proxies = []
try:
response = requests.get(url, timeout=10)
response.raise_for_status() # HTTP hatalarında istisna fırlatır
soup = BeautifulSoup(response.text, 'html.parser')
# Örnek: IP:Port desenine uyan tüm metni bul
# Bu çok temel bir yaklaşımdır ve sitenin HTML yapısına
# göre uyarlama gerektirebilir.
ip_port_pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{2,5}'
found_matches = re.findall(ip_port_pattern, soup.get_text())
for match in found_matches:
proxies.append(match)
except requests.exceptions.RequestException as e:
print(f"Error scraping {url}: {e}")
return proxies
def validate_proxy(proxy_address):
"""
Bir test URL'sine bağlanarak proxy'nin çalışıp çalışmadığını doğrular.
Çalışıyorsa True, aksi halde False döner.
"""
proxies = {
'http': f'http://{proxy_address}',
'https': f'http://{proxy_address}' # Proxy yalnızca http CONNECT destekliyorsa https için de http kullanın
}
test_url = 'http://httpbin.org/ip' # İstemci IP'sini döndüren basit bir servis
try:
response = requests.get(test_url, proxies=proxies, timeout=5)
response.raise_for_status()
# İsteğe bağlı: dönen IP'nin proxy'nin IP'si olup olmadığını kontrol edin
# Bunun için httpbin.org/ip yanıtını ayrıştırmak gerekir
return True
except requests.exceptions.RequestException:
return False
if __name__ == "__main__":
target_url = "http://www.freeproxylists.net/" # Örnek URL (değişebilir veya engellenebilir)
print(f"Attempting to scrape proxies from: {target_url}")
raw_proxies = scrape_proxies(target_url)
print(f"Found {len(raw_proxies)} potential proxies. Starting validation...")
functional_proxies = []
for proxy in raw_proxies:
if validate_proxy(proxy):
functional_proxies.append(proxy)
print(f"Validated: {proxy}")
else:
print(f"Failed: {proxy}")
print(f"\nTotal functional proxies found: {len(functional_proxies)}")
for p in functional_proxies:
print(p)
Not: Örnekteki target_url yalnızca göstermelik. Herkese açık proxy listesi siteleri yapılarını sık sık değiştirir veya otomatik erişimi engeller; bu da scraping mantığının sürekli uyarlanmasını gerektirir.
Karşılaştırma: toplanan proxy'ler ile ticari proxy servisleri
| Özellik | Toplanan proxy'ler (genel) | Ticari proxy servisleri (örneğin sizin servisiniz) |
|---|---|---|
| Güvenilirlik | Çok düşük, yüksek hata oranı, öngörülemez uptime. | Yüksek, garantili uptime, sağlam altyapı. |
| Hız | Çok değişken, sık sık yavaş ve tutarsız. | Hızlı, tutarlı, performans için optimize edilmiş. |
| Anonimlik | Genelde şeffaf ya da anonim; elite proxy nadirdir. | Yüksek anonimlik (elite/özel); gerçek IP tamamen gizlenir. |
| Güvenlik | Veri ele geçirme, zararlı yazılım, kayıt riski yüksek. | Güvenli, şifreli bağlantılar, kullanıcı etkinliğinin kaydı tutulmaz. |
| IP havuzu | Sınırlı, sürekli değişken, yüksek IP tekrar kullanımı. | Geniş ve çeşitli IP havuzları (veri merkezi, residential, mobil). |
| Coğrafya | Sınırlı kontrol, çoğunlukla birkaç bölgede yoğunlaşır. | Geniş küresel kapsama, ayrıntılı coğrafi hedefleme seçenekleri. |
| Protokol desteği | HTTP/HTTPS yaygın, SOCKS daha az güvenilir. | HTTP, HTTPS, SOCKS4, SOCKS5 için tam destek. |
| Kimlik doğrulama | Nadiren mevcut. | Kullanıcı adı/parola doğrulaması, IP beyaz listesi. |
| Destek | Yok. | Özel teknik destek, dokümantasyon, API'ler. |
| Maliyet | Ücretsiz (ama zaman ve hatalarda yüksek gizli maliyet). | Abonelik bazlı, şeffaf fiyatlandırma, güvenilirlik karşılığı değer. |
| Etik/hukuki | Çoğu zaman site ToS ihlali, hukuken tartışmalı. | Meşru, veri koruma mevzuatına uygun. |
Toplanan proxy'ler ne zaman kullanılır (ne zaman kullanılmaz)
Uygun kullanım senaryoları (sınırlı)
- Öğrenme ve deneme: Proxy kavramlarını anlamak veya kritik veri olmadan temel ağ betiklerini test etmek için.
- Kritik olmayan, düşük hacimli işler: Ara sıra başarısızlığın kabul edilebilir olduğu ve performansın önemsiz olduğu çok basit, hassas olmayan görevler.
- Tek kullanımlık işlemler: Proxy'nin bir kez kullanılıp atıldığı ve güvenlik açısından sonucu olmayan görevler.
Uygun olmayan kullanım senaryoları
- Üretim ortamları: Tutarlı uptime, performans veya güvenilirlik gerektiren her senaryo.
- Hassas veri işleme: Güvenlik riskleri nedeniyle hesaplara, finansal verilere veya kişisel bilgilere erişim.
- Yüksek hacimli web scraping: Tutarsız performans ve sık IP yasakları, toplanan proxy'leri büyük ölçekli veri toplama için elverişsiz kılar.
- SEO takibi / sıralama izleme: Güvenilmez bağlantılar ve olası kara liste nedeniyle hatalı veri.
- Reklam doğrulama: Doğruluk ve güvenlik zedelenir.
- Marka koruma: Fikri mülkiyet takibi için etkisiz ve riskli.
- Coğrafi kısıtlı içeriğe erişim: Tutarsız coğrafi kullanılabilirlik ve güvenilirlik.
Etik ve hukuki değerlendirmeler
Proxy scraping, özellikle genel listelerden yapıldığında, etik ve hukuk açısından gri bir alanda durur.
- Hizmet Şartları (ToS) ihlalleri: Birçok site içeriğinin otomatik olarak scrape edilmesini açıkça yasaklar. ToS ihlali IP yasağına veya hukuki işleme yol açabilir.
- Veri gizliliği: Toplanan bir proxy kişisel verilere erişmek için kullanılırsa, yargı bölgesine ve veri türüne bağlı olarak veri koruma mevzuatı (örneğin GDPR, CCPA) kapsamına girebilir.
- Kaynak tüketimi: Agresif scraping hedef sunucuları aşırı yükleyebilir ve bir hizmet reddi saldırısı niteliği taşıyabilir.
- Telif hakkı: Telif hakkıyla korunan materyali — proxy listeleri dahil — izinsiz toplayıp yeniden dağıtmak ihlal iddialarına yol açabilir.
Proxy scraping ile uğraşan kullanıcılar bu riskleri anlamalı ve yaptıklarının sonuçlarını değerlendirmelidir. Güvenilir, güvenli ve etik kaynaklı proxy çözümleri için ticari proxy servisleri sağlam bir alternatif sunar.
