Küçük bir Express uygulaması başlatıyor, tarayıcıda http://127.0.0.1:8080/proxy/https://example.com/ adresini açıyorsunuz ve sayfa kendi sunucunuzun adresi altında karşınıza geliyor. Sayfadaki linkler, görseller ve formlar artık /proxy/ ile başlıyor; her tıklama yeniden sizin sunucunuzdan geçiyor. Bu, npm'deki unblocker paketi, yani Node Unblocker: bir Node.js sunucusunu, herkesin sıradan bir tarayıcıyla kullanabileceği bir web proxy'ye çeviren birkaç satır kod. Açık bırakıldığında aynı satırlar yabancıların da sunucunuzu kullanmasının yolunu açar; ilk test sunucumuz, yerel bir servisin yalnızca 127.0.0.1 adresine gösterdiği bir yönetim sayfasını getirdi.
Bu yazıda paketin nasıl çalıştığını, en sade sunucuyu, yabancıları ve iç ağ adreslerini dışarıda tutan korumalı bir sunucuyu, giden trafik için upstream proxy kullanımını ve paketin sınırlarını anlatıyoruz. Bütün örnekleri 11 Ekim 2026'da unblocker 2.3.1, Express 4.22.3 ve Node.js 24.11.1 ile; yerel bir test sitesi, bir WebSocket yankı (echo) sunucusu ve kullanıcı adıyla parola isteyen bir test proxy'si üzerinde çalıştırdık.
Node Unblocker nedir?
Node Unblocker, Nathan Friedly'nin yazdığı ve npm'de unblocker adıyla yayımlanan açık kaynaklı bir Node.js kütüphanesidir. 11 Ekim 2026 itibarıyla en güncel sürüm, Haziran 2024 tarihli 2.3.1'dir; Node.js 16.17 veya üstünü ister ve AGPL-3.0 lisansıyla dağıtılır. GitHub'daki README onu, uzak web sayfalarını proxy'den geçirip yeniden yazan genel amaçlı bir kütüphane olarak tanımlar.
Kısacası bir web proxy'dir: başka web sitelerini sizin yerinize yükleyen bir web sitesi. Ziyaretçi hiçbir ayarı değiştirmez, yalnızca sunucunuzun adresini bilmesi yeter. HTTP veya SOCKS5 proxy ise uygulamada ya da işletim sisteminde tanımlanır ve trafiği değiştirmeden taşır. Node Unblocker yalnızca web sayfalarını ve WebSocket bağlantılarını taşır ve tek bir çıkışı vardır: çalıştığı makinenin IP adresi. Dizüstü bilgisayarınızda çalıştırırsanız site sizin ev IP'nizi görür.
Node Unblocker nasıl çalışır?
Yolu önekle (varsayılan olarak /proxy/) başlayan her istek şu adımlardan geçer:
- Tarayıcı sunucudan bir proxy adresi ister, örneğin
GET /proxy/https://example.com/. Önekten sonraki her şey hedef adrestir. Şeması olmayan bir adres, örneğin/proxy/example.com,/proxy/http://example.com/adresine307ile yönlendirilir. - İstek middleware'leri çalışır. Yerleşik fonksiyonlar
HostveRefererbaşlıklarını, sıkıştırmayı ve çerezleri düzeltir. ArdındanrequestMiddlewaredizisine sizin eklediğiniz fonksiyonlar çalışır; erişim kontrolleri buraya yazılır. - Sunucunuz hedefe kendisi bağlanır ve tarayıcının başlıklarını gönderir;
httpAgentveyahttpsAgenttanımladıysanız bağlantı o ajan üzerinden kurulur. Hedef, sunucunuzun IP adresini görür. - Cevap middleware'leri yanıtı düzenler.
Content-Security-Policy,Strict-Transport-SecurityvePublic-Key-Pinsbaşlıklarını kaldırır, yönlendirmeleri ve HTML ile CSS içindeki adresleri yeniden yazar, çerezleri/proxy/<site>/yoluna taşır, sayfaya bir betik ekler veNOINDEX, NOFOLLOWrobots etiketi koyar. - Sayfa tarayıcıya parça parça akar.
- Gözden kaçan linkler kurtarılır.
/aboutgibi köke göre yazılmış bir istek öneksiz gelir; Node UnblockerRefererbaşlığını okur ve tam proxy adresine307ile yönlendirir.
Sayfaya eklenen betik fetch, XMLHttpRequest, WebSocket, yeni oluşturulan öğeler ve geçmiş (history) değişikliklerini sarar; böylece JavaScript'in sonradan ürettiği adresler de öneki alır. JavaScript dosyalarının kendisi yeniden yazılmaz. Mutlak, köke göre ve göreli birer link, protokolü belirtilmemiş bir görsel ve bir form içeren test sayfamız proxy'den şöyle döndü:
set-cookie: session=abc123; Path=/proxy/http://127.0.0.1:9000/; HttpOnly
<script src="/proxy/client/unblocker-client.js"></script>
<script>unblockerInit({"prefix":"/proxy/","url":"http://127.0.0.1:9000/"}, window);</script>
<title>Test page</title><meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
<a href="/proxy/https://www.iana.org/help/example-domains">absolute</a>
<a href="/proxy/http://127.0.0.1:9000/about">root-relative</a>
<a href="contact">relative</a>
<img src="/proxy/http://cdn.example.net/logo.png">
<form action="/proxy/http://127.0.0.1:9000/login" method="post"></form>Göreli link zaten proxy yolunun altında çözüldüğü için olduğu gibi kalır. Sayfanın Content-Security-Policy ve Strict-Transport-Security başlıkları tarayıcıya hiç ulaşmadı.
Forward ve reverse proxy'den farkı nedir?
Üçü de tarayıcı ile site arasında durur. Farkları, onları kimin kurduğu ve sayfayı değiştirip değiştirmedikleridir.
| Node Unblocker | Forward proxy | Reverse proxy | |
|---|---|---|---|
| Nasıl kullanılır? | /proxy/ adresi açılır | Uygulamada veya işletim sisteminde host:port girilir | Sitenin kendi adresine gidilir |
| Kim kurar? | Sunucuyu çalıştıran | Kullanıcı ya da şirketi | Site sahibi |
| Sayfayı değiştirir mi? | Evet: link, çerez, yönlendirme | Hayır | Genellikle hayır |
| HTTPS | Sizin sunucunuzda çözülür | Tünelden geçer, şifreli kalır | Site sahibinde çözülür |
| Trafik | Web sayfaları ve WebSocket | Her türlü HTTP; SOCKS5 UDP de taşır | Sitenin sunucularına HTTP(S) |
Forward proxy, proxy ayarı olan her uygulamaya hizmet eder ve sayfayı anlaması gerekmez. Nginx gibi bir reverse proxy ise sizin kendi sitenizin önünde durur; ikisini Forward Proxy ve Reverse Proxy Arasındaki Fark yazımızda ayrıntılı anlattık. Node Unblocker bu ikisinden ayrılır: ayarı değiştirilemeyen ya da değiştirilmemesi gereken tarayıcılar için sayfayı yeniden yazan bir proxy'dir.
En sade Node Unblocker sunucusu nasıl kurulur?
Boş bir klasörde Express'i ve paketi kurun, ardından kodu server.mjs adıyla kaydedin:
npm install express unblockerimport express from "express";
import Unblocker from "unblocker";
const app = express();
const unblocker = new Unblocker({ prefix: "/proxy/" });
// Unblocker ilk app.use() çağrılarından biri olmalı ve bir alt yolda değil, kökte durmalı
app.use(unblocker);
app.get("/", (req, res) => res.send("Open /proxy/https://example.com/"));
// upgrade dinleyicisi, Unblocker'ın WebSocket bağlantılarını aktarmasını sağlar
app.listen(8080, "127.0.0.1").on("upgrade", unblocker.onUpgrade);node server.mjs ile başlatın ve http://127.0.0.1:8080/proxy/https://example.com/ adresini açın. README, middleware'in bir alt yola bağlanmaması gerektiğini söyler ve önek olarak / kullanmanın bazı uç durumlarda sorun çıkardığını belirtir. upgrade dinleyicisi olmadan, proxy'den açılan sayfalardaki sohbet kutuları ve canlı paneller bağlantı kuramaz.
Sunucu 127.0.0.1 adresini dinler, yani ona yalnızca sizin bilgisayarınız ulaşabilir; bu sürümü öyle bırakın. Testimizde sayfaları yükledi, bir 302 yönlendirmesini yeniden yazdı, bir form POST isteğini aktardı ve WebSocket mesajlarını yankıladı. Ayrıca test servisimizin yalnızca aynı makineye gösterdiği /proxy/http://127.0.0.1:9000/admin sayfasını da getirdi:
INTERNAL ADMIN PAGE - only for 127.0.0.1Express 5. Paket Express 4'e bağımlı olduğu için testi Express 5.3.0 ile tekrarladık. Sayfalar, yönlendirmeler, formlar ve WebSocket aynı şekilde çalıştı; npm paketin içine ona özel bir Express 4 kopyası kurdu.
Açık bir Node Unblocker sunucusu neden tehlikelidir?
Açık bir sunucu, herkesin sizin IP adresinizden trafik göndermesine ve yalnızca sunucunuzun erişebildiği yerlere ulaşmasına izin verir:
- Suç sizin IP'nize kalır. Sunucu üzerinden gönderilen form spam'i ve kaba kuvvet (brute force) giriş denemeleri sizin adresinizden gelir. Siteler bu adresi engeller ya da barındırma firmanıza şikâyet eder; firma da sunucuyu askıya alabilir.
- İç ağınız erişilebilir olur. Buna SSRF (Server-Side Request Forgery, sunucu taraflı istek sahteciliği) denir: dışarıdaki biri, kendisinin ulaşamadığı bir adrese sunucunuzun istek atmasını sağlar. Bulut sunucularda klasik hedef, metadata servisinin kimlik bilgisi dağıttığı
169.254.169.254adresidir. OWASP SSRF Önleme Rehberi, hedefler için bir izin listesi tutmayı ve her adın çözüldüğü IP'yi kontrol etmeyi önerir. - Sunucu her şeyi okur. Sayfaları yeniden yazabilmek için okuması gerektiğinden HTTPS sizin sunucunuzda sona erer; proxy'den açılan sitelere yazılan parolalar sunucudan açık metin olarak geçer.
- Bütün siteler aynı origin'i paylaşır. Origin, protokol, alan adı ve porttan oluşan köken bilgisidir; proxy'den açılan siteler birbirinden yalnızca çerez yollarıyla ayrılır. MDN, çerezlerdeki
Pathözniteliğinin bir güvenlik önlemi olmadığını belirtir. Proxy'den açılan bir sayfadaki betik, başka bir siteninHttpOnlyolmayan çerezlerini okuyabilir.
Web proxy kimseye yeni bir hak da vermez. Onu okul ya da iş yeri filtresini veya bir sitenin kullanım şartlarını aşmak için kullanmak yine o kuralları çiğnemek demektir; sitenin robots.txt kuralları ve hız sınırları, sunucunuzdan gelen trafik için de diğer ziyaretçilerde olduğu gibi geçerlidir.
Node Unblocker sunucusu nasıl korunur?
Sunucuyu, belirli kişilerin kısa bir site listesi için kullandığı bir iç araç olarak düşünün. Korumalı sürüm şunları ekler:
- Giriş kontrolü: ekip için sabit sürede karşılaştırılan tek bir HTTP Basic girişi.
- Site izin listesi (allowlist):
requestMiddlewareiçinde kontrol edilir ve yalnızca 80 ile 443 portlarına izin verir. - Her DNS cevabının kontrolü: ajanların
lookupfonksiyonunda yapılır, çünkü herhangi bir alan adı127.0.0.1adresini gösterebilir. Node'unnet.BlockListsınıfı özel adres aralıklarını tutar ve IPv6 biçiminde yazılmış IPv4 adreslerini de yakalar. - Başlık temizliği: ekibin
Authorizationbaşlığı veX-Forwarded-Foriçindeki istemci IP'si siteye hiç ulaşmaz. - WebSocket koruması: upgrade istekleri Express middleware'lerini atladığı için gereklidir.
- Hız sınırı, kayıt satırı ve sade bir hata sayfası.
npm install express unblocker express-rate-limitArdından server.mjs dosyasını bu sürümle değiştirin:
import crypto from "node:crypto";
import dns from "node:dns";
import http from "node:http";
import https from "node:https";
import net from "node:net";
import express from "express";
import { rateLimit } from "express-rate-limit";
import Unblocker from "unblocker";
const { UI_USER, UI_PASS, PORT = "8080" } = process.env;
if (!UI_USER || !UI_PASS) throw new Error("Set UI_USER and UI_PASS");
const ALLOWED = ["example.com", "iana.org"]; // ekibin açabileceği siteler (alt alan adları dahil)
// 1. Proxy'nin asla bağlanmaması gereken aralıklar (loopback, özel ağ, link-local, bulut metadata)
const blocked = new net.BlockList();
for (const [range, bits] of [["0.0.0.0", 8], ["10.0.0.0", 8], ["100.64.0.0", 10], ["127.0.0.0", 8],
["169.254.0.0", 16], ["172.16.0.0", 12], ["192.168.0.0", 16]]) blocked.addSubnet(range, bits);
blocked.addAddress("::1", "ipv6");
blocked.addSubnet("fc00::", 7, "ipv6");
blocked.addSubnet("fe80::", 10, "ipv6");
const isBlockedIp = (ip) => blocked.check(ip, net.isIPv6(ip) ? "ipv6" : "ipv4");
// 2. Soket açılmadan önce her DNS cevabını kontrol et; izinli bir ad iç ağınızı gösteremesin
function safeLookup(hostname, options, callback) {
dns.lookup(hostname, options, (err, address, family) => {
if (err) return callback(err);
const answers = Array.isArray(address) ? address : [{ address, family }];
if (answers.some((a) => isBlockedIp(a.address))) {
return callback(new Error(`${hostname} resolves to a blocked address`));
}
callback(null, address, family);
});
}
// 3. Yalnızca izin listesindeki sunucular, yalnızca varsayılan 80/443 portları
function isAllowed(target) {
const { hostname, port } = new URL(target);
return port === "" && ALLOWED.some((h) => hostname === h || hostname.endsWith(`.${h}`));
}
// Sitenin görmemesi gereken başlıklar: ekibin girişi ve reverse proxy'nin eklediği istemci IP'si
const STRIP = ["authorization", "forwarded", "x-forwarded-for", "x-forwarded-host", "x-forwarded-proto", "x-real-ip"];
function checkTarget(data) {
const ok = isAllowed(data.url);
console.log(new Date().toISOString(), ok ? "ALLOW" : "DENY", data.url);
if (ok) {
for (const h of STRIP) delete data.headers[h];
return;
}
if (data.clientResponse) return data.clientResponse.status(403).send("This site is not on the allowlist.");
throw new Error("Blocked WebSocket target"); // upgrade isteklerinde cevap nesnesi yoktur
}
// 4. Ekip için tek ortak giriş (HTTP Basic), sabit sürede karşılaştırılır
const hash = (s) => crypto.createHash("sha256").update(s).digest();
function loginOk(req) {
const [scheme, value = ""] = (req.headers.authorization ?? "").split(" ");
const given = Buffer.from(value, "base64").toString();
return scheme === "Basic" && crypto.timingSafeEqual(hash(given), hash(`${UI_USER}:${UI_PASS}`));
}
const unblocker = new Unblocker({
prefix: "/proxy/",
requestMiddleware: [checkTarget],
httpAgent: new http.Agent({ lookup: safeLookup }),
httpsAgent: new https.Agent({ lookup: safeLookup }),
});
const app = express();
app.set("trust proxy", "loopback"); // bu makinedeki reverse proxy gerçek istemci IP'sini iletir
app.use(rateLimit({ windowMs: 60_000, limit: 600 })); // tek bir sayfa onlarca dosya çekebilir
app.use((req, res, next) => {
if (loginOk(req)) return next();
res.set("WWW-Authenticate", 'Basic realm="preview"').status(401).send("Login required");
});
app.use(unblocker);
app.get("/", (req, res) => res.send("Open /proxy/https://example.com/"));
app.use((err, req, res, next) => {
console.error(err.message);
res.status(502).send("The site could not be loaded.");
});
// Yalnızca loopback'i dinle: HTTPS ve dışa açık port öndeki reverse proxy'nin işi
const server = app.listen(Number(PORT), "127.0.0.1");
// Express middleware'leri WebSocket upgrade isteklerinde çalışmaz; girişi burada da kontrol et
server.on("upgrade", (req, socket, head) => {
if (!loginOk(req)) return socket.destroy();
try {
unblocker.onUpgrade(req, socket, head);
} catch {
socket.destroy();
}
});Giriş bilgilerini ortam değişkeniyle vererek başlatın: UI_USER=team UI_PASS='uzun-rastgele-bir-parola' node server.mjs. Sonuçlarımız şöyleydi:
- Giriş yapılmadan her yol
WWW-Authenticate: Basicbaşlığıyla401döndü. example.comvewww.iana.orgaçıldı.example.org,evilexample.com,example.com:8443,127.0.0.1:9000ve169.254.169.254ise403aldı.- Herkese açık DNS'te
127.0.0.1adresine çözülenlocaltest.mealan adını bir test kopyasının izin listesine eklediğimizde istek502ile döndü, kayıttalocaltest.me resolves to a blocked addressyazdı. - Girişsiz WebSocket bağlantısı hemen kapatıldı. Giriş yapılmış bağlantılardan yerel yankı sunucumuza giden
DENYolarak kaydedilip kapatıldı; izin listesindekiecho.websocket.orgadresine giden ise çalıştı. - Bir dakika içinde 600 istek dolduktan sonra gelen istekler
Retry-After: 59başlığıyla429 Too Many Requestscevabı aldı.
Bu korumalardan ikisi, akla ilk gelen çözüm işe yaramadığı için eklendi. README'deki izin listesi örneği isteği data.clientResponse.status(403) ile reddeder; ama WebSocket upgrade isteğinde cevap nesnesi yoktur ve sunucumuz TypeError: Cannot read properties of null (reading 'status') hatasıyla çöktü. Boş değer kontrolü eklediğimizde sunucu ayakta kaldı, fakat WebSocket bağlantısı giriş yapılmadan engelli hedefe yine ulaştı. Middleware'de hata fırlatıp upgrade dinleyicisinde yakalamak bağlantıyı kurulmadan durdurur. STRIP listesini eklemeden önce ise test proxy'miz, ekibin Authorization: Basic başlığını ve test için gönderdiğimiz X-Forwarded-For değerini siteye giderken gördü.
HTTPS için sunucunun önüne, aynı makinede çalışan nginx ya da Caddy koyun; trust proxy ayarının loopback olması, Express'in ve hız sınırlayıcının gerçek istemci IP'sini görmesini sağlar. Nginx kullanıyorsanız README, /proxy/https:// içindeki // korunsun diye merge_slashes off; ayarını önerir. ALLOW ve DENY kayıt satırlarını saklayın; bir site sunucunuzun ne yaptığını sorduğunda cevap onlardadır.
Node Unblocker trafiği upstream proxy'den nasıl geçirilir?
Upstream proxy, sunucunuzun dışarı çıkarken kullandığı proxy'dir. httpAgent ve httpsAgent seçenekleri her türlü Node.js ajanını kabul eder; proxy'ye bağlanan bir ajan verdiğinizde çıkış noktası proxy'ye taşınır. http-proxy-agent ve https-proxy-agent paketlerini kurun, ardından korumalı sunucudaki iki ajan satırını değiştirin:
npm install http-proxy-agent https-proxy-agentimport { HttpProxyAgent } from "http-proxy-agent";
import { HttpsProxyAgent } from "https-proxy-agent";
const UPSTREAM = process.env.UPSTREAM_PROXY; // http://user:pass@pr.proxynet.io:8000
const unblocker = new Unblocker({
prefix: "/proxy/",
requestMiddleware: [checkTarget],
httpAgent: new HttpProxyAgent(UPSTREAM), // http:// hedefler: proxy'ye tam adresli istek
httpsAgent: new HttpsProxyAgent(UPSTREAM), // https:// hedefler: proxy üzerinden CONNECT tüneli
});user:pass isteyen test proxy'miz her hedef için bir satır kaydetti:
[test-proxy] CONNECT example.com:443 auth=user
[test-proxy] GET http://example.com/ auth=user fwd-authorization=- x-forwarded-for=-HTTPS sayfası bir CONNECT tünelinden geçtiği için proxy yalnızca sunucu adını gördü; HTTP satırındaki tireler, temizlenen başlıkların siteye gitmediğini gösteriyor. Parola yanlış olduğunda iki sayfa da proxy'nin kendi 407 Proxy Authentication Required cevabını döndürdü. Paroladaki @, : veya / karakterlerini encodeURIComponent ile kodlayın. Aynı ajanların Axios, node-fetch ve undici ile kullanımını Node.js'te Proxy Kullanımı yazımızda anlattık.
Upstream kullanıldığında safeLookup artık çalışmaz, çünkü adları proxy kendi ağında çözer; bu yüzden izin listesini sıkı tutun. Parolayı tamamen kaldırmak da mümkündür: sunucunuzun genel IP adresini paneldeki IP whitelist'e ekleyin (en fazla 10 adres). İki yöntemi Proxy Kimlik Doğrulama: User:Pass ve IP Whitelist yazımızda karşılaştırdık.
Datacenter Proxy, ekibe trafiği ölçülmeyen sabit bir çıkış IP'si verir. IP başına satılan paketler varsayılan olarak belirli hedef sitelere erişimle gelir, bütün sitelere erişim ise ücretli bir eklentidir; izin listenizdeki sitelerin kapsandığını kontrol edin.
Bir sayfayı başka bir ülkedeki ev kullanıcısının gördüğü gibi görmek istiyorsanız, örneğin bir yerelleştirme kontrolünde, ülke ve şehir seçilerek alınan bir Residential Proxy çıkışı kullanın. 1 ile 60 dakika arasında ayarlanan sticky oturum, bir akış boyunca aynı çıkışı korur.
Node Unblocker'ın sınırları nelerdir?
Node Unblocker, içeriğinin çoğu sunucuda oluşturulan sıradan sayfalarda en iyi sonucu verir. Geri kalanını README açıkça yazar:
- OAuth ile giriş ve
postMessage. Başka bir sağlayıcının penceresinden yapılan girişlerin çalışması pek olası değildir. - Büyük tek sayfa uygulamaları. README, çalışmayan birkaç tanınmış sohbet, video ve sosyal medya platformunu adıyla sayar. Sayfaya eklenen betik yaygın istek API'lerini sarar; ama
window.location,document.cookievepostMessagehâlâ yapılacaklar listesindedir. - Web sayfası olmayan her şey. Masaüstü uygulamaları, e-posta istemcileri ve komut satırı araçları için forward proxy gerekir.
- Yavaş bakım. Haziran 2024 sürümü, Ekim 2026'da hâlâ en güncel sürümdü.
lib/klasöründeki middleware dosyaları kısadır; pakete güvenmeden önce onları okuyun.
Kullanım alanları
- Bir QA ya da yerelleştirme ekibi için, şirketin kendi sayfalarını hedef ülkedeki residential bir çıkıştan açan iç önizleme aracı.
- Proxy ayarı değiştirilemeyen ama onaylı birkaç siteye kimlik doğrulamalı bir upstream üzerinden ulaşması gereken, yalnızca tarayıcı çalıştıran bir kiosk.
- İş ortağının izin listesine aldığı tek bir sabit IP'den iş ortağı portalına erişmesi gereken küçük bir ekip.
- Sayfa yeniden yazan proxy'lerin nasıl çalıştığını öğrenmek: paketi
DEBUG=unblocker:*ile çalıştırıp her middleware'i izlemek.
Hepsinde aynı çerçeve geçerlidir: yalnızca kullanma izniniz olan siteler, sitenin kaldırabileceği bir hızda ve hiçbir zaman bir filtreyi ya da engeli aşmanın yolu olarak değil.
Sık yapılan hatalar
- Girişsiz olarak
0.0.0.0adresini dinlemek. Sunucu herkese açık bir aktarıcıya dönüşür. - Erişimi yalnızca Express middleware'inde kontrol etmek. WebSocket upgrade istekleri oraya hiç uğramaz.
requestMiddlewareiçindedata.clientResponsedeğerini kontrol etmeden kullanmak. Upgrade isteklerindenullolur ve süreci çökertir.- Yalnızca sunucu adı kontrolüne güvenmek. Çözülen IP'yi ajanın
lookupfonksiyonunda kontrol edin. - Tarayıcı başlıklarının hepsini iletmek. Silmediğiniz sürece
AuthorizationveX-Forwarded-Forhedefe ulaşır. - Express'in varsayılan hata sayfasını bırakmak. Üretim (production) modu dışında bu sayfa, ziyaretçimize
getaddrinfo ENOTFOUNDhatasını yığın iziyle (stack trace) gösterdi. - Kişisel hesaplara proxy üzerinden giriş yapmak. Sunucu her parolayı görür.
Karar rehberi
| İhtiyaç | Öneri |
|---|---|
| Nasıl çalıştığını öğrenmek | 127.0.0.1 üzerinde en sade sunucu |
| Küçük bir ekip belirli siteleri açacak | HTTPS veren bir reverse proxy arkasında korumalı sunucu |
| Sayfaları başka bir ülkedeki ziyaretçinin gözüyle görmek | Residential upstream ile korumalı sunucu |
| İş ortağının izin listesine alacağı sabit bir çıkış IP'si | Korumalı sunucu, gerekirse datacenter upstream |
| Uygulamalar, betikler ya da bütün bir tarayıcı | Forward proxy (HTTP veya SOCKS5) |
| OAuth girişleri ya da büyük web uygulamaları | Forward proxy ile sıradan bir tarayıcı |
| Herkese açık bir proxy | Kurmayın |
Sıkça sorulan sorular
Node Unblocker bir VPN midir?
Hayır. VPN bir cihazın bütün trafiğini şifreli bir tünelden geçirir; Node Unblocker ise başka sayfaları sizin yerinize yükleyen bir web sitesidir. Yalnızca /proxy/ adresi altında açtığınız sayfalar ondan geçer ve sunucu bu trafiği açık metin olarak okur.
Node Unblocker IP adresimi gizler mi?
Sunucu başka bir yerde çalışıyorsa hedef siteden gizler: site sunucunun IP'sini görür. Sunucuyu çalıştıran kişiden gizlemez; reverse proxy arkasında ise X-Forwarded-For başlığı silinmedikçe IP'niz bu başlıkla siteye ulaşır.
Node Unblocker Express 5 ile çalışır mı?
Testimizde çalıştı. Express 5.3.0 ile sayfalar, yönlendirmeler, form gönderimleri ve WebSocket, Express 4.22.3'teki gibi davrandı; npm paketin içine ayrı bir Express 4 kopyası kurar.
Node Unblocker WebSocket bağlantılarını taşıyabilir mi?
Evet, unblocker.onUpgrade sunucunun upgrade olayına bağlandığında taşır. Express middleware'leri orada çalışmadığı için girişi ve hedefi bu dinleyicide de kontrol edin.
Node Unblocker ticari bir üründe kullanılabilir mi?
AGPL-3.0 koşullarıyla kullanılabilir: paketi değiştirip değiştirilmiş sürümü kullanıcılara ağ üzerinden sunarsanız, onlara bu sürümün kaynak kodunu da sunmanız gerekir. README, yazarın ticari lisans da sunduğunu belirtir.
Giriş yapılıyor ama sonraki sayfada oturum neden düşüyor?
Çoğu zaman site alt alan adları arasında ya da HTTP'den HTTPS'e geçmiştir. Unblocker çerezleri her site için ayrı bir yol altında tutar ve yeni yola fazladan bir yönlendirmeyle kopyalar; kaynak kodundaki not, bu sırada son kullanma tarihi gibi bayrakların kaybolduğunu söyler.
Özet
Node Unblocker, bir Express sunucusunu sıradan bir tarayıcı için sayfaları yeniden yazan bir web proxy'ye çevirir: ziyaretçi /proxy/<adres> yolunu açar, sunucu sayfayı kendi IP'sinden getirir, linkleri, çerezleri ve yönlendirmeleri yeniden yazar ve geri akıtır. En sade sunucu Express 4 veya 5 üzerinde birkaç satırdır; asıl iş onu güvenli hâle getirmektir: giriş kontrolü, izin listesi, çözülen IP kontrolü, temizlenen başlıklar, korunan bir WebSocket dinleyicisi ve önünde HTTPS. Çıkışın başka bir yerde olması gerektiğinde ajan seçenekleri trafiği bir upstream'den geçirir; bunun için datacenter, residential, mobil ve statik ISP çıkışlarını proxy paketlerimizde bulabilirsiniz.




