Scraping Sırasında Tespiti Nasıl Azaltırsınız: Kapsamlı Rehber

Web scraping yaparken algılamadan kaçınmak için kapsamlı bir çok katmanlı kılavuz - IP rotasyonunu, HTTP başlıklarını, TLS parmak izlerini, tarayıcı parmak izlerini, davranışsal kalıpları ve oturum yönetimi.

Scraping Sırasında Tespiti Nasıl Azaltırsınız: Kapsamlı Rehber

Neden Tespit Ne Olur?

Web scraping algılaması çok katmanlı bir süreçtir. Anti-bot sistemleri tek bir sinyale güvenmez - IP itibarı, HTTP başlıkları birleştirir, TLS parmak izi, tarayıcı parmak izleriRisk puanını hesaplamak için davranışsal analiz. Bu puan bir eşiği aştığında, bir CAPTCHA'ya veya yanıltıcı verilere hizmet ettiniz.

Bu kılavuz, tüm katmanlarda algılamayı azaltmak için kapsamlı bir yaklaşım sağlar. Bu sistemlerin nasıl çalıştığına dair bir bakış için, piller makalemizi inceler Anti-bot sistemlerinin nasıl algılandığını nasıl algılar.

Katman 1: IP Reputasyon ve Proxy Selection

IP adresiniziz bir sunucunun gördüğü ilk şeydir. Anti-bot sistemleri, IP adreslerini tip, tarih ve davranışlarla alan veritabanıları korur.

Proxy Type Selection

Proxy Type Selection
Proxy TypeTespit RiskiEn iyisi için
Konut Konut Konut KonutLow Low Low LowÇoğu hurda görevi, korunan siteleri
ISS (Stat Konutu)Low-MediumUzun seanslar, hesaplar
DatacenterYüksek Yüksek Yüksek Yüksek YüksekKorumasız siteler, yüksek hacimli görevler
Mobile Mobile MobileÇok düşükEn yüksek koruma siteleri, sosyal medya

Çoğu kazı projesi için, ProxyHat'ın konut temsilcileri Düşük algılama riskinin ve maliyet verimliliğinin en iyi dengesi sunar. Detaylı bilgimizi gör Karşılaştırma türü karşılaştırma türü Rehberlik için.

IP Rotation Strategy

# Python: Rotating proxy per request using ProxyHat
import requests
proxy_url = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
proxies = {
    "http": proxy_url,
    "https": proxy_url
}
# Each request through the gateway gets a different IP
for url in urls_to_scrape:
    response = requests.get(url, proxies=proxies, timeout=30)
    process(response)
  • İstek başına Rotate Liste sayfaları ve arama sonuçları için.
  • Dikkatli seanslar Çok sayfa akışları (pagination, login dizileri).
  • Geo-target your IPs Sitenin beklenen seyirciyi eşleştirmek için ProxyHat'ın konumu.

Katman 2: HTTP Headers

Incorrect veya eksik HTTP başlıkları, anti-bot sistemlerinin tespit edilmesi için en kolay sinyallerin biridir. Gerçek bir tarayıcı belirli bir sırayla 15-20 başlık gönderir; varsayılan bir Python senaryosu 3-4 gönderir.

Essential Headers

# Python: Realistic header set
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept-Encoding": "gzip, deflate, br, zstd",
    "Cache-Control": "max-age=0",
    "Sec-Ch-Ua": '"Chromium";v="131", "Not_A Brand";v="24"',
    "Sec-Ch-Ua-Mobile": "?0",
    "Sec-Ch-Ua-Platform": '"Windows"',
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "none",
    "Sec-Fetch-User": "?1",
    "Upgrade-Insecure-Requests": "1",
    "Connection": "keep-alive"
}
response = requests.get(url, headers=headers, proxies=proxies)

Header Consistency Kuralları

  • Match Sec-Ch-Ua with User-Agent: Chrome 131'i iddia ederseniz, your Sec-Ch-Ua Referans sürüm 131 olmalıdır.
  • Tüm Sec-Fetch başlıklarını ekleyin: Modern Chrome bunları her navigasyonda gönderir. Onları kaçırmak güçlü bir bot sinyalidir.
  • Proxy geo'yu eşleştirmek için kabul et: A US with proxy Accept-Language: ja-JP şüphelidir.
  • Başlık: Bazı anti-bot sistemleri üst sırayı kontrol eder. Ekleksiyon siparişini koruyan kütüphaneleri kullanın.

Katman 3: TLS ve HTTP/2 Parmak

HTTP müşteri kütüphaneniz eşsiz bir kütüphane üretir TLS parmak izi Bu anti-bot sistemleri, iddia edilen kullanıcı tarafından kontrol edilir. Bir Python TLS parmak izi ile bir Chrome kullanıcısı hemen bayraklı.

Language

Language
Dil DiliTemsil KütüphanesiTespit RiskiBrowser-Grade Alternatif
Python Pythonİstek/urllib3Çok yüksekcurl cffi with im personate
Hayıraxios /gotYüksek Yüksek Yüksek Yüksek Yüksekgot-scraping
Go Go Go Gonet/httpsÇok yüksekuTLS + özel ulaşım
# Python: Browser-grade TLS with curl_cffi
from curl_cffi import requests as curl_requests
response = curl_requests.get(
    "https://example.com",
    impersonate="chrome",
    proxies={
        "http": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080",
        "https": "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
    }
)

Katman 4: Browser Parmak

Başsız bir tarayıcı kullanıyorsanız, anti-bot JavaScript Pros your Tarayıcı parmak izi - Blood, WebGL, AudioContext, navigator özellikleri. Anahtar prensibi içsel tutarlılıktır:

  • Tüm parmak izi sinyalleri birbirleriyle aynı fikirde olmalıdır
  • Parmaklar kullanıcı-agent iddialarınızla eşleşmelidir
  • Parmaklar değişkenleri döndüğünüzde değişmeli

Stealth Build

// Node.js: Puppeteer with stealth and proxy
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({
  headless: 'new',
  args: [
    '--proxy-server=http://gate.proxyhat.com:8080',
    '--disable-blink-features=AutomationControlled',
    '--window-size=1920,1080'
  ]
});
const page = await browser.newPage();
await page.authenticate({
  username: 'USERNAME',
  password: 'PASSWORD'
});
await page.setViewport({ width: 1920, height: 1080 });

Katman 5: Davranışlı Desenler

Mükemmel teknik mimikry ile bile, bot benzeri davranış kalıpları algılamayı tetikleyecek. Anti-bot sistemleri zamanlama, navigasyon kalıpları ve etkileşim imzalarını analiz eder.

İste Timing

  • rastgele gecikmeler ekleyin: İnsanlar tam aralıklarda talep yapmazlar. İstekler arasında rastgele gecikmenin 1-5 saniyesini ekleyin.
  • Sayfa türünde Vary gecikmeleri: İçerik sayfaları liste sayfalarından daha uzun "okuma" duraklarını hak ediyor.
  • Patlama desenlerinden kaçının: Daha sonra 50 hızlı istek yapmayın. Dağcılık, doğal değişkenlerle bile talep eder.
# Python: Natural request timing
import time
import random
def scrape_with_natural_timing(urls, proxies):
    for url in urls:
        response = requests.get(url, proxies=proxies, headers=headers)
        process(response)
        # Random delay: 1-4 seconds with normal distribution
        delay = max(0.5, random.gauss(2.5, 0.8))
        time.sleep(delay)

Navigation Desenleri

  • Doğal yolları takip edin: İlk önce ana sayfayı ziyaret edin, sonra ayrıntılı sayfalar - doğrudan derin URL'lere atlamak değil.
  • Doğru Refererer Başlıkları Oluşturun: Her sayfa önceki sayfayı referansçı olarak göndermelidir.
  • Yavaş yönlendirmeler: HTTP yönlendirmelerini doğal olarak orijinal URL'yi yeniden denemek yerine takip edin.

Oturum Yönetimi

  • Kurabiye kavanozlarını koruyun: Bir oturumda kurabiye kabul edin ve geri dönün - tüm kurabiyeleri silmek bir bot sinyalidir.
  • Limit seans uzunluğu: 50-100 isteğinden sonra, taze bir IP ve kurabiye ile yeni bir seans başlayın.
  • Saygı oranı sınırları: 429 yanıt alırsanız, hemen yeniden denemeden daha üst üste geri dönün.

Katman 6: Yanıt Geçerliliği

Tespit her zaman bir blokta sonuçlanmaz. Siteler farklı içeriğe hizmet edebilir, yanıltıcı verileri enjekte edebilir veya yumuşak bloklar döndürür. Her zaman cevaplarınızı doğrulayın:

  • Check durum kodları: 200 her zaman başarı anlamına gelmez - bazı siteler CAPTCHA sayfaları veya boş içerik ile 200 geri döner.
  • Geçerli içerik yapısı: Cevabın beklenen elementler (ürün fiyatları, makale metni vs.) içerdiğinden emin olun.
  • Balpots için monitör: Otomatik taramacılar yakalamak için tasarlanmış gizli bağlantılar veya form alanları.
  • Başarı oranları: Başarı oranı %90'ın altına düşerse, bir şey değişti ve soruşturmaya ihtiyaç duyuyor.

Kapsamlı Anti-Detection Checklist

Kapsamlı Anti-Detection Checklist
KatmanEylemÖncelik
IP IP IP IPgeo-targeting ile konut referansları kullanınEleştirel eleştirel
IP IP IP IPTalep veya oturum açma IP'lerEleştirel eleştirel
HeadersTamam, gerçekçi başlık setleriEleştirel eleştirel
HeadersMatch Kabul-Elimi proxy konumu içinYüksek Yüksek Yüksek Yüksek Yüksek
TLSTarayıcı-grad TLS kütüphanesiEleştirel eleştirel
TLSBağlantı TLS parmak izi tarayıcıyaEleştirel eleştirel
Browser BrowserBaşsız tarayıcılar için Stealth eklentileri kullanınYüksek Yüksek Yüksek Yüksek Yüksek
Browser BrowserSürekli parmak izi profillerini koruyunYüksek Yüksek Yüksek Yüksek Yüksek
Davranış Davranışİstekler arasında rastgele gecikmeler ekleyinYüksek Yüksek Yüksek Yüksek Yüksek
Davranış DavranışDoğal navigasyon yollarını takip etMedium Medium Medium Medium Medium
Davranış Davranışseanslar içinde kurabiyeleri koruyunMedium Medium Medium Medium Medium
GeçerlilikYanıt içeriğini kontrol edin, sadece durum kodları değilYüksek Yüksek Yüksek Yüksek Yüksek

Örnek: Full Anti-Detection Boater

# Python: Complete anti-detection scraper setup
from curl_cffi import requests as curl_requests
import time
import random
class StealthScraper:
    def __init__(self, proxy_user, proxy_pass):
        self.proxy = f"http://{proxy_user}:{proxy_pass}@gate.proxyhat.com:8080"
        self.session = curl_requests.Session(impersonate="chrome")
        self.session.proxies = {
            "http": self.proxy,
            "https": self.proxy
        }
        self.request_count = 0
    def get(self, url, referer=None):
        headers = {}
        if referer:
            headers["Referer"] = referer
        response = self.session.get(url, headers=headers, timeout=30)
        self.request_count += 1
        # Rotate session every 50-80 requests
        if self.request_count >= random.randint(50, 80):
            self._rotate_session()
        # Natural delay
        time.sleep(max(0.5, random.gauss(2.0, 0.6)))
        return response
    def _rotate_session(self):
        self.session = curl_requests.Session(impersonate="chrome")
        self.session.proxies = {
            "http": self.proxy,
            "https": self.proxy
        }
        self.request_count = 0
# Usage
scraper = StealthScraper("USERNAME", "PASSWORD")
home = scraper.get("https://example.com")
listing = scraper.get("https://example.com/products", referer="https://example.com")
detail = scraper.get("https://example.com/products/123", referer="https://example.com/products")

When to Escalate Your Approach

En basit yaklaşımla başlayın ve sadece gerektiğinde yükselir:

  1. Seviye 1 – HTTP istemcisi + Başlıklar +: Çoğu site için çalışır. Use Use Use Use Use Use curl_cffi veya got-scraping ile birlikte ProxyHat proxy.
  2. 2. Seviye - Tarayıcı-grad TLS ekleyin: Site JA3/JA4 parmak izlerini kontrol ettiğinde gerekli.
  3. 3. Seviye - Headless browser + Playth: JavaScript-rendered içerik ve sofistike anti-bot sistemleri için gerekli.
  4. Seviye 4 - davranışsal mimikry ile tam tarayıcı otomasyonu: En korunan siteler için (Cloudflare Enterprise, PerimeterX vs.).

Belirli dillerde uygulama modelleri için, rehberlerimize bakınız: Python Python, HayırVe Go Go Go Go.

Etik Kılavuzlar

Anti-deteksiyon teknikleri araçlardır - etik kullanımları bağlama bağlıdır. Her zaman:

  • Saygı robotlar.txt ve hizmet koşulları
  • Sadece halka açık mevcut veriler
  • Limit talep oranları sunucu etkisinden kaçınmak için
  • Veri koruma düzenlemeleri ile (GDPR, CCPA)
  • Use Use Use Use Use Use Etik kazı uygulamaları Senin temelin
Anti-deteksiyon amacı meşru güvenliği atlamak değildir. Otomatik erişiminizin halka açık veriye erişiminizin kötü bir şekilde bayraklandırılmasını sağlamaktır.

Sık Sorulan Sorular

Başlamaya hazır mısınız?

148+ ülkede 50M+ konut IP'sine AI destekli filtreleme ile erişin.

Fiyatlandırmayı GörüntüleKonut Proxy'leri
← Bloga Dön