---
title: "n8n ile Web Scraping: HTTP Request ve Proxy Ayarları"
description: "n8n'de proxy, HTTP Request düğümünün seçeneklerinden ya da ortam değişkenleriyle tanımlanır. Kurulumu, kimlik doğrulamayı ve sık görülen hataları anlatıyoruz."
url: https://proxynet.io/tr/blog/n8n-proxy
date: 2026-09-19
author: "Acar Diveroli"
category: "Entegrasyon, Nasıl Yapılır"
lang: tr
---

# n8n ile Web Scraping: HTTP Request ve Proxy Ayarları

n8n'de kurduğunuz iş akışı her sabah on ürün sayfasını açıp fiyatları bir tabloya yazıyor. İlk hafta sorun çıkmıyor. Sonra liste iki yüz ürüne çıkıyor, akış sunucunuzun tek IP adresinden art arda istek göndermeye başlıyor ve HTTP Request düğümü kırmızıya dönüyor: önce `429`, ardından `403`. Ya da durum tam tersi: hedef API yalnızca belirli bir ülkeden gelen isteğe doğru fiyatı gösteriyor, n8n sunucunuz ise başka bir ülkede duruyor. İki durumda da aranan ayar aynı: n8n'in dışarı giden isteklerini bir proxy üzerinden geçirmek.

Bu yazıda n8n'de proxy'nin tanımlandığı iki yeri anlatıyoruz: HTTP Request düğümündeki Proxy seçeneği ve self-hosted kurulumdaki ortam değişkenleri. Kimlik bilgisinin adrese nasıl yazıldığını, hangi ayarın hangisini ezdiğini, n8n Cloud ile kendi sunucunuz arasındaki farkı ve sık görülen hataları sırayla ele alıyoruz. "n8n proxy" diye arayanların bir kısmının aslında aradığı ters proxy (reverse proxy) konusunu da ayırıyoruz. Örnek akış, alıştırma için yayınlanmış bir sitede fiyat izliyor.

> **Not: Kısa cevap**
>
> HTTP Request düğümünde **Options → Add option → Proxy** alanına `http://user:pass@pr.proxynet.io:8000` biçiminde bir adres yazmanız yeterlidir; bu ayar yalnızca o düğümü etkiler ve n8n Cloud'da da çalışır. Kendi sunucunuzda çalışan n8n'de bütün düğümler için `HTTP_PROXY`, `HTTPS_PROXY` ve `NO_PROXY` ortam değişkenleri kullanılır. İkisi birlikte tanımlıysa düğümdeki ayar ortam değişkenini ezer. `N8N_PROXY_HOPS` ise bambaşka bir konudur: n8n'in kendisini nginx gibi bir ters proxy'nin arkasına koyduğunuzda gerekir.

## n8n nedir, scraping'de nereye oturur?

n8n, kutucukları (düğüm, İngilizce "node") çizgilerle birbirine bağlayarak iş akışı kurduğunuz bir otomasyon aracıdır. Bir tetikleyici düğüm akışı başlatır (zamanlayıcı, webhook, form), ardından gelen düğümler veriyi alır, dönüştürür ve bir yere yazar. Aracı n8n'in kendi bulutunda (n8n Cloud) kullanabilir ya da kendi sunucunuza kurabilirsiniz (self-hosted). Bu ayrım proxy konusunda belirleyicidir.

Scraping tarafında işi iki düğüm görür. **HTTP Request** düğümü bir adrese istek atıp yanıtı alır; **HTML** düğümü yanıtın içinden CSS seçicileriyle istediğiniz alanları çıkarır. Bu ikili, içeriği sunucudan hazır gelen sayfalarda ve JSON dönen API'lerde iyi çalışır. İçeriği tarayıcıda JavaScript ile oluşan sayfalarda HTTP Request yalnızca boş bir iskelet görür; farkı [Statik ve Dinamik Sayfalar](/tr/blog/static-vs-dynamic-pages) yazımızda anlattık. Seçici yazımı için [CSS Seçici ve XPath](/tr/blog/css-selector-vs-xpath) yazımıza bakabilirsiniz.

n8n'in güçlü olduğu yer, çekilen veriyle sonrasında yapılanlardır: tabloya yazmak, eski değerle karşılaştırmak, değişiklikte bildirim göndermek. Binlerce sayfalık bir tarama için doğru araç değildir; o ölçekte [Scrapy](/tr/blog/scrapy-proxy) gibi bir çatı ya da bir [veri kazıma](/tr/data-scraping) altyapısı gerekir. Hangi yöntemin ne zaman yettiğini [Web Sitesinden Veri Çekme](/tr/blog/extract-data-from-website) yazımızda karşılaştırdık.

## "n8n proxy" iki ayrı konudur: hangisini arıyorsunuz?

Arama önerilerinde "n8n proxy" sorgusunun yanına `proxy hops`, `nginx` ve `reverse` sözcükleri de gelir. Bunlar bu yazının konusu olan ayarla ilgili değildir:

| | İleri proxy (forward proxy) | Ters proxy (reverse proxy) |
|---|---|---|
| Trafiğin yönü | n8n'den dışarı giden istekler | Dışarıdan n8n'e gelen istekler |
| Ne işe yarar | İsteğin çıktığı IP adresini ve ülkeyi belirler | n8n'i alan adı ve HTTPS ile yayına açar |
| Tipik araç | Proxy sağlayıcısının uç noktası | nginx, Caddy, Traefik |
| n8n'deki ayar | HTTP Request → Proxy, `HTTP_PROXY`, `HTTPS_PROXY` | `N8N_PROXY_HOPS`, webhook adresi değişkeni |
| Belirtisi | `407`, `ECONNREFUSED`, hedef sitede `403` / `429` | Webhook adresinin `localhost` görünmesi, yanlış istemci IP'si |

n8n'i nginx arkasında çalıştırıyorsanız n8n dokümanının ters proxy arkasında webhook adresi yapılandırmasını anlatan sayfası iki şey ister: `N8N_PROXY_HOPS` değişkenini `1` yapmak (varsayılanı `0`'dır ve n8n'in önünde kaç ters proxy olduğunu söyler) ve zincirdeki son proxy'nin `X-Forwarded-For`, `X-Forwarded-Host`, `X-Forwarded-Proto` başlıklarını iletmesi. Bu ayarlar dışarı giden isteklerinizi hiçbir şekilde etkilemez. İki kavramın farkını ve nginx örneğini [Forward Proxy ve Reverse Proxy Arasındaki Fark](/tr/blog/forward-vs-reverse-proxy) yazımızda bulabilirsiniz. Yazının geri kalanı ileri proxy ile ilgilidir.

## HTTP Request düğümünde proxy nasıl tanımlanır?

Ayar düğümün ana alanlarında değil, en alttaki Options bölümündedir; ilk bakışta görünmemesinin nedeni budur.

1. İş akışınızda HTTP Request düğümünü açın, **Method** ve **URL** alanlarını doldurun.
2. Parametrelerin en altındaki **Options** bölümünde **Add option** düğmesine basın.
3. Listeden **Proxy** seçeneğini ekleyin.
4. Açılan alana proxy adresini şema ile birlikte yazın: `http://user:pass@pr.proxynet.io:8000`
5. Düğümü **Execute step** ile tek başına çalıştırın ve çıktıyı kontrol edin.

Alanın yer tutucu metni `e.g. http://myproxy:3128` biçimindedir; yani n8n burada tam bir URL bekler. Bu yazı için yerelde kurduğumuz güncel sürümde şemasız yazılan adres (`user:pass@pr.proxynet.io:8000`) hata vermedi, istek proxy'ye hiç uğramadan doğrudan çıktı. `socks5://` ile başlayan adreste de sonuç aynıydı: alan HTTP proxy içindir. [HTTP Request düğümünün dokümanı](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) bu seçeneğin `HTTP_PROXY`, `HTTPS_PROXY` ve `ALL_PROXY` ile yapılmış genel ayarın önüne geçtiğini açıkça yazar. Sunucunuzda kurumsal bir proxy tanımlıyken tek bir düğümü farklı bir uç noktadan çıkarabilirsiniz.

### Kullanıcı adı ve şifre nereye yazılır?

Düğümde proxy için ayrı bir kullanıcı adı ya da şifre alanı yoktur. Kimlik bilgisi adresin içine, `kullanıcı:şifre@` biçiminde yazılır. Düğümün **Authentication** bölümü proxy'ye değil hedef siteye gider; proxy şifresini oraya yazmak `407` hatasını çözmez.

Şifrenizde `@`, `:`, `/` ya da `#` gibi karakterler varsa adres yanlış yerden bölünür. Bu karakterleri yüzde kodlamasıyla yazın: `@` yerine `%40`, `:` yerine `%3A`. Yerel denememizde `pa@ss:1` şifresi `pa%40ss%3A1` biçiminde yazıldığında proxy'de doğru çözüldü. İki kimlik doğrulama yönteminin ayrıntısı [Proxy Kimlik Doğrulama: User:Pass ve IP Whitelist](/tr/blog/proxy-authentication-methods) yazımızda.

Bir de güvenlik notu: Proxy alanı düz metindir, n8n'in şifreli kimlik bilgisi kasasına (Credentials) girmez. Akışı JSON olarak dışa aktarıp paylaştığınızda proxy şifreniz de dosyanın içinde gider; paylaşmadan önce alanı temizleyin.

### IP whitelist n8n'de kullanılabilir mi?

Kendi sunucunuzda çalışan ve sabit IP adresi olan bir n8n için evet: sunucunun IP'sini proxy panelinizdeki izinli listeye eklersiniz, adres `http://pr.proxynet.io:8000` diye şifresiz yazılır. n8n Cloud'da ise bu yöntem güvenilir değildir. n8n, dokümanındaki Cloud IP adresleri sayfasında çıkış IP'lerinin sabit olmadığını ve haber verilmeden değişebildiğini söyler. Bugün izinli listeye eklediğiniz adres yarın geçersiz kalabilir. Cloud'da kullanıcı adı ve şifreyle bağlanın.

## Self-hosted kurulumda ortam değişkenleri nasıl kullanılır?

Her düğüme tek tek proxy yazmak yerine n8n sürecinin tamamına bir proxy tanımlayabilirsiniz. n8n'in [dağıtım ortam değişkenleri](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) sayfası dört değişken sayar:

| Değişken | Görevi |
|---|---|
| `HTTP_PROXY` | Düğümlerden çıkan şifresiz HTTP trafiği bu adresten geçer |
| `HTTPS_PROXY` | Düğümlerden çıkan TLS'li (HTTPS) trafik bu adresten geçer |
| `ALL_PROXY` | Daha özel olan iki değişken tanımlı değilse ikisi için de kullanılır |
| `NO_PROXY` | Virgülle ayrılmış, proxy'ye girmeden doğrudan bağlanılacak ana bilgisayar listesi |

Docker Compose ile çalışan bir kurulumda değişkenler servisin `environment` bölümüne eklenir:

```yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    environment:
      - HTTP_PROXY=http://user:pass@pr.proxynet.io:8000
      - HTTPS_PROXY=http://user:pass@pr.proxynet.io:8000
      - NO_PROXY=localhost,127.0.0.1,postgres,redis
```

`HTTPS_PROXY` değerinin `http://` ile başlaması yazım hatası değildir: değişkenin adı proxy'nin şemasını değil, hangi trafiğin oraya gideceğini söyler. Bu değişkenlerin işletim sisteminde nasıl tanımlandığını [wget ile Proxy Kullanımı](/tr/blog/wget-proxy) yazımızda anlattık; burada yalnızca n8n'e özgü üç tuzağa değiniyoruz.

**Küçük harfli değişken büyüğünü ezer.** Aynı doküman sayfası, n8n'in kullandığı `proxy-from-env` paketinde `http_proxy` gibi küçük harfli adların, ikisi birlikte tanımlıysa büyük harfli olanın önüne geçtiğini belirtir. Docker imajınıza ya da sunucunuza bir başkası küçük harfli bir değişken koyduysa sizin `HTTP_PROXY` değeriniz sessizce yok sayılır. Kapsayıcının içinde `env | grep -i proxy` ile ikisine birden bakın.

**`NO_PROXY` listesini boş bırakmayın.** n8n aynı ağdaki veritabanına, Redis'e ya da şirket içi bir API'ye de HTTP ile konuşuyorsa bu istekler de proxy'ye gider ve büyük olasılıkla orada takılır. İç ana bilgisayar adlarını ve `localhost`'u listeye ekleyin.

**Her düğüm bu değişkenlere uymaz.** n8n'in kendi HTTP yardımcısını kullanan düğümler ayarı görür. Kendi istemci kütüphanesini getiren bazı düğümlerde ise değişkenin dikkate alınmadığına dair açık kayıtlar vardır (örneğin n8n deposundaki [#19652 numaralı kayıt](https://github.com/n8n-io/n8n/issues/19652) RSS Read düğümü için 2025'te açılmış, sonradan kapatılmıştır). Kritik bir düğümü yayına almadan önce aşağıdaki doğrulama adımıyla sınayın.

Değişkenler n8n süreci başlarken okunur; değiştirdikten sonra kapsayıcıyı ya da servisi yeniden başlatmanız gerekir.

## n8n Cloud ve self-hosted: hangi yol nerede açık?

| | n8n Cloud | Self-hosted (Docker, npm) |
|---|---|---|
| HTTP Request → Proxy seçeneği | Var | Var |
| `HTTP_PROXY` / `HTTPS_PROXY` | Sunucu ortamı sizde olmadığı için tanımlanamaz | Tanımlanır, bütün süreci etkiler |
| IP whitelist ile proxy | Önerilmez: çıkış IP'leri haber verilmeden değişir | Sabit IP'li sunucuda çalışır |
| Proxy'siz çıkış IP'si | n8n'in bulut altyapısındaki değişken adresler | Sunucunuzun kendi adresi |

Cloud kullanıyorsanız tek yolunuz düğüm seçeneğidir. Self-hosted kurulumda ikisi de açıktır; ortam değişkenini "varsayılan çıkış", düğüm seçeneğini de "bu istek farklı yerden çıksın" diye düşünebilirsiniz.

## Örnek iş akışı: bir ürünün fiyatını izlemek

Örneği, scraping alıştırması için yayınlanan `books.toscrape.com` üzerinde kuruyoruz. Kendi işinizde önce hedef sitenin resmi bir API'si ya da satıcı paneli olup olmadığına bakın; varsa HTML ayrıştırmak yerine onu kullanın. Yoksa sitenin `robots.txt` dosyasını ve kullanım şartlarını okuyun. `robots.txt` kurallarının nasıl okunacağı [robots.txt Dosyası Nedir](/tr/blog/robots-txt) yazımızda.

Akış altı düğümden oluşur:

1. **Schedule Trigger:** akışı günde bir kez başlatır. Fiyat takibinde dakikalık tarama nadiren gerekir.
2. **Ürün listesi:** adresleri bir Google Sheets tablosundan ya da Edit Fields düğümünden alın. Her satır bir `url` alanı taşır.
3. **Loop Over Items:** listeyi tek tek işler. Batch Size değerini `1` bırakın.
4. **HTTP Request:** `URL` alanına `{{ $json.url }}` ifadesini yazın, Options altında Proxy'yi tanımlayın, Response seçeneğinde biçimi metin olarak bırakın.
5. **HTML:** işlem olarak **Extract HTML Content** seçin ve çıkarılacak alanları CSS seçicileriyle tanımlayın.
6. **Wait:** birkaç saniye bekleyip döngünün başına döner.

Döngü bittiğinde çıkan veriyi bir tabloya yazar, önceki günün fiyatıyla bir **If** düğümünde karşılaştırır ve fark varsa bildirim gönderirsiniz.

HTTP Request düğümünün dışa aktarılan akış JSON'undaki hali şöyledir:

```json
{
  "parameters": {
    "url": "={{ $json.url }}",
    "options": {
      "proxy": "http://user:pass@pr.proxynet.io:8000",
      "timeout": 20000,
      "response": {
        "response": { "fullResponse": true, "responseFormat": "text" }
      }
    }
  },
  "name": "HTTP Request",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.2
}
```

HTML düğümünde bu site için üç satır yeter:

| Key | CSS Selector | Return Value |
|---|---|---|
| `baslik` | `h1` | Text |
| `fiyat` | `p.price_color` | Text |
| `stok` | `p.availability` | Text |

Options altındaki **Trim Values** ve **Clean Up Text** seçeneklerini açın; stok satırındaki satır sonları ve fazla boşluklar böylece temizlenir. Çıktı `£51.77` gibi bir metindir; sayıya çevirmek için sonraki düğümde para birimi simgesini atıp ondalık ayırıcıyı düzeltmeniz gerekir.

Ürün eşleştirme, fiyat geçmişi ve eşik uyarısıyla daha kapsamlı bir kurguyu [E-Ticarette Rakip Fiyat Takibi](/tr/blog/competitor-price-tracking) yazımızda, işin ürün tarafını da [fiyat takibi çözümü](/tr/price-monitoring) sayfamızda anlattık.

## Hız sınırı ve yeniden deneme n8n'de nasıl kurulur?

n8n bir listeyi aldığında, siz aksini söylemedikçe bütün öğeler için isteği arka arkaya ve beklemeden gönderir. Proxy kullanmak bu davranışı nazik yapmaz; yalnızca isteklerin çıktığı adresi değiştirir. Hedef sitenin gördüğü yükü sizin sınırlamanız gerekir. n8n dokümanının hız sınırlarıyla çalışma ("Handle rate limits") sayfası üç yerleşik yol gösterir:

- **Batching (HTTP Request → Options):** `Items per Batch` ile bir seferde kaç istek gideceğini, `Batch Interval (ms)` ile partiler arasındaki beklemeyi belirlersiniz. Kod gerektirmeyen en kısa yoldur.
- **Loop Over Items + Wait:** yukarıdaki örnekte kullandığımız kurgu. Her isteğin ardından beklemeyi açıkça görürsünüz ve araya başka düğümler koyabilirsiniz.
- **Retry On Fail (düğümün Settings sekmesi):** başarısız isteği yeniden dener; `Wait Between Tries (ms)` ile denemeler arasındaki süreyi verirsiniz.

Retry On Fail'i her hataya karşı açmak doğru değildir. `429` ve `503` beklemeyle düzelir; `403` ve `407` düzelmez, aynı isteği beş kez göndermek yalnızca gereksiz trafik üretir. Hangi kodda denenip hangisinde durulacağını [Scraping'de HTTP Hata Kodları](/tr/blog/http-status-codes-web-scraping) yazımızdaki tabloda topladık; hız sınırının mantığı da [429 Too Many Requests](/tr/blog/http-429-too-many-requests) yazımızda. Durum koduna göre dallanmak isterseniz HTTP Request'in Response seçeneğinde **Include Response Headers and Status** ile **Never Error**'ı açın, ardından bir If düğümünde `statusCode` alanına bakın.

## Rotasyon için ayrı bir düğüm ya da kod gerekir mi?

Bazı n8n scraping şablonları, Code düğümünde bir proxy listesi tutup her istekte sıradakini seçen JavaScript parçaları içerir. Elinizde tek tek IP adreslerinden oluşan bir liste varsa bu gerekir. Dönen (rotating) bir uç noktada gerekmez: `pr.proxynet.io:8000` gibi tek bir adrese bağlanırsınız, her yeni bağlantıda çıkış IP'sini sağlayıcı değiştirir. n8n tarafında Proxy alanına yazdığınız adres hiç değişmez. Mekanizmanın ayrıntısı [IP Rotasyonu Nedir ve Nasıl Çalışır?](/tr/blog/ip-rotation-explained) yazımızda, ürün tarafı [Rotating Proxy](https://proxynet.io/tr/rotating-proxy) sayfasında.

Tersine, IP'nin hiç değişmemesi gereken işler de vardır. Bir iş ortağının API'si yalnızca izinli listeye eklenmiş adreslerden gelen isteği kabul ediyorsa ve n8n Cloud kullanıyorsanız, değişken Cloud IP'leri yerine [ISP Proxy](https://proxynet.io/tr/static-isp-residential-proxy) gibi sabit bir adres üzerinden çıkmak sorunu çözer. Bu senaryoyu [API için Statik IP](/tr/blog/static-ip-for-api-access) yazımızda ele aldık.

## AI Agent düğümünde proxy nasıl kullanılır?

n8n'in AI Agent düğümüne HTTP Request'i bir araç (tool) olarak bağlayabilirsiniz; model, gerektiğinde bu aracı çağırıp bir sayfayı ya da API'yi okur. Araç olarak bağlanan HTTP Request de aynı Options bölümünü taşır, dolayısıyla Proxy seçeneği burada da aynı biçimde çalışır. Doküman bu kullanım için bir seçenek daha ekler: **Optimize Response**, yanıtı modele vermeden önce JSON alanlarını süzer ya da HTML'den yalnızca metni çıkarır ve harcanan token miktarını düşürür.

Ajan kurgusunda iki noktaya dikkat edin. Ajanın gidebileceği adresleri araç tanımında sınırlayın: URL'yi tamamen modele bırakmak yerine sabit bir alan adı ve modelin dolduracağı bir yol parametresi tanımlayın. Dil modeli sağlayıcısına giden istekler ise HTTP Request'ten geçmez; onları proxy arkasına almak için self-hosted kurulumda ortam değişkenleri gerekir ve model düğümünün değişkene uyduğunu ayrıca sınamanız gerekir. Ajanların web'e nasıl çıktığını [AI Ajanları Nasıl Çalışır?](/tr/blog/how-ai-agents-work) ve [LLM'lere Güvenli Web Erişimi](/tr/blog/llm-safe-web-access) yazılarımızda anlattık. Gerçek bir tarayıcı gerektiren sayfalar için [Playwright MCP](/tr/blog/playwright-mcp) yazımıza bakın.

## Proxy'nin çalıştığı nasıl doğrulanır?

Yanlış yazılmış bir adres hata vermeden yok sayılabildiği için ayarı mutlaka sınayın:

1. Boş bir akışa iki HTTP Request düğümü koyun. İkisinin de adresi, isteğin geldiği IP'yi döndüren bir servis olsun (örneğin `https://api.ipify.org?format=json`).
2. Birincisinde Proxy seçeneğini boş bırakın, ikincisinde doldurun.
3. İkisini de çalıştırın. Birinci düğüm n8n sunucunuzun (ya da Cloud'un) IP'sini, ikincisi proxy'nin çıkış IP'sini göstermelidir. İki adres aynıysa proxy devrede değildir.
4. Ortam değişkeni kullanıyorsanız aynı testi Proxy alanı boş bir düğümle yapın: IP değiştiyse değişken okunuyordur.

Adımların ayrıntısı [Proxy Nasıl Test Edilir?](/tr/blog/how-to-test-a-proxy) yazımızda.

## Sık görülen hatalar ve anlamları

| Hata | Nereden gelir | Olası neden | Yapılacak |
|---|---|---|---|
| `ECONNREFUSED` | n8n sunucusu | Proxy portu yanlış ya da güvenlik duvarı çıkışı kapatıyor | Adresi panelden yeniden kopyalayın, o porta çıkış iznini kontrol edin |
| `407 Proxy Authentication Required` | Proxy | Şifre yanlış, özel karakter kodlanmamış ya da whitelist'te IP yok | Kimlik bilgisini adres içinde ve yüzde kodlamasıyla yazın |
| `400 Bad Request` (yalnız HTTPS hedeflerde) | Proxy | İstemci, tünel açmak yerine isteği proxy'ye düz gönderiyor | n8n'i güncelleyin; aşağıdaki nota bakın |
| `ETIMEDOUT` / `ECONNRESET` | Ağ | Proxy'ye ulaşılamıyor ya da hedef çok yavaş | Options → Timeout değerini yükseltin, daha yakın bir çıkış konumu seçin |
| `ENOTFOUND` | DNS | Proxy ana bilgisayar adı yanlış yazılmış | Adı panelden kopyalayıp yeniden yazın |
| Hedeften `403` / `429` | Hedef site | Proxy çalışıyor; sorun hız ya da IP türü | Batching ve Wait ile yavaşlayın, nedeni teşhis edin |

`400` satırı n8n'e özgü bir geçmişi anlatır. HTTP Request düğümü arka planda Axios kütüphanesini kullanır ve Axios'un yerleşik proxy desteği, HTTPS hedeflerde [`CONNECT` tüneli](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/CONNECT) açmak yerine isteği proxy'ye doğrudan göndermesiyle bilinir. n8n deposundaki [#9169 numaralı kayıt](https://github.com/n8n-io/n8n/issues/9169) bu davranışın düğümde `400` hatasına yol açtığını belgeler. Kayıt 2024 tarihlidir. Denediğimiz güncel sürümde düğüm, HTTPS hedef için proxy'de `CONNECT` tüneli açtı ve sayfayı sorunsuz aldı. Eski bir n8n sürümünde HTTP adresler proxy'den geçerken HTTPS adresler `400` veriyorsa ilk adım güncellemektir.

Tarayıcıda "proxy sunucusu yanıt vermiyor" uyarısı görüyorsanız sorun n8n'den bağımsızdır; [Proxy Sunucusu Yanıt Vermiyor](/tr/blog/proxy-server-not-responding) yazımıza bakın.

## Kullanım alanları

- **Fiyat ve stok izleme:** günde bir çalışan, değişiklikte bildirim gönderen akışlar. Kurgu yukarıdaki örnekle aynıdır; ürün tarafı [fiyat takibi](/tr/price-monitoring) sayfamızda.
- **Konuma göre değişen içeriğin kontrolü:** aynı sayfanın farklı ülkelerden nasıl göründüğünü karşılaştırmak için aynı düğümü farklı ülke çıkışlı proxy'lerle çalıştırmak. Geniş ülke kapsamı için [Residential Proxy](https://proxynet.io/tr/residential-proxy) kullanılır.
- **Küçük ölçekli içerik toplama:** haber başlıkları, ilan sayıları, herkese açık kataloglar. Ölçek büyüdüğünde [web crawler](/tr/web-crawler) çözümüne geçmek daha doğrudur.

## Sık yapılan hatalar

- **Proxy şifresini Authentication bölümüne yazmak.** O bölüm hedef siteye gider. Proxy kimliği adresin içindedir.
- **Şemayı yazmamak.** `pr.proxynet.io:8000` yerine `http://pr.proxynet.io:8000` yazın; şemasız adres hata vermeden yok sayılabilir.
- **Proxy ekleyince hız sınırını unutmak.** Yüz öğelik bir liste, Batching ya da Wait yoksa yüz isteği aynı anda gönderir.
- **Giriş gerektiren ya da kişisel veri içeren sayfaları otomasyona bağlamak.** Platform şartlarını ve KVKK'yı çiğneyen bir akışı proxy meşru kılmaz; yasal çerçeveyi [Web Scraping Yasal mı?](/tr/blog/web-scraping-legal) yazımızda özetledik.

## Karar rehberi

| İhtiyaç | Öneri |
|---|---|
| n8n Cloud kullanıyorum, tek bir düğüm proxy'den çıksın | HTTP Request → Options → Proxy, kullanıcı adı ve şifreyle |
| Self-hosted n8n'de bütün düğümler proxy'den çıksın | `HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY`; ardından düğüm düğüm doğrulama |
| Genel ayar var ama bir düğüm farklı ülkeden çıkmalı | O düğümde Proxy seçeneği; genel ayarı ezer |
| Her istekte farklı IP | Dönen uç nokta; Code düğümüyle rotasyon yazmayın |
| Karşı taraf IP'mi izinli listeye alacak | Sabit IP'li proxy (ISP) ya da sabit IP'li kendi sunucunuz |
| Sayfa JavaScript ile yükleniyor, HTML düğümü boş dönüyor | HTTP Request yetmez; tarayıcı otomasyonu ya da sitenin arka plandaki JSON uç noktası |

## Sıkça sorulan sorular

### n8n Cloud'da proxy kullanılabilir mi?

Evet, HTTP Request düğümündeki Proxy seçeneği Cloud'da da vardır; ortam değişkenleri ise kullanılamaz. Cloud'un çıkış IP'leri sabit olmadığından proxy'ye IP whitelist ile değil, kullanıcı adı ve şifreyle bağlanın.

### N8N_PROXY_HOPS ne işe yarar?

n8n'in önünde kaç tane ters proxy (nginx, Caddy, bulut yük dengeleyici) bulunduğunu söyler; varsayılan değeri `0`'dır. Dışarı giden isteklerle ve bu yazıdaki proxy ayarıyla ilgisi yoktur.

### Düğümdeki Proxy ayarı mı, ortam değişkeni mi önceliklidir?

Düğümdeki ayar. n8n dokümanı böyle yazar; yerel denememizde de ortam değişkeni kapalı bir porta işaret ederken Proxy seçeneği dolu olan düğüm kendi proxy'sinden çıktı.

### Zapier'da da aynı ayar var mı?

Hayır. Zapier'ın Webhooks adımında adres, veri, başlık ve temel kimlik doğrulama alanları bulunur; proxy alanı yoktur. İsteği bir proxy'den geçirmek için araya kendi küçük servisinizi koymanız gerekir: Zapier o servise istek atar, servis de hedefe proxy üzerinden gider.

### Proxy şifremi akışın içinde düz metin tutmak zorunda mıyım?

Düğüm seçeneğini kullanıyorsanız evet, alan düz metindir. Self-hosted kurulumda şifreyi akıştan çıkarmanın yolu ortam değişkenleridir: kimlik bilgisi sunucunun yapılandırmasında kalır, akış JSON'una girmez. Sabit IP'li bir sunucunuz varsa IP whitelist de şifreyi tamamen ortadan kaldırır.

### HTTP Request ile her siteden veri çekilebilir mi?

Hayır. Düğüm JavaScript çalıştırmaz, bu yüzden içeriği tarayıcıda oluşan sayfalarda aradığınız alan yanıtta bulunmaz. Bot koruması kullanan siteler de proxy'den bağımsız olarak doğrulama sayfası döndürebilir. Böyle bir durumda yapılacak şey korumayı zorlamak değil, sitenin resmi API'sine ya da veri ortaklığı seçeneklerine bakmaktır.

## Özetle

n8n'de proxy iki yerde tanımlanır: HTTP Request düğümünün Options bölümündeki Proxy alanı ve self-hosted kurulumdaki `HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY` değişkenleri. Kimlik bilgisi adresin içine yazılır, düğüm ayarı genel ayarı ezer, `N8N_PROXY_HOPS` ise yalnızca ters proxy arkasındaki kurulumları ilgilendirir. Proxy hız sınırının yerini tutmaz: Batching ya da Wait ile yavaşlayın, `429` gördüğünüzde bekleyin, resmi API varsa onu seçin. İş akışlarınıza uygun IP türlerini [proxy hizmetlerimiz](/tr/proxy) sayfasında karşılaştırabilirsiniz.
