Hızlı cevap
Puppeteer'da kimlik doğrulamalı proxy nasıl kullanılır?
--proxy-server=http://gw.crawlrelay.com:7777 ile Chrome'u başlatın, ardından ilk goto öncesinde page.authenticate({ username, password }) çağrın. Chrome bayrağa yazılan kimlik bilgilerini yoksayar. CrawlRelay konut proxyleri kullanıcı adından ülkeyi ve yapışkan oturumu okur, böylece her sayfa veya bağlam kendi çıkışına sahip olabilir. Trafik 50 GB’dan başlayan $0,50/GB kadar maliyetlidir. KYC olmadan, kriptoyla ödenir.
Puppeteer kurulumu kısa özet
| Proxy adresi | --proxy-server=http://gw.crawlrelay.com:7777 içinde args veya bir tarayıcı bağlamında proxyServer |
|---|---|
| Kimlik bilgileri | Gezinmeden önce await page.authenticate({ username, password }) |
| Ayrı oturumlar | browser.createBrowserContext({ proxyServer }): oturum başına bir bağlam |
| SOCKS5 | Chrome'da kimlik doğrulamayla değil: HTTP portunu kullanın |
| Trafiği kaydetme | page.setRequestInterception(true) ve resim, font ve medyayı engelleme |
Tek bir kimlik doğrulamalı proxy nasıl kurarım?
Bu en temel kalıptır. try … finally bloğu, gezinme başarısız olsa bile Chrome'u kapatır; bu, yetim tarayıcıların biriktiği sunucular için önemlidir.
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({
args: ["--proxy-server=http://gw.crawlrelay.com:7777"],
});
try {
const page = await browser.newPage();
await page.authenticate({ username: "USERNAME-country-us", password: "PASSWORD" });
await page.setRequestInterception(true);
page.on("request", (req) =>
["image", "font", "media"].includes(req.resourceType()) ? req.abort() : req.continue()
);
const res = await page.goto("https://example.com/", { waitUntil: "domcontentloaded", timeout: 60000 });
console.log(res.status(), await page.title());
} finally {
await browser.close();
}Birden fazla oturum veya ülkeyi tek tarayıcıda nasıl çalıştırırım?
Her oturum için bir tarayıcı bağlamı oluşturun. Bağlam; kendi çerezleri, önbelleği ve ağ durumu olan izole bir profildir, böylece bir bağlama verdiğiniz kimlik bilgileri başka bağlama sızmaz. Her bağlama kendi ülkesini veya oturum kimliğini içeren bir kullanıcı adı verin.
import puppeteer from "puppeteer";
import { randomUUID } from "node:crypto";
const GATEWAY = "http://gw.crawlrelay.com:7777";
const browser = await puppeteer.launch();
async function visit(country, url) {
const session = randomUUID().replaceAll("-", "").slice(0, 10);
const context = await browser.createBrowserContext({ proxyServer: GATEWAY });
try {
const page = await context.newPage();
await page.authenticate({
username: `USERNAME-country-${country}-session-${session}-ttl-20`,
password: "PASSWORD",
});
await page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
return { country, session, ip: await page.evaluate(() => document.body.innerText.trim()) };
} finally {
await context.close();
}
}
try {
const results = await Promise.all([
visit("us", "https://api.ipify.org"),
visit("gb", "https://api.ipify.org"),
]);
console.table(results);
} finally {
await browser.close();
}Puppeteer neden 407 veya ERR_TUNNEL_CONNECTION_FAILED gösterir?
Çünkü Chrome hiç kimlik bilgisi göndermedi ya da yanlış gönderdiler. Üç şeyi kontrol edin:
page.authenticate(), o sayfada ilkgoto'ten önce çalışır.--proxy-serverbayrağı veyaproxyServersadece şema, host ve port içerir;user:pass@kısmı yoktur.- Kullanıcı adının hedef kısmında yazım yanlışı yoktur: önce curl ile test edin, 407 sayfasında gösterildiği gibi.
Eğer curl aynı kullanıcı adı ve şifre ile başarılıysa ve Puppeteer başarısızsa, ERR_TUNNEL_CONNECTION_FAILED sayfasını okuyun.
Puppeteer sayfası kaç GB trafik harcar?
Chrome'un indirdiği her şey faturalandırılır: HTML, betikler, stil dosyaları, resimler, fontlar ve sayfanın yaptığı API çağrıları. HTTP Archive Web Almanac 2025, mobilde ortalama sayfa ağırlığını 2,164 KB ve masaüstünde 2,412 KB olarak ölçmüştür. İstek engelleme ile resimleri, fontları ve medyayı engellemek genellikle bunu birkaç yüz kilobaya indirir; tekrarlanan betikler için önbelleğe alınan yanıtları geri vermek ise daha da azaltır. Sadece ihtiyacınız olan sayfalar için döndürücü mobil 4G proxy kullanın: mobil trafik 5 GB’dan başlayan $1,50/GB, konut trafik ise 50 GB’dan başlayan $0,50/GB ile maliyetlendirilir.
Puppeteer ve proxyler: sorular
Kullanıcı adı ve şifreyi --proxy-server içinde yazabilir miyim?
Hayır. Chrome, --proxy-server bayrağındaki kimlik bilgilerini yoksayar ve ilk HTTPS isteği ERR_TUNNEL_CONNECTION_FAILED tarafından gizlenen 407 ile başarısız olur. Bayrakta sadece http://host:port kullanın ve her yeni sayfada kimlik bilgilerini page.authenticate() ile geçirin.
Puppeteer'da sayfalar arasında IP’yi nasıl döndürürüm?
Her sayfayı yeni bir tarayıcı bağlamında açın veya her sayfaya oturum kimliği olmayan bir kullanıcı adı verin. Yeni bir bağlam yeni bağlantılar açar ve her yeni bağlantı genellikle farklı bir konut proxy çıkışı alır. Tek bir sayfa içinde Chrome bağlantıları tekrar kullanır, bu yüzden aynı siteye yapılan istekler genellikle bağlantı kapanana kadar aynı çıkışı paylaşır.
page.authenticate() istek engelleme ile çalışır mı?
Evet. Puppeteer, proxy'in kimlik doğrulama talebini kendisi halleder, müdahale eden işleyiciniz yalnızca her istekte continue() veya abort() çağırmalıdır. Önce authenticate() kurun, sonra ilk örnekte olduğu gibi müdahaleyi açın.
Proxylerle birlikte puppeteer-extra gibi gizlilik eklentileri kullanmalı mıyım?
Otomasyonu gizlemeye veya bot tespitini aşmaya yönelik araçları belgelemiyor veya desteklemiyoruz. Bu araçların amacı, otomatik ziyaretçileri filtreleyen site kararını geçmektir; ki bunun bizim Kabul Edilebilir Kullanım Politikamız izin vermemektedir. Kamuya açık sayfaları nazik bir hızda görüntüleyin ve siteler API sağlıyorsa resmi API'leri kullanın.
Puppeteer, proxy ile hangi Chrome'u kullanır?
Güncel Puppeteer sürümleri, uyumlu bir Chrome for Testing sürümünü indirir ve varsayılan olarak onu kullanır. Proxy bayrakları ve page.authenticate(), normal Chrome'daki gibi burada da çalışır. Puppeteer'ı kendi Chrome'unuza executablePath ile gösteriyorsanız, o tarayıcı güncel kalmalıdır.
Puppeteer'ı konut IP’leriyle kullan
$5,94, 50 GB üzerinden 10 GB, $0,50/GB.