JavaScript ve Tarama Karşıtı Önlemleri Ele Alma
JS ile oluşturulan içerik ve istek hızı sınırlaması için Playwright/Selenium kullanın.
JavaScript ve Tarama Karşıtı Önlemleri Ele Alma, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
JavaScript Neden Önemlidir
Modern web siteleri, sayfa yüklendikten sonra içeriği JavaScript ile oluşturur. requests+BS4 gibi statik HTML kazıyıcıları, oluşturulmuş DOM'u değil, yalnızca iskeleti görür.
# Static scraper sees:
# <div id="app"></div>
# Rendered page has:
# <div id="app">
# <h1>Product List</h1>
# <ul>... dynamically loaded items ...</ul>
# </div>Python için Playwright
Playwright gerçek bir tarayıcıyı (Chromium, Firefox, WebKit) programlı olarak denetler. İçeriği çıkarmadan önce JavaScript'in çalışmasını bekler.
# pip install playwright
# playwright install
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://example.com")
title = await page.inner_text("h1")
print(title)
await browser.close()
asyncio.run(main())Öğeleri Bekleme
Veri çıkarmadan önce DOM'da bir öğe görünene kadar beklemek için page.wait_for_selector() kullanın.
from playwright.async_api import async_playwright
import asyncio
async def scrape():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://spa-example.com")
await page.wait_for_selector(".product-list")
items = await page.query_selector_all(".product-item")
texts = [await i.inner_text() for i in items]Selenium
Selenium, daha eski bir tarayıcı otomasyonu kitaplığıdır. Daha iyi asenkron desteği ve hızı nedeniyle yeni projelerde Playwright tercih edilir.
# pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://example.com")
elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "h1"))
)
print(elem.text)
driver.quit()Başsız Mod
Sunucu tarafında kazıma yapmak için tarayıcıları başsız modda (görünür bir pencere olmadan) çalıştırın.
from playwright.async_api import async_playwright
import asyncio
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True) # no window
page = await browser.new_page()
await page.goto("https://example.com")
html = await page.content()
await browser.close()Ağ İsteklerini Yakalama
Playwright, ağ isteklerini yakalayıp mock'layabilir; bu özellik reklamları ve izleyicileri engellemek veya API yanıtlarını doğrudan yakalamak için kullanışlıdır.
from playwright.async_api import async_playwright
import asyncio
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.route("**/*.{png,jpg,css}", lambda route: route.abort())
await page.goto("https://example.com") # loads 3x fasterİstek Hızı Sınırlama ve Gecikmeler
İnsan davranışını taklit edin: istekler arasına rastgele gecikmeler ekleyin ve bot karşıtı sistemleri tetiklememek için hızı sınırlayın.
import time, random
def polite_scrape(urls):
for url in urls:
fetch(url)
time.sleep(random.uniform(1, 3)) # 1-3 s random delayKullanıcı Aracısı Döndürme
Varsayılan kazıyıcı UA'sına göre engellenmekten kaçınmak için Kullanıcı Aracısı dizelerini değiştirerek kullanın.
import requests, random
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
]
def fetch(url):
return requests.get(url, headers={"User-Agent": random.choice(USER_AGENTS)})Çerezler ve Oturumlar
İstekler arasında oturumun açık kalmasını sağlamak için oturum çerezlerini koruyun. Hem requests Session hem de Playwright çerezleri otomatik olarak yönetir.
import requests
with requests.Session() as s:
s.post("https://example.com/login", data={"user":"me","pass":"pw"})
# session cookie kept automatically:
dashboard = s.get("https://example.com/dashboard")CAPTCHA ve Hukuki Hususlar
CAPTCHA'lar bot karşıtı önlemlerdir. Bunları programlı olarak çözmek (2captcha, anti-captcha) teknik açıdan mümkün olsa da etik ve hukuki kaygılar doğurur. Kazıma yapmadan önce sitenin robots.txt dosyasını ve Hizmet Koşulları'nı mutlaka inceleyin.
# Before scraping:
# 1. Check robots.txt: https://example.com/robots.txt
# 2. Review the Terms of Service for "scraping" or "automated access" clauses
# 3. Only scrape public data
# 4. Honour Crawl-delay directives
# 5. Cache responses to avoid repeated hitsPlaywright ile Ekran Görüntüsü ve PDF
Playwright, sayfaların ekran görüntüsünü alabilir veya sayfaları PDF olarak yazdırabilir; bu özellik görsel testler ve arşivleme için kullanışlıdır.
from playwright.async_api import async_playwright
import asyncio
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://example.com")
await page.screenshot(path="page.png", full_page=True)
await page.pdf(path="page.pdf")
await browser.close()Hızlı Kontrol
requests + BeautifulSoup neden birçok modern web sitesinde başarısız olur?
Özet
JavaScript ile oluşturulan sayfalar için Playwright veya Selenium kullanın. Sunucularda başsız modda çalıştırın. Engellenmekten kaçınmak için gecikmeler ekleyin ve Kullanıcı Aracılarını döndürün. İzleyicileri engellemek için ağ isteklerini yakalayın. robots.txt dosyasına ve Hizmet Koşulları'na her zaman uyun.
Sıkça Sorulan Sorular
“JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersi ücretsiz mi?
Evet — “JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersinde ne öğreneceğim?
JS ile oluşturulan içerik ve istek hızı sınırlaması için Playwright/Selenium kullanın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- requests ve httpx ile HTTP İstekleri
- BeautifulSoup ile HTML Ayrıştırma
- Scrapy Örümceği Oluşturma
- JavaScript ve Tarama Karşıtı Önlemleri Ele Alma