KYC olmadan — kimlik, selfie veya belge istemez. Kripto ile ödeyin: BTC, USDT, USDC, ETH, SOL, LTC
Dil: Türkçe
Başlayın

Dokümantasyon · Playwright · Chromium, Firefox, WebKit

Döner konut IP'li Playwright proxy kurulumu (Python ve Node.js)

Başlatmada tarayıcı başına veya her bağlam için bir ülke veya yapışkan oturum başına bir çıkış için konut proxy verin. Ardından ihtiyacınız olmayan trafiği engelleyerek kesin.

Son güncelleme: · 4 dk okuma

Hızlı cevap

Playwright'te kimlik doğrulamalı proxyyi nasıl kullanırım?

launch() veya new_context()'a server, username ve password içeren bir proxy nesnesi geçirin: server http://gw.crawlrelay.com:7777'dir ve kimlik bilgileri kendi alanlarına girilir, asla sunucu URL'sine değil. CrawlRelay konut proxy'lerinde, her bağlam için kendi çıkışını vermek adına kullanıcı adına ülke ve oturum kimliği koyun. Trafik ücreti $0,50/GB'den 50 GB ile başlar. KYC olmadan kripto ile ödenir.

Playwright kurulumu hızlı bakış

Proxy seçeneği{"server": "http://gw.crawlrelay.com:7777", "username": ..., "password": ...}
NeredeTüm tarayıcı için launch(proxy=...) veya her bağlam için new_context(proxy=...)
PortHTTP portu 7777; HTTPS siteleri CONNECT üzerinden gider
SOCKS5Chromium SOCKS5 kimlik doğrulamayı desteklemez: HTTP portunu kullanın
Her bağlam için tek IPBağlamın kullanıcı adında -session-<id>-ttl-<minutes>
Tipik sayfa maliyetiHer kaynağın dahil olduğu yaklaşık 2 MB; görüntüler, fontlar ve medya engellendiğinde birkaç yüz KB

Her tarayıcı bağlamına nasıl kendi ülkesini veya oturumunu veririm?

Ülke veya yapışkan oturum başına bir bağlam oluşturun. Bağlamlar, tarayıcılara göre ucuzdur ve her biri kendi çerezleri, depolaması ve proxy kimlik bilgilerini tutar. Bağlamın yolunu çıkış ülkesine eşleştirerek siteye tutarlı bir ziyaretçi gösterin.

Python (senkron API): ülke başına bir bağlam
from playwright.sync_api import sync_playwright

GATEWAY = "http://gw.crawlrelay.com:7777"
LOCALES = {"us": "en-US", "de": "de-DE", "jp": "ja-JP"}

with sync_playwright() as p:
    browser = p.chromium.launch()
    for country, locale in LOCALES.items():
        context = browser.new_context(
            proxy={"server": GATEWAY, "username": "USERNAME-country-%s" % country, "password": "PASSWORD"},
            locale=locale,
        )
        page = context.new_page()
        page.goto("https://api.ipify.org", wait_until="domcontentloaded")
        print(country, page.inner_text("body"))
        context.close()
    browser.close()

Node.js için Playwright'te proxy'i nasıl ayarlar ve trafiği nasıl keserim?

Seçenek Node.js'te de aynı biçimdedir. Render edilen bir sayfanın ağırlığının çoğu görüntüler, fontlar ve medyadır: HTTP Archive Web Almanac 2025'e göre mobilde ortalama sayfa ağırlığı 2.164 KB'dir. Sadece metin ve bağlantılara ihtiyacınız varsa, bu istekleri route handler'da iptal edin.

Node.js: başlatmada yapışkan oturum, ağır kaynaklar engellendi
import { chromium } from "playwright";

const browser = await chromium.launch({
  proxy: {
    server: "http://gw.crawlrelay.com:7777",
    username: "USERNAME-country-us-session-pw1-ttl-30",
    password: "PASSWORD",
  },
});
const context = await browser.newContext();
// Images, fonts and media are most of a page's bytes
await context.route("**/*", (route) =>
  ["image", "font", "media"].includes(route.request().resourceType()) ? route.abort() : route.continue()
);
const page = await context.newPage();
const response = await page.goto("https://example.com/", { waitUntil: "domcontentloaded" });
console.log(response.status(), await page.title());
await browser.close();

asyncio ile çok sayıda sayfayı paralel çalıştırmayı nasıl yaparım?

Sabit bir bağlam havuzu ile async API kullanın. Her bağlam ömrü boyunca bir yapışkan oturumu tutar, böylece site her istekte bir IP yerine birkaç stabil ziyaretçi görür. Belirli sayıda sayfadan veya hata sonrası yeni oturum kimliği ile bağlamı döngüye alın.

Python (async API): yapışkan bağlam havuzu
import asyncio
import uuid

from playwright.async_api import async_playwright

GATEWAY = "http://gw.crawlrelay.com:7777"
WORKERS = 4


async def worker(browser, queue):
    session = uuid.uuid4().hex[:10]
    context = await browser.new_context(proxy={
        "server": GATEWAY,
        "username": "USERNAME-country-us-session-%s-ttl-30" % session,
        "password": "PASSWORD",
    })
    page = await context.new_page()
    while not queue.empty():
        url = await queue.get()
        try:
            response = await page.goto(url, wait_until="domcontentloaded", timeout=45000)
            print(session, url, response.status if response else None)
        except Exception as exc:  # timeouts and network errors: log and move on
            print(session, url, type(exc).__name__)
        finally:
            queue.task_done()
    await context.close()


async def main(urls):
    queue = asyncio.Queue()
    for url in urls:
        queue.put_nowait(url)
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        await asyncio.gather(*(worker(browser, queue) for _ in range(WORKERS)))
        await browser.close()


asyncio.run(main(["https://example.com/", "https://example.org/"]))

Neden ERR_TUNNEL_CONNECTION_FAILED veya ERR_PROXY_CONNECTION_FAILED alıyorum?

  • net::ERR_TUNNEL_CONNECTION_FAILED, proxy'nin CONNECT isteğini kabul etmediği anlamına gelir. Genellikle kimlik bilgileri server içinde yazılırken username ve password yerine oraya yazıldığı için Chromium hiç göndermedi. Tünel hatasına bakın.
  • net::ERR_PROXY_CONNECTION_FAILED, tarayıcının gateway'e ulaşamadığı anlamına gelir: host veya port yazım hatası ya da portu engelleyen bir ağ sorunu vardır. Proxy bağlantı hatasına bakın.
  • goto üzerinde Zaman aşımı 30000ms aşıldı genellikle load veya networkidle yüklendiği için ve yüklemeye devam eden takipçileri beklediğiniz anlamına gelir. Önce domcontentloaded sonra da gereken seçiciyi bekleyin.

Playwright scraper ne yapmamalı?

Playwright'i JavaScript gerektiren herkese açık sayfaları render etmek için kullanın, kişileri taklit etmek için değil. CrawlRelay'in Uygun Kullanım Politikası, tarayıcıları gateway üzerinden toplu hesap oluşturmak, hesapları ele geçirmek, CAPTCHA'ları otomatik çözmek ya da sitenin bilinçli engellerini atlatmak için kullanmayı yasaklar. Stealth eklentileri veya parmak izi sahtekarlığı dokümante etmiyoruz. Bir site tarayıcınızı zorladığında yavaşlayın, robots.txt ve kullanım şartlarını kontrol edin, erişim isteyin ya da API'sini kullanın.

Playwright ve proxyler: sorular

Her Playwright bağlamı için farklı proxy kullanabilir miyim?

Evet. Python'da proxy'ı browser.new_context()'a veya Node.js'te browser.newContext()'ye geçirin. Her bağlam kendi çıkışına, çerezlerine ve depolamasına sahip olur. Çok eski Playwright sürümleri Windows'ta başlatmada proxy isterdi; hata alırsanız, her hangi bir yer tutucu proxy ile başlatıp gerçek proxyyi bağlam başına ayarlayın.

Playwright SOCKS5 kimlik doğrulamalı proxyleri destekliyor mu?

Chromium desteklemez, çünkü SOCKS5 kullanıcı adı ve şifre kimlik doğrulamasını desteklemez. Gateway'nin HTTP portunu (7777) kullanın: HTTPS sitelerini CONNECT tünelleriyle işler ve Playwright'ın çalıştırdığı her tarayıcı motorunda kullanıcı adı ve şifreyi destekler.

Playwright sayfasının kullandığı IP ve ülkeyi nasıl kontrol ederim?

Hedefinizden önce aynı bağlamda https://api.ipify.org'ı açıp gövde metnini okuyun, ilk örnekteki gibi. Unutmayın, yapışkan oturum o IP'yi sadece konut cihazı çevrimiçi kaldığı sürece korur; değişiklikleri görebilmek için her bağlam başında IP'yi kaydedin.

Bir Playwright sayfası proxy üzerinden ne kadar trafik kullanır?

Hepsi faturalandırılır: HTML, scriptler, stiller, görüntüler, fontlar ve API çağrıları. Ortalama tam sayfa yaklaşık 2 MB'dir; görüntüler, fontlar ve medya engellenirse birkaç yüz KB'ye düşer. response handler ile 50 sayfa için yanıt boyutlarını toplayarak gerçek sayfalarınızı ölçün.

Scraping için headless mi yoksa geniş ekranlı (headed) tarayıcı mı kullanmalıyım?

Headless, sunucular için normal tercihtir ve daha az kaynak kullanır. Yalnızca bir sayfanın gösterdiklerini hata ayıklamak için headed tarayıcı kullanın. İkisi de kuralları değiştirmez: herkese açık sayfaları kibar bir hızda render edin ve sitenin robots.txt ve şartlarına uyun.

Herkese açık sayfaları konut IP'ler üzerinden render edin

$5,94, 50 GB üzerinden 10 GB, $0,50/GB.

$0,50/GB · KYC olmadan

Başlayın