Proxy satın aldınız, login:password@host:port formatında bir dize aldınız, ancak program yalnızca "adres ve port" istiyor. Tanıdık bir durum: Chrome'da --proxy-server bayrağı, Windows ve Android sistem ayarları, eski bir ayrıştırıcı, Selenium grid, şifre alanı olmayan bir araç. Çözüm her zamanki gibi aynı — yerel geçit: kendi makinenizde, şifresiz bağlantıları kabul eden küçük bir proxy, gerçek proxy'ye bağlanırken otomatik olarak kullanıcı adını ekliyor. Dört güvenilir aracı, her biri için komutları ve genellikle zaman ve para kaybına neden olan hataları inceleyelim.
Neden programlar şifreli proxy'leri "anlamıyor"
Proxy sağlayıcısında kimlik doğrulamak için iki yol vardır: kullanıcı adı ve şifre ile (Basic Auth) veya IP beyaz listesi ile. İkinci seçenek sorunu ortadan kaldırır, ancak yalnızca sabit bir dış IP'niz varsa çalışır — ev internetinde ve mobil ağda genellikle yoktur, bulut hizmetlerinde ise her başlatmada değişir. Her iki yöntemi de proxy kimlik doğrulama kılavuzunda detaylı olarak karşılaştırdık.
Kullanıcı adı ve şifre ile sınırlamalarla karşılaşıyoruz:
- Chrome ve Chromium. Chromium belgelerine göre
--proxy-serverbayrağı, şemayı, host ve portu kabul eder (örneğin,--proxy-server="foopy:8080") — bu sözdiziminde kimlik bilgileri için bir alan yoktur. Normal bir tarayıcı penceresinde şifre girişi için bir diyalog gösterir, ancak headless modda ve otomatik testlerde bunu dolduracak kimse yoktur. - Sistem ayarları. Windows'taki manuel proxy ayarlarında ve çoğu Android sürümündeki Wi-Fi ayarlarında yalnızca host ve port vardır. Şifre ya belirli bir uygulama tarafından sorulur ya da hiçbir yere girilemez.
- Eski ve kendi yazdığınız yazılımlar. Birçok araç ve kütüphane proxy'leri destekler, ancak kimlik doğrulama olmadan veya şifredeki özel karakterlerle bozulur.
- Proxy desteği olmayan programlar. Ortam değişkenlerini veya ayarları okumayan konsol araçları.
Yerel geçit, bu dört durumu da kapatır: program, şifresiz 127.0.0.1:8080 proxy'sini görür ve geçit, trafiği sağlayıcıya kullanıcı adı ile iletir.
Şemanın nasıl çalıştığı
- Makinenizde (veya ayrıştırıcının çalıştığı VPS'de) hafif bir proxy sunucusu başlatılır ve örneğin
127.0.0.1:8080yerel portunu dinler. - Geçit yapılandırmasında "ebeveyn" (upstream) proxy — sağlayıcının adresi, kullanıcı adı ve şifresi belirtilmiştir.
- Program, kimlik doğrulama olmadan yerel porta bağlanır.
- Geçit, sağlayıcıya bir bağlantı açar, kimlik doğrulamasını geçer ve trafiği daha ileri iletir. Site için sağlayıcının IP adresi ile görünüyorsunuz, kendi IP adresinizle değil.
Bu arada HTTPS şifresi çözülmez: HTTP proxy üzerinden tarayıcı CONNECT yöntemiyle bir tünel kurar ve geçit yalnızca şifrelenmiş baytları iletir.
Seçenek 1: gost — tek komut, yapılandırma yok
gost (GO Simple Tunnel) — Windows, macOS ve Linux için tek bir yürütülebilir dosya. Geçidi başlatmanın en hızlı yolu budur. gost'ta -L bayrağı yerel hizmeti, -F ise trafiği ileteceğiniz düğümü belirler. Kimlik bilgileri doğrudan düğüm adresinde belirtilir:
gost -L http://127.0.0.1:8080 -F socks5://LOGIN:PASSWORD@HOST:PORT
Artık herhangi bir program, şifresiz 127.0.0.1:8080 HTTP proxy'sini kullanabilir. Şifrede özel karakterler (@, :, #) varsa, gost belgeleri bunları auth parametresi ile base64 olarak iletmenizi önerir:
echo -n LOGIN:PASSWORD | base64
gost -L http://127.0.0.1:8080 -F socks5://HOST:PORT?auth=<base64_sonucu>
Dikkat: auth belirtilirse, adresin içinde doğrudan yazılmış olan kullanıcı adı ve şifreyi gost göz ardı eder. Birden fazla -F bayrağı, birden fazla proxy'den oluşan bir zincir oluşturur.
Ne zaman kullanılmalı: bir tarayıcıyı veya betiği proxy ile hızlı bir şekilde "dost etmek" gerektiğinde, paket yüklemesi ve yapılandırma düzenlemesi olmadan.
Seçenek 2: 3proxy — tek bir makinede çok sayıda port
3proxy — tek bir dosyada yapılandırmaya sahip kompakt bir proxy sunucusu. Ana direktif parent; belgelerine göre sözdizimi: parent <ağırlık> <tip> <ip> <port> <kullanıcı adı> <şifre> ve allow kuralından sonra gelmelidir. Geçidin en basit yapılandırması:
auth iponly
allow * 127.0.0.1
parent 1000 http HOST PORT LOGIN PASSWORD
proxy -p8080 -i127.0.0.1
Burada önemli olanlar:
auth iponly— şifresiz, ancak ACL ile kontrol;allow * 127.0.0.1kuralı yalnızca yerel bağlantılara izin verir.- Ağırlık
1000"her zaman bu ebeveyn üzerinden" anlamına gelir. 1000'den daha düşük ağırlıklar, 3proxy'nin rastgele zincirler oluşturmak için kullandığı ağırlıklardır. - Ebeveyn tipi:
http,connect,socks4,socks5ve diğerleri — sağlayıcının verdiği protokolü seçin. -i127.0.0.1hizmeti yerel arayüze bağlar. Varsayılan olarak, 3proxy tüm arayüzlerde bağlantıları kabul eder.
Kullanışlı bir yöntem: allow / parent / proxy bloğunu farklı portlar ve sağlayıcı için farklı kimlik bilgileri ile birkaç kez tekrarlamak. Böylece "port = ayrı proxy" elde edersiniz: 127.0.0.1:8081 — ABD, :8082 — Almanya vb. Bu format, proxy'lerin "host:port" listesi olarak girildiği neredeyse her yazılım tarafından anlaşılır.
Ne zaman kullanılmalı: onlarca profil veya akış, her birinin kendi çıkışı gerektiğinde.
Seçenek 3: Squid — eğer önbellek ve günlük gerekiyorsa
Squid daha ağırdır, ancak önbellekleme, ayrıntılı günlükler ve esnek ACL sağlar. Sağlayıcı, cache_peer aracılığıyla ebeveyn düğüm olarak belirtilir ve never_direct allow all direktifi, Squid'in ebeveyni atlayarak internete doğrudan gitmesini yasaklar:
http_port 127.0.0.1:3128
cache_peer HOST parent PORT 0 no-query default login=LOGIN:PASSWORD
never_direct allow all
Squid belgelerinden bazı nüanslar:
- ICP portu, ebeveyn bunu desteklemiyorsa
0olarak ayarlanır — ticari proxy'lerde yoktur. login=içinde URL-escape dizileri (örneğin, boşluk için%20) kullanılabilir, bu nedenle şifredeki%karakterini%%olarak yazmalısınız.never_directolmadan Squid, doğrudan siteye gitmenin daha karlı olduğunu düşünebilir — ve istek gerçek IP'nizle gidebilir. Ayrıştırma ve çoklu hesaplar için bu en kötü senaryodur.
Ne zaman kullanılmalı: ofis veya ekip, kimin nereye gittiğini gösteren bir günlük veya aynı kaynaklara tekrar eden istekler gerektiğinde.
Seçenek 4: proxychains-ng — proxy desteği olmayan programlar için
Eğer bir program hiç proxy kullanamıyorsa, proxychains-ng (Linux ve macOS) yardımcı olacaktır. Bu, programın ağ çağrılarını yakalar ve TCP bağlantılarını proxy içinde sarar. SOCKS4a, SOCKS5 ve HTTP desteklenir, kimlik doğrulama — SOCKS için kullanıcı adı ve şifre, HTTP için Basic. [ProxyList] bölümündeki satırın formatı tip ip port [kullanıcı adı şifre] şeklindedir:
strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
http HOST PORT LOGIN PASSWORD
Başlatma: proxychains4 curl https://api.ipify.org — yanıtında sağlayıcının IP'si olacak, sizin değil.
strict_chain— listedeki tüm proxy'ler sırayla kullanılır ve eğer biri erişilemezse bağlantı olmayacaktır.dynamic_chain'den daha güvenlidir, çünkü ölü düğümleri atlar.proxy_dns— DNS istekleri de proxy üzerinden gider. Bunu yapmazsanız, internet sağlayıcınız hangi alan adlarını talep ettiğinizi görebilir ve site, DNS ile IP'nin coğrafi konumlarının uyuşmazlığını fark edebilir.- Yapılandırma sırayla aranır:
-file dosya veyaPROXYCHAINS_CONF_FILEdeğişkeni, ardından./proxychains.conf,~/.proxychains/proxychains.confve/etc/proxychains.conf.
Yazarların belirttiği sınırlamalar: yalnızca TCP (UDP ve ICMP proxy edilmez), çok sayıda işlem üreten programlarda sorunlar olabilir ve macOS'ta SIP koruması, sistem programlarını yakalamaya izin vermez.
Hangi aracı seçmeli: kısa bir kılavuz
- Bir tarayıcı veya betik, "şu anda" gerekli — gost.
- Birçok profil, her birinin kendi IP'si veya ülkesi var — 3proxy ile her hesap için ayrı port.
- Ekip, istek günlüğü, önbellek — Squid.
- Proxy ayarları olmayan bir program — proxychains-ng.
En pahalıya mal olan beş hata
- Geçit tüm arayüzleri dinliyor. VPS'de
-L http://:8080ile gost başlattınız — ve internet için açık bir proxy elde ettiniz. Açık proxy tarayıcıları bunu hızlıca bulur. Her zaman127.0.0.1belirtin, eğer geçidi diğer makineler kullanıyorsa — portu güvenlik duvarı ile kapatın. Botnetlerin, ayrıştırıcılarla sunuculardaki açık portları ne kadar hızlı bulduğunu CARBONATO solucanı incelemesinde yazdık. - Geçidin dışına sızma. Squid
never_directolmadan, proxychainsproxy_dnsolmadan, doğrudan WebRTC/UDP üzerinden giden bir tarayıcı — bunların hepsi gerçek IP'nizi açığa çıkarır. Sonucu bir IP belirleme hizmetinde ve DNS sızıntı testinde kontrol edin. - Tüm hesaplar için tek bir geçit. Eğer 30 adet anti-detect profili aynı port üzerinden tek bir sticky oturumuna bakıyorsa, hepsinin bir IP'si olacak — bu, hesapların bağlanmasına doğrudan bir yol. Profilleri portlara ayırın veya sağlayıcının oturum parametrelerini kullanın.
- Şifrede özel karakterler.
@ve:gibi karakterlerlogin:pass@hostformatındaki adreslerin ayrıştırılmasını bozar. gost'ta base64 parametresini kullanın, Squid'de kaçış yapın veya özel karakter içermeyen bir şifre oluşturun. - Geçit — gereksiz bir hop ve arıza noktası. Yerel makinede gecikme neredeyse sıfırdır, ancak geçit başka bir veri merkezinde bulunuyorsa, her isteğe ağ gecikmesi eklenir. Geçidi programın yanına yerleştirin ve otomatik başlatmayı ayarlayın (systemd, Windows servisi), aksi takdirde sunucu yeniden başlatıldığında ayrıştırıcı sessizce kaybolacaktır.
Geçidin arkasında hangi proxy'leri kullanmalısınız
Geçidin arkasında hangi tür proxy'nin olduğu önemli değildir — seçim görevden bağımsızdır:
- Konut proxy'leri — korumalı siteleri, pazar yerlerini ve anti-detect profilleri ayrıştırmak için: ev kullanıcılarının IP'leri, anti-botlar tarafından daha az şüphe uyandırır.
- Mobil proxy'ler — sosyal medya ve uygulamalar için, burada kontrol en sıkıdır: bir mobil operatörün (CGNAT üzerinden) tek bir IP'si genellikle birçok gerçek abone ile internete çıkar, ve bunu engellemek platform için risklidir.
- Veri merkezi proxy'leri — sıkı koruma gerektirmeyen büyük görevler için: erişilebilirlik testleri, API, testler. Gigabayt başına en ucuz olanlardır.
Eğer proxy döngüsü varsa, IP değişim mantığı genellikle sağlayıcı tarafından belirlenir — kullanıcı adındaki parametreler veya kontrol panelindeki ayarlar aracılığıyla. Geçit bunu bozmaz: kullanıcı adını olduğu gibi iletir. Bu nedenle, farklı oturum parametreleri ile birkaç port açmak uygundur — her istek için yeni bir IP ile bir port, 30 dakika boyunca sabit bir IP ile başka bir port.
Sonuç
Proxy ile kullanıcı adı ve şifre, aralarında yerel bir geçit varsa her programa uygundur. gost, tek bir komutla sorunu çözer, 3proxy "port = profil" için uygundur, Squid ekipler için günlüğü tutar, ve proxychains-ng, proxy hakkında hiçbir şey bilmeyen yazılımları bile proxy'ye bağlar. Ana kurallar: yalnızca 127.0.0.1'yi dinlemek, ebeveyni atlayarak doğrudan bağlantıları yasaklamak ve sitenin sağlayıcının IP'sini gördüğünden emin olmak, kendi IP'nizi değil.
