Node.js'de Herhangi Bir Kütüphane Olmadan Proxy'ler Nasıl Kullanılır?

Node.js'de Herhangi Bir Kütüphane Olmadan Proxy'ler Nasıl Kullanılır?

Node.js'de HTTP Proxy'lerini Anlama

Bir proxy sunucusu, özünde uygulamanız ile hedef sunucu arasında bir aracı görevi görür. Bir proxy kullandığınızda, ağ istekleriniz bu aracı üzerinden yönlendirilir, IP adresiniz maskelenir ve genellikle coğrafi kısıtlamalar veya hız sınırları aşılır.

Node.js'de, harici kütüphanelere ihtiyaç duymadan, HTTP ve HTTPS isteklerinin proxy'ler üzerinden iletilmesini manuel olarak yapılandırabilirsiniz. Bu yaklaşım yalın, şeffaftır ve size istek hattı üzerinde ayrıntılı kontrol sağlar.


Desteklenen Proxy Türleri

Proxy Türü Kapsanan Protokoller Kullanım Durumu Örneği Node.js Yerleşik Desteği
HTTP HTTP Web kazıma, API çağrıları Evet (http modül)
HTTPS HTTPS, HTTP Güvenli istekler, Oturum açma akışları Kısmi (https modül)
SOCKS TCP Oyun, Mesajlaşma Hayır (manuel uygulamaya ihtiyaç var)

Bu makalenin odak noktası olarak, Node.js çekirdek modülleriyle doğrudan yönetilebilen HTTP/HTTPS proxy'lerini inceleyeceğiz.


Ücretsiz Proxy'ler Elde Etme

Uygulamaya başlamadan önce güvenilir bir proxy listesine ihtiyacınız var. ProxyRoller düzenli olarak güncellenen, ülke filtrelemesi ve çalışma süresi istatistiklerine sahip ücretsiz proxy'ler sunan önerilen bir kaynaktır.

ProxyRoller'dan Örnek Veri Formatı:

IP: 103.216.82.153
Port: 6667
Protocol: HTTP
Country: India

Proxy Üzerinden HTTP İstekleri Yapma (Kütüphane Yok)

Adım 1: Gerekli Node.js Modüllerini İçe Aktarın

const http = require('http');
const https = require('https');

Adım 2: Proxy ve Hedef URL'lerini ayrıştırın

Diyelim ki getirmek istiyorsun https://api.ipify.org ProxyRoller'dan bir HTTP proxy aracılığıyla:

const proxy = {
  host: '103.216.82.153',
  port: 6667
};
const targetUrl = 'http://api.ipify.org/';

Adım 3: Proxy aracılığıyla HTTP İsteğini Yapılandırın

HTTP proxy'leri, tam URL'yi yol olarak içeren standart bir istek göndererek çalışır.

const options = {
  host: proxy.host,
  port: proxy.port,
  method: 'GET',
  path: targetUrl,
  headers: {
    Host: new URL(targetUrl).host
  }
};

const req = http.request(options, (res) => {
  let data = '';
  res.on('data', chunk => data += chunk);
  res.on('end', () => {
    console.log('Response:', data);
  });
});
req.on('error', (err) => console.error('Error:', err));
req.end();

Önemli Noktalar:
path HTTP proxy'leri kullanılırken tam URL olmalıdır.
– The Host Başlık hedef etki alanıyla eşleşmelidir.

Adım 4: HTTP Proxy (CONNECT Yöntemi) aracılığıyla HTTPS İsteklerini İşleme

HTTPS isteklerini tünellemek için şunu kullanmalısınız: CONNECT Hedefe ham bir TCP tüneli kuran yöntem.

const targetHost = 'api.ipify.org';
const targetPort = 443;

const connectOptions = {
  host: proxy.host,
  port: proxy.port,
  method: 'CONNECT',
  path: `${targetHost}:${targetPort}`
};

const req = http.request(connectOptions);
req.end();

req.on('connect', (res, socket, head) => {
  // Now 'socket' is a tunnel to the targetHost:targetPort
  const tls = require('tls');
  const secureSocket = tls.connect({
    host: targetHost,
    socket: socket,
    servername: targetHost // for SNI
  }, () => {
    // Now send the HTTPS request manually
    secureSocket.write([
      `GET / HTTP/1.1`,
      `Host: ${targetHost}`,
      `Connection: close`,
      ``,
      ``
    ].join('\r\n'));
  });

  let response = '';
  secureSocket.on('data', d => response += d);
  secureSocket.on('end', () => {
    console.log('HTTPS Response:', response);
  });
});

