Node.js'te Puppeteer için proxy kurmak üzere tarayıcı başlatma argümanlarını --proxy-server=<proxy_address>:<port> ile yapılandırın; böylece tüm tarayıcı trafiği belirtilen proxy üzerinden yönlendirilir. Bu, otomatik web etkileşimlerinde IP adresini gizlemenizi, coğrafi hedefleme yapmanızı veya istek limitlerini ve IP yasaklarını aşmanızı sağlar.
Temel proxy yapılandırması
Puppeteer bir Chromium örneğini kontrol eder ve proxy ayarlarını doğrudan komut satırı argümanlarıyla iletir. Temel argüman --proxy-server'dır.
Proxy sunucusunu belirtme
--proxy-server argümanı proxy'nin adresini ve portunu alır. Protokol (HTTP, HTTPS, SOCKS4, SOCKS5) açıkça belirtilebilir; belirtilmezse genellikle HTTP varsayılır.
const puppeteer = require('puppeteer');
async function launchBrowserWithProxy(proxyAddress) {
const browser = await puppeteer.launch({
args: [
`--proxy-server=${proxyAddress}`,
// İsteğe bağlı: en üst düzey anonimlik için WebRTC'yi devre dışı bırakmayı düşünün
// '--disable-features=WebRTC'
],
headless: true, // arayüzlü mod için false
});
const page = await browser.newPage();
return { browser, page };
}
async function runBasicProxyExample() {
const proxy = 'http://your-proxy-ip:port'; // Örnek: 'http://192.168.1.1:8080' veya 'socks5://192.168.1.1:1080'
let browser;
try {
const { browser: launchedBrowser, page } = await launchBrowserWithProxy(proxy);
browser = launchedBrowser; // finally bloğu için dış kapsamdaki değişkene atanır
await page.goto('https://httpbin.org/ip'); // Dış IP'nizi gösteren bir servis
const ipInfo = await page.evaluate(() => document.body.textContent);
console.log('External IP through proxy:', ipInfo);
} catch (error) {
console.error('Error launching browser with proxy:', error);
} finally {
if (browser) {
await browser.close();
}
}
}
runBasicProxyExample();
your-proxy-ip:port yerine proxy sunucunuzun gerçek IP adresini ve portunu yazın. Protokol önekinin (ör. http://, socks5://) proxy türünüzle eşleştiğinden emin olun.
Kimlik doğrulamalı proxy'ler
Birçok proxy servisi kimlik doğrulaması ister. Puppeteer bunu, tarayıcı ve sayfa başlatıldıktan sonra page.authenticate() ile yapar ve proxy'ye HTTP Basic kimlik doğrulama başlıkları gönderir.
Proxy kimlik doğrulama yöntemleri
page.authenticate(): Puppeteer ile HTTP Basic kimlik doğrulaması için önerilen yöntem.--proxy-serveriçindeusername:password@ip:port: bazı araçlar bu biçimi doğrudan desteklese de, kimlik doğrulama için standart Puppeteer yaklaşımıpage.authenticate()'tir.
const puppeteer = require('puppeteer');
async function launchBrowserWithAuthenticatedProxy(proxyAddress, username, password) {
const browser = await puppeteer.launch({
args: [`--proxy-server=${proxyAddress}`],
headless: true,
});
const page = await browser.newPage();
// Proxy'de kimlik doğrulaması yap
await page.authenticate({ username, password });
return { browser, page };
}
async function runAuthenticatedProxyExample() {
const proxy = 'http://your-authenticated-proxy-ip:port';
const proxyUsername = 'your_username';
const proxyPassword = 'your_password';
let browser;
try {
const { browser: launchedBrowser, page } = await launchBrowserWithAuthenticatedProxy(proxy, proxyUsername, proxyPassword);
browser = launchedBrowser;
await page.goto('https://httpbin.org/ip');
const ipInfo = await page.evaluate(() => document.body.textContent);
console.log('External IP through authenticated proxy:', ipInfo);
} catch (error) {
console.error('Error with authenticated proxy:', error);
} finally {
if (browser) {
await browser.close();
}
}
}
runAuthenticatedProxyExample();
Proxy rotasyon stratejileri
Büyük ölçekli scraping'de tek bir proxy istek limitine takılmaya yol açabilir. Proxy rotasyonu, istekleri dağıtmak ve anonimliği korumak için birden fazla proxy sunucusu arasında geçiş yapmaktır.
Proxy rotasyonunu uygulama
- Bir proxy listesi tutun: kullanılabilir proxy'leri, gerekiyorsa kimlik bilgileriyle birlikte bir dizide saklayın.
- Seçim mantığı: her yeni tarayıcı örneği veya istek için proxy seçecek bir strateji kurun. Yaygın stratejiler: round-robin, rastgele seçim, ağırlıklı rotasyon.
```javascript
const puppeteer = require('puppeteer');
// Bazıları kimlik bilgisi içeren örnek proxy listesi
const proxyConfigurations = [
{ address: 'http://proxy1.example.com:8080' },
{ address: 'http://auth-proxy1.example.com:8080', username: 'userA', password: 'passA' },
{ address: 'socks5://proxy3.
