curl proxy kurulumu: kimlik doğrulama, HTTPS CONNECT ve güvenilir kontroller
Açık bir curl proxy ayarlayın, -U'yu -u'dan ayırın, HTTPS'i -k olmadan CONNECT üzerinden gönderin ve çıkış kodlarını gerçekten kullandığınız yola göre okuyun.
PATH'te zaten curl olan ve kanıtlayabileceği bir HTTP veya SOCKS hop'u gerekenler için bu rehber. Aşağıdaki kontroller satıcı hesabı değil, yerel bir loopback origin ve sahte proxyler kullandı. Top Proxy IP satmaz; burada ücretsiz anahtar da yok. Tarayıcıdaki IP adresim sayfası tarayıcı yolunu gösterir, bu curl sürecini değil.
01Kontrolleri yaşayan bir proxy üzerinde çalıştırın
Bu yazıdaki sayılar, curl 8.7.1 üzerinde kontrollü bir loopback ölçümünden geldi. O ölçüm yöntemdir. Bu sayfada indirilecek bir paket yoktur ve herkese açık indirme de yoktur.
Hâlâ çalışan bir proxy ve origin'e karşı sıradan curl kullanın. Sahte lab-user:lab-pass bir etikettir, hesap değildir. Komuta canlı ana bilgisayarınızı, portunuzu ve CA'nızı koyun. Kayıtlı geçişteki 60585 ailesi portları yeniden kullanmayın. Ölçüm bitince o uçlar gitmişti.
curl -q -sS --noproxy '' -x http://127.0.0.1:PROXY_PORT --proxy-user lab-user:lab-pass http://127.0.0.1:ORIGIN_PORT/identity
Aynı HTTP hop üzerinden HTTPS yine CONNECT kullanır. Şu an konuştuğunuz origin'e uyan CA'ya güvenin.
curl -q -sS --noproxy '' -x http://127.0.0.1:PROXY_PORT --proxy-user lab-user:lab-pass --cacert ca.pem https://localhost:ORIGIN_HTTPS_PORT/identity
02Açık bir HTTP proxy ayarlayın ve yolu doğrulayın
curl'ü ilk seçenek olarak -q ile başlatın. Kurulu 8.7.1 man curl ve curl man sayfası ikisi de ilk konumdaki -q'nun curlrc'yi atladığını söyler. Çevrimiçi kılavuzlar daha yeni bayrakları anlatabilir. Bu anlatım 8.7.1'de kalır. rc dosyanız bir proxy, bir CA paketi veya --user enjekte ediyorsa sonraki her bayrak bir hayaletle tartışır. Dosyayı gizlemek için HOME'u yeniden yazmayın. -q, ikilinin zaten verdiği yalıtımdır.
Hop'u -x / --proxy ile gösterin. Şema yoksa curl ana bilgisayarı HTTP proxy sayar. everything curl'deki HTTP proxyler HTTP hedefler için absolute-form iletmeyi anlatır. Laboratuvarın alpha proxy'si GET http://127.0.0.1:60585/identity kaydetti, sonra origin JSON'unu döndürdü. Tek başına durum 200 yol değildir. Origin via_proxy_header: alpha yansıttı. beta adlı ikinci, günlüğe yazan proxy o çağrıda boş durdu.
curl -q --versionçalıştırın ve libcurl satırını saklayın. Bu anlatım curl 8.7.1, libcurl 8.7.1, SecureTransport artı LibreSSL 3.3.6 kullandı. ÖzelliklerdeHTTPS-proxyvardı. O bayrak, bir proxy'ye TLS hakkındadır. SOCKS kanıtlamaz, CONNECT de kanıtlamaz.- Origin'i bir kez
-xolmadan çağırın. Doğrudan HTTP çıkış 0, HTTP 200, origin kimliğihttp-origindöndürdü ve sahte proxy hiçbir şey almadı. Bu kontroldür. - Aynı URL'yi
-x,--noproxy ''ve sahte--proxy-userile çağırın.--noproxy '', kabukNO_PROXYloopback'i atlayacak olsa bile proxy'yi zorlar. Origin gövdesi alpha dedi. Hop Proxy-Authorization tüketti. Origin onu görmedi. - Yalnızca stdout değil, proxy günlüğünü okuyun. Bu düzenekte eksik kimlik bilgileri,
--failkapalı olduğu için HTTP 407 ve curl çıkış 0 döndürdü.
curl -q -sS --noproxy '' -x http://127.0.0.1:PROXY_PORT --proxy-user lab-user:lab-pass http://127.0.0.1:ORIGIN_PORT/identity
PROXY_PORT ve ORIGIN_PORT hâlâ ayakta olan bir düzenekten gelmelidir. Kayıtlı sonuçlardaki süresi dolmuş portlar değildir.

Yanlış sahte kimlik bilgileri de 407 ve çıkış 0 döndürdü. Düzenek auth: wrong işaretledi. Doğru kimlik bilgileri origin 200 ve auth: correct döndürdü. Sahte paroladaki ayrılmış karakterler yapıştırılmış bir URL'den değil, --proxy-user üzerinden gitti. Bileşen bazında URL kodlama diğer yasal yoldur. Kaçınabiliyorsanız gerçek parolaları argv'ye koymayın. Süreç listeleri argümanı bir an yine görür. 8.7.1 kılavuzu bunu söyler.
Bir ana bilgisayarın HTTP'ye yanıt verip vermediğini bilmek yeterse proxy kontrolü kullanın. Bir erişilebilirlik aracıdır. Bu curl süreci değildir.
03Proxy kimlik doğrulamasını origin kimlik doğrulamasından ayrı tutun
-U / --proxy-user proxy'ye kimlik doğrular. -u / --user origin'e kimlik doğrular. everything curl'de proxy kimlik doğrulama bunları bilinçli olarak bağımsız tutar. Karıştırmak, geçit parolasını uygulama girişine sızdırmanın veya tersinin yoludur.
Laboratuvar origin'i /origin-auth yolunu kendi Basic meydan okumasıyla sundu. Bir komut dummy -U'yu alpha'ya, dummy -u'yu origin'e gönderdi. Origin JSON'u origin_authorized: true ve proxy_authorization_present: false dedi. Hop Proxy-Authorization tüketti. Origin onu hiç görmedi.
- Proxy kimlik bilgilerini
-U'ya veya proxy URL userinfo'suna koyun, asla-u'ya değil. - Origin kimlik bilgilerini
-u'ya, gerçekten istediğiniz bir netrc'ye veya origin URL'sine koyun. Bu laboratuvar boş özel bir netrc ve--netrckullanmadı; sürpriz bir giriş hata olurdu. - Origin'i doğrulayın. Proxy'den 200, origin'den 401, hop'tan 407'den farklı bir başarısızlıktır.
curl -q -sS --noproxy '' -x http://127.0.0.1:PROXY_PORT --proxy-user lab-user:lab-pass -u origin-user:origin-pass http://127.0.0.1:ORIGIN_PORT/origin-auth

--fail olmadan HTTP 407, bu yapıda curl'ü çıkış 0'da bıraktı. Aynı eksik kimlik bilgisi çağrısına -f eklemek HTTP 407 ve çıkış 22 döndürdü. Kurulu kılavuz, 401 ve 407'nin --fail'den sızabileceğini uyarır. Bu çalışmada 8.7.1'de sızmadılar. Bunu her gelecek curl'e genellemeyin. Durumu, CONNECT durumunu ve çıkışı ayrı kaydedin. --fail-with-body, belgeyi yine yazan kardeştir. Burada varsayılan değildi.
Bu yazıdaki dummy kullanıcılar etikettir. Hesap değildir. Laboratuvardaki ayrıntılı izlerde Authorization ve Proxy-Authorization değerleri diske herhangi bir dosya düşmeden önce [REDACTED] olarak silindi.
04TLS'i kapatmadan CONNECT üzerinden HTTPS'e ulaşın
HTTP proxy önündeki bir HTTPS sitesi yine HTTP proxy'dir. curl CONNECT host:port gönderir, proxy TCP açar, sonra TLS o tünelden origin'e koşar. Bunun için https:// proxy şemasına ihtiyacınız yoktur. https:// proxy şeması, proxy'nin kendisine TLS'dir. everything curl HTTP proxyler ve HTTPS proxy bölümü bu hop'ları ayırır. Bu laboratuvar bir HTTPS proxy ayağa kaldırmadı. --proxy-cacert ölçülmedi. --cacert CONNECT sonrası origin'i doğruladı.
- URL
https://localhost:PORT/identityolsa bile-x'ihttp://127.0.0.1:PORTüzerinde tutun. - Laboratuvar CA'sına
--cacertile güvenin.-keklemeyin. - 200'e güvenmeden önce bir CONNECT günlük satırı isteyin. Alpha
CONNECT localhost:60586kaydetti,auth: correctve durum 200 ile, sonra origin gövdesihttps-origindedi. --cacertolmadan bir kez tekrarlayın. CONNECT yine başarılı oldu. curl sonra çıkış 60 verdi, TLS eş sertifika hatası. Tünel sağlamdı. Sertifika değildi.
curl -q -sS --noproxy '' -x http://127.0.0.1:PROXY_PORT --proxy-user lab-user:lab-pass --cacert ca.pem https://localhost:ORIGIN_HTTPS_PORT/identity
--cacert, hâlâ çalışan bir düzenekten gelen CA olmalıdır. Tek atımlık başlatıcı çıktıktan sonra artakalan evidence/ca.pem'e işaret etmeyin ve kayıtlı çalıştırmadaki silinmiş geçici yolu yeniden kullanmayın.

CONNECT'te eksik proxy kimlik bilgileri, HTTP 407 artı çıkış 0 yoluna benzemedi. Düzenek CONNECT'te yine 407 yanıtladı. curl 8.7.1 çıkış 56 verdi ve write-out HTTP kodu 000 oldu. Yanlış kimlik bilgileri aynı şeyi yaptı. CONNECT başarısızlıklarını taşıma sayın; sonra ayrıştırabileceğiniz sessiz bir HTML 407 değil.
Laboratuvar CA'sıyla doğrudan HTTPS 200 döndürdü. O olmadan doğrudan HTTPS çıkış 60 döndürdü. Bu çift TLS taban çizgisidir. Proxy'den bağımsızdır.
Tarayıcıdaki bir IP adresim sekmesi bu tüneli yine göstermez. Tarayıcı istiyorsanız tarayıcıyı yapılandırırdınız.
05Ortam proxylerini ve kasıtlı atlamayı anlayın
curl http_proxy, https_proxy, all_proxy ve NO_PROXY okur. Proxy ortam değişkenleri CGI tuzağı konusunda açıktır. Gelen Proxy: başlıkları büyük harfle HTTP_PROXY olur. curl bu yüzden HTTP için yalnızca küçük harfli http_proxy kabul eder. Büyük harfli HTTPS_PROXY ve ALL_PROXY kendi şemaları için geçerli kalır.
Laboratuvar her çocuğu temiz bir ortamdan başlattı. Proxy değişkenlerinin her iki harf durumunu, CGI REQUEST_METHOD artıklarını, CURL_CA_BUNDLE, SSL_CERT_FILE, SSL_CERT_DIR, SSLKEYLOGFILE ve REQUESTS_CA_BUNDLE'ı sildi. Sonra her seferinde adlı bir dummy enjekte etti. curl'de trust_env= anahtarı yoktur. Requests trust_env=False ayrıca CA ve netrc bakışını da değiştirir. O bayrağı curl'e kopyalamayın. -q artı temiz bir çocuk ortamı eşdeğer yalıtımdır.
- Küçük harfli
http_proxy'yi alpha'ya ayarlayın,--proxy-usergeçin ve--noproxy ''ekleyin. Origin alpha dedi. Bu yalnızca ortam yönlendirmesidir. - Büyük harfli
HTTP_PROXY'yi aynı alpha URL'sine ayarlayın ve-x'i atlayın. Origin doğrudan geldi. Alpha'nın olay sayısı kıpırdamadı. Bu, bu ikili üzerinde ölçülen belgelenmiş güvenlik kuralıdır. http_proxy'yi alpha'ya ayarlayın ve açık-xbeta geçin. Origin beta dedi. Alpha seçilen hop değildi. İki proxy kimliği, bir yerden gelen 200 tahminini yener.http_proxy'yi alpha'ya,NO_PROXY=127.0.0.1'e ayarlayın,--noproxy ''olmadan. Origin doğrudan oldu ve alpha boş durdu. Bu, kasten çalıştırılan atlama durumudur.NO_PROXY=127.0.0.1'i tutun ve--noproxy ''ekleyin. Boş liste değişkeni ezer; 8.7.1 kılavuzu 7.53.0'dan beri bunu söyler. Origin yine alpha dedi.

Hop'u HTTP 200'den asla çıkarmayın. Doğrudan ve proxylenmiş başarı, yolu damgalamadıysanız gövdede aynı durur. Düzenek iletilen HTTP'ye X-Lab-Proxy damgaladı. CONNECT, TLS içindeki origin'e damga vuramaz; kanıt CONNECT günlüğüdür.
06SOCKS5 ve SOCKS5h'i el sıkışması kanıtıyla karşılaştırın
SOCKS, HTTP iletme değildir ve CONNECT de değildir. everything curl'deki SOCKS bölümü tabloyu kısa tutar. SOCKS5 yerelde çözer. SOCKS5h ana bilgisayar adını proxy'ye gönderir. --socks5 ve --socks5-hostname bayrak biçimleridir. -x üzerindeki socks5:// ve socks5h:// URL biçimleridir.
Apple'ın curl 8.7.1'i protokol listesinden socks'u çıkarır ve SOCKS proxy seçeneklerini yine taşır. Başarılı bir SOCKS isteği DNS'in nerede olduğunu kanıtlamaz. El sıkışması ATYP'idir.
http://127.0.0.1:ORIGIN/identity'ye--socks5 127.0.0.1:PORTHTTP 200 ile tamamlandı. Düzenek ATYP ipv4 ve adres127.0.0.1kaydetti.http://lab.curl-fixture.test:ORIGIN/identity'ye--socks5-hostname 127.0.0.1:PORTHTTP 200 ile tamamlandı. Düzenek ATYP domain ve adreslab.curl-fixture.testkaydetti. Proxy o laboratuvar ana bilgisayar adını loopback'e eşledi. Bu eşleme düzenek tesisatıdır, genel DNS'e ölçülmüş bir sızıntı değil.- Orada durun. Bu yazı dış bir çözümleyici yakalama iddiasında bulunmaz.
curl -q -sS --noproxy '' --socks5-hostname 127.0.0.1:SOCKS_PORT http://lab.curl-fixture.test:ORIGIN_PORT/identity

Sağlayıcı belgeleri aynı ayrımı izler. Oxylabs residential protokoller socks5h://pr.oxylabs.io:7777'yi ana bilgisayar adını geçirmek, socks5://'yi çözülmüş bir IP geçirmek diye belgeler. Katalogda hâlâ Smartproxy olarak listelenen Decodo residential protokoller gate.decodo.com:7000 üzerinde socks5h:// belgeler ve us.decodo.com gibi ülke ana bilgisayarlarının SOCKS5 için çalışmadığını söyler. Bunlar belgelenmiş uyum notlarıdır. Bu loopback çalıştırması değildir.
Protokol IP türü değildir. Mobil ve Residential sayfaları çıkış havuzlarını anlatır. SOCKS5 ile HTTP istemci el sıkışmasıdır. Residential bir HTTP hop'unuz veya datacenter bir SOCKS hop'unuz olabilir. Bu düğmeleri birleştirmeyin.
07Bağlantı hatasını aktarım zaman aşımından ayırın
--connect-timeout DNS artı TCP artı, TLS için, el sıkışmasını sınırlar. --max-time tüm aktarımı sınırlar. everything curl'de zaman aşımları --max-time'ın veri hareket ederken de ateşlediğini söyler. Çıkış 28 o zamanlayıcıdır. Requests tarzı bir okuma zaman aşımı değildir.
Bu laboratuvar bir bağlanma zaman aşımı ölçmedi ve paket yakalamadı. Çıkış 7, bir UDP soketinin sahip olduğu geçici loopback porta TCP bağlanmasından geldi. curl Couldn't connect to server yazdırdı, HTTP kodu 000. Bu bir bağlantı hatasıdır. Çıkış 28 değildir.
Gecikmeli gövde yolu diğer şekildir. /slow-body tam başlıkları hemen gönderdi, ilk gövde baytı H'yi flush etti, sonra kalanından önce --max-time 1.5'i bekledi. curl HTTP 200 bildirdi, 000 değil, ve çıkış 28 verdi. Origin ilk bayt olayı kurulmuştu. Alpha GET .../slow-body iletmişti. Bu, gövde başladıktan sonra bir aktarım zaman aşımıdır.
- Ölü bir hop için bağlanma hatası bekleyin. Burada sahip olunan bir loopback porta karşı çıkış 7 idi.
- Yavaş bir gövde için başlıklar ve bir ilk bayt, sonra
--max-time, sonra gerçek HTTP 200 ile çıkış 28 isteyin. Kod 000 iddiayı düşürürdü. - El sıkışmasını gerçekten durdurmuyorsanız
--connect-timeout'u belgelendiği gibi bırakın. Bu çalıştırma durdurmadı.
curl -q -sS --noproxy '' -x http://127.0.0.1:PROXY_PORT --proxy-user lab-user:lab-pass --max-time 1.5 http://127.0.0.1:ORIGIN_PORT/slow-body

Yeniden denemeler ayrı bir anahtardır. --retry, 8.7.1'de her denemede --max-time sayacını sıfırlar. Açarsanız yeniden deneme penceresini --retry-max-time ile sınırlayın. Bir yeniden deneme bayrağını POST için idempotency saymayın.
08Belgelenmiş protokol ve kimlik doğrulama uyumuna göre bir uç seçin
Hop'u satıcının belgelendirdiği gibi seçin, sonra sahip olduğunuz bir düzenekte curl'ü kanıtlayın. Ücretli geçitler aranmadı. Ülke hedefleme, bot karşıtı folklor ve «en iyi hizmet» sıralamaları kapsam dışıdır.
14 Ekim 2026'da alınan Oxylabs residential protokoller HTTP'yi pr.oxylabs.io:7777 üzerine -U customer-USERNAME:PASSWORD ile koyar. Aynı sayfa geçide TLS istediğinizde https://pr.oxylabs.io:7777, proxy'nin ana bilgisayar adını görmesini istediğinizde socks5h://pr.oxylabs.io:7777 ekler. SOCKS5 o sayfada ülkeye özel giriş ana bilgisayarları kullanmaz.
Aynı gün Decodo residential protokoller HTTP'yi gate.decodo.com:7000 ve SOCKS5h'i aynı ana bilgisayara koyar. Bu belgelenmiş şemaları canlı İngilizce kartlarda Oxylabs ve Smartproxy / Decodo ile karşılaştırın. Bu katalog uyumudur, geçit testi değil.
- Şemayı istemci desteğine uydurun. Buradaki curl 8.7.1 HTTP iletme, CONNECT, SOCKS5 ve SOCKS5h konuştu. HTTPS proxy'ye TLS belgelerde kalan bir satırdır.
- Kimlik doğrulamayı
-U'ya uydurun, satıcının belgelendirdiği kullanıcı adı önekleriyle. Origin-uo dizgenin dışında kalır. - Yalnızca bir ana bilgisayarda HTTP ile SOCKS'u ayırmak istiyorsanız hop'u proxy kontrolü ile kontrol edin. Çıkış IP'sini tarayıcı sekmesinde değil, curl'de kontrol edin. curl'ü herhangi bir ücretli uca yöneltmeden önce hop'u sahip olduğunuz yaşayan bir proxy'de kanıtlayın.


| Gözlem | HTTP durumu | CONNECT durumu | curl çıkışı | Ne değişmeli |
|---|---|---|---|---|
| HTTP proxy, doğru dummy kullanıcı | 200 | yok | 0 | Yol, yalnızca proxy kimliği uyuyorsa kanıtlanmıştır |
| HTTP proxy, eksik veya yanlış kullanıcı | 407 | yok | -f olmadan 0; 8.7.1'de -f ile 22 | -U'yu düzeltin. Her 407'nin 22 olacağını varsaymayın |
| HTTP proxy üzerinden HTTPS, güvenilen CA | 200 | 200 Connection Established | 0 | Origin'de --cacert tutun. -k eklemeyin |
| HTTP proxy üzerinden HTTPS, eksik proxy kullanıcısı | 000 | 407 | 56 | CONNECT 407 bu yapıda bir taşıma hatasıdır |
| HTTPS, CONNECT tamam, güvenilmeyen origin | 000 | 200 | 60 | CA'yı düzeltin. Tünel zaten çalıştı |
Yalnızca büyük harfli HTTP_PROXY | 200 doğrudan | yok | 0 | Küçük harfli http_proxy veya açık -x kullanın |
| Sahip olunan portta TCP bağlanma reddi | 000 | yok | 7 | Bağlantı hatası. Zaman aşımı değil |
Başlıklar ve ilk bayt, sonra --max-time | 200 | yok | 28 | Aktarım bütçesi. Bağlanma hatası değil |
curl'de proxy nasıl yapılandırılır?
HTTPS bir HTTP proxy kullanabilir mi?
-U ile -u nasıl ayrılır?
curl büyük harfli HTTP_PROXY'yi neden yok sayar?
socks5h ana bilgisayar adını nerede çözer?
--connect-timeout ve --max-time neyi sınırlar?
İlgili yazılar
Residential proxy nedir ve nasıl çalışır
Residential proxy, tüketici ISP adreslerinden çıkar. Havuz, sticky oturum, sitenin ne gördüğü ve satın almadan önce sağlayıcıya sorulacaklar.
4 dk2026'da web kazıma için en iyi proxy: alıcı kontrol listesi
2026 kazıma alımı satıcıdan değil hedeften başlar. Ölçeklemeden önce köken, oturum, coğrafya, faturalama ve canlı test için bu listeyi kullanın.
5 dkSticky ve rotating proxy: oturum kontrolü nasıl çalışır
Sticky ve rotating proxy: istek başına ve zamanlayıcılı rotasyon, sticky oturumun yeni IP'den ne zaman üstün olduğu, çerezlerin IP değişimiyle ilişkisi ve oturum kimliğini kendiniz nasıl test edeceğiniz.
13 dk