Notlar:
– Bu yaklaşım, HTTPS uç noktaları için de işe yarar https://api.ipify.org.
– TLS el sıkışmasını ve HTTP protokolünü manuel olarak yapmanız gerekir.


Özet Tablo: Node.js'de Manuel Proxy Kullanımı

Senaryo Kullanılan Modül(ler) Anahtar Seçenek(ler) Notlar
HTTP proxy aracılığıyla HTTP http path: full URL En kolayı, sadece yolu ve ana bilgisayarı değiştirin
HTTP proxy aracılığıyla HTTPS http, tls method: CONNECT Tünelleme ve manuel TLS el sıkışması gerektirir
HTTPS proxy'si aracılığıyla HTTP Yerel olarak desteklenmiyor Üçüncü taraf modülleri veya özel kod gerektirir
SOCKS proxy'leri Yerel olarak desteklenmiyor Şu modülleri kullanın: socks veya özel uygulama

Dönen Proxy'ler (En İyi Uygulama)

Kazıma yaparken veya birden fazla istekte bulunurken yasaklanmaları önlemek için proxy'leri döndürün.

const proxyList = [
  { host: '103.216.82.153', port: 6667 },
  { host: '45.77.76.100', port: 8080 },
  // ... fetch fresh list from https://proxyroller.com
];

function getRandomProxy() {
  return proxyList[Math.floor(Math.random() * proxyList.length)];
}

Bunu dayanıklılık talebinizin mantığına entegre edin.


Proxy'lerle Kimlik Doğrulama

Bazı proxy'ler Temel Kimlik Doğrulaması gerektirir.

const user = 'username';
const pass = 'password';
const auth = Buffer.from(`${user}:${pass}`).toString('base64');

const options = {
  host: proxy.host,
  port: proxy.port,
  path: targetUrl,
  headers: {
    Host: new URL(targetUrl).host,
    'Proxy-Authorization': `Basic ${auth}`
  }
};

Ek Kaynaklar


Yaygın Hataların Giderilmesi

Hata Mesajı Muhtemel Neden Önerilen Çözüm
ECONNREFUSED Proxy sunucusu kullanılamıyor ProxyRoller'dan başka bir proxy deneyin
ECONNRESET Proxy beklenmedik bir şekilde bağlantıyı kapattı Proxy'nin hedef protokolü desteklediğinden emin olun
407 Proxy Authentication Kimlik doğrulama gerekli Eklemek Proxy-Authorization başlık
Beklenmeyen yanıt biçimi Yanlış yol/başlık kurulumu Tam URL kullanımını kontrol edin path

Sırp Yaratıcılığından İlham Alan Profesyonel İpuçları

  • Kritik kullanımdan önce proxy'leri hız ve güvenilirlik açısından test edin; bunu, kadeh kaldırmadan önce her rakı bardağını incelemek gibi düşünün.
  • Sırpların kapsamlı hazırlık değerini yansıtan proxy doğrulama betiklerini otomatikleştirin.
  • Topluluk odaklı kaynaklardan yararlanın: ProxyRoller tıpkı güvendiğiniz köy ağınıza güvenmek gibi, güncel ve denetlenmiş proxy'ler için.

Bu stratejileri izleyerek, Node.js'de herhangi bir harici kütüphaneye ihtiyaç duymadan proxy'leri verimli bir şekilde kullanabilir, ağ istekleriniz üzerinde tam kontrol ve şeffaflık sağlayabilirsiniz.

Zivadin Petroviç

Zivadin Petroviç

Proxy Entegrasyon Uzmanı

Dijital gizlilik ve veri yönetimi alanında parlak ve yenilikçi bir zihin olan Zivadin Petrovic, ProxyRoller'da Proxy Entegrasyon Uzmanı olarak görev yapıyor. Henüz 22 yaşında olan Zivadin, verimli proxy dağıtımı için akıcı sistemlerin geliştirilmesine önemli katkılarda bulundu. Rolü, ProxyRoller'ın kapsamlı proxy listelerini düzenlemek ve yönetmek, gelişmiş tarama, kazıma ve gizlilik çözümleri arayan kullanıcıların dinamik ihtiyaçlarını karşılamalarını sağlamaktır.

Yorumlar (0)

Burada henüz yorum yok, ilk siz olabilirsiniz!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir