GitHub Proxy: Klonlama, Varlık Trafiği ve Cihaz Senkronizasyonu
GitHub’da proxy yapılandırmasının zor yanı, tek bir ayarın üç farklı trafik ailesini birden kapsamamasıdır: tarayıcıdaki arayüz, komut satırındaki git istemcisi ve betiklerin konuştuğu arayüz ayrı yollardan geçer. Bu sayfa üçünü ayrı ayrı ele alıyor.
Üç trafik ailesiWeb arayüzü, git protokolü ve otomasyon isteklerinin ayrı kapsamları.
02
Git yapılandırmasıHTTPS tarafında istemci ayarı, SSH tarafında tünel yaklaşımı.
03
Sızıntı kontrolüDNS ve WebRTC sızıntısının geliştirici kullanımında neyi açık ettiği.
04
Çoklu cihazEşzamanlı oturumlar ve cihaz başına kimlik bilgisi ayrımı.
GitHub ile çalışırken tarayıcı yalnızca yüzeydir. Depoyu klonlayan git istemcisi ayrı bir süreçtir, sürekli tümleştirme koşucusu üçüncü bir makinedir, betiğinizin çağırdığı arayüz ise dördüncü bir yolu kullanır. Tarayıcıda proxy tanımlamak bunların hiçbirini otomatik olarak etkilemez.
İkinci karmaşıklık kaynağı, ham dosya içeriğinin, sürüm varlıklarının ve kullanıcı görsellerinin ana alan adından değil ayrı ana bilgisayarlardan servis edilmesidir. Bu ayrım kasıtlıdır ve önbellekleme ile dağıtım için gereklidir; ancak dar kapsamlı bir proxy kuralı yazdığınızda ilk kırılan yer burasıdır.
Aşağıdaki bölümler bu ayrımları tek tek açıyor, ardından tünelin içinde neyin görünür kaldığına ve çoklu cihaz kullanımında nelere dikkat edileceğine geçiyor.
GitHub trafiği tek bir kalıba sığmaz
En üstte tarayıcı katmanı vardır: depo sayfaları, inceleme ekranları, ayarlar ve arama. Bu katman sıradan bir web oturumu gibi davranır, çerez taşır ve tarayıcı profilinin proxy kuralına uyar. Burada yapılan bir ayar, aynı makinedeki git komutlarını etkilemez.
Ortada git protokolü durur. clone, fetch ve push komutları ya HTTPS üzerinden 443 numaralı porttan ya da SSH üzerinden çalışır. İki taşıyıcı iki ayrı yapılandırma anlamına gelir: HTTPS tarafında istemcinin kendi proxy ayarı devreye girer, SSH tarafında ise bağlantının bir tünelden geçirilmesi gerekir.
En altta betikler ve otomasyon yer alır. Bu istekler bir jetonla kimliklenir ve genellikle bir kütüphane üzerinden gider. Kütüphanelerin çoğu ortam değişkenlerini okur; bazıları okumaz ve kendi yapılandırmasını bekler. Bir betiğin proxy kullanıp kullanmadığını varsaymak yerine sınamak gerekir.
Bu üç katmanın hangisini yönlendirmek istediğinize karar vermeden kurulum yapmayın. Yalnızca bölgesel görünümü doğrulamak istiyorsanız tarayıcı katmanı yeterlidir; sürekli tümleştirme işlerinin sabit bir adresten çıkması gerekiyorsa asıl iş alt katmandadır.
ŞEMAGitHub kullanımındaki üç trafik ailesi
Şemayı yatay kaydırarak inceleyebilirsiniz
Her katman kendi yapılandırmasını okur. Tarayıcıda yapılan bir ayar git komutlarını, git ayarı da betikleri kapsamaz; kapsamı katman katman kurmak gerekir.
Klonlama iki taşıyıcıdan geçer: HTTPS ve SSH
HTTPS ile klonlamada git istemcisi sıradan bir HTTP istemcisi gibi davranır. Proxy’yi istemcinin kendi yapılandırmasına yazabilirsiniz; bu iş için http.proxy anahtarı kullanılır ve git bu değeri HTTPS uzak sunucular için de uygular. Yalnızca belirli bir adrese kural yazmak isterseniz http.<url>.proxy biçimini kullanabilirsiniz. Depoya özel yapılandırma yazarsanız kural yalnızca o çalışma kopyası için geçerli olur, bu da farklı projeleri farklı çıkışlardan geçirmenin en temiz yoludur.
SSH tarafında durum farklıdır. SSH kendi başına HTTP proxy kavramı taşımaz; bağlantının bir ara programla tünellenmesi ya da SOCKS üzerinden taşınması gerekir. İstemci yapılandırmasında ana bilgisayara özel bir kural tanımlayıp bağlantıyı bu tünelden geçirirsiniz. Kurumsal ağlarda 22 numaralı port kapalıysa, SSH’i 443 üzerinden konuşan alternatif uç noktaya yönlendirmek yaygın bir çözümdür.
Hangi taşıyıcıyı seçeceğiniz büyük ölçüde ortamınıza bağlıdır. HTTPS, proxy ile uyumlu olması ve dar güvenlik duvarlarından geçebilmesi nedeniyle kısıtlı ağlarda daha az sürtünme yaratır. SSH ise anahtar tabanlı kimlikle çalıştığı için parola dağıtmayan ekiplerde tercih edilir.
Karma ortamlarda iki taşıyıcıyı yan yana kullanmak da mümkündür: depoların çoğunu HTTPS ile tanımlayıp tek bir projede anahtar tabanlı bağlantıya geçebilirsiniz. Adres biçimini değiştirdiğinizde kimlik yöntemi de değişir; jetonla çalışan bir kurulumdan anahtara geçerken yetki kapsamını yeniden gözden geçirmek gerekir. Tek makinede birden çok kimlik kullanıyorsanız hangi projenin hangi kimlikle konuştuğunu istemci yapılandırmasında açıkça belirtin.
SOCKS tabanlı bir tünel kurmak isterseniz SSH ile SOCKS5 tüneli yazısı adımları gösteriyor; protokolün neden bu iş için uygun olduğunu SOCKS5 proxy sayfası, HTTP tarafındaki farkı ise HTTP proxy sayfası açıklıyor.
Ham dosya ve sürüm varlıkları ana alan adından ayrılır
Bir dosyanın ham içeriğine baktığınızda, sürüm sayfasından bir arşiv indirdiğinizde veya bir kullanıcı görselini yüklediğinizde istek ana alan adına değil ayrı bir kullanıcı içeriği ana bilgisayarına gider. Depo arşivlerinin indirilmesi de benzer biçimde farklı bir uç noktaya düşer. Bu ayrım, büyük dosyaların önbelleklenebilir bir yoldan dağıtılmasını sağlar.
Proxy açısından sonucu nettir: yalnızca ana alan adını hedefleyen bir kural yazdıysanız sayfa açılır, ancak ham dosya ve indirme istekleri kuralın dışında kalıp doğrudan gider. Bu, bölgesel bir doğrulama yaparken yanıltıcı sonuç üretir; arayüz beklediğiniz ülkeden görünürken indirme trafiği gerçek adresinizden akar.
Aynı durum büyük dosya depolama eklentisinde de geçerlidir. Nesne içerikleri ayrı bir uç noktadan çekilir ve istemci bu adrese ikinci bir bağlantı açar. Kural yazarken alan adı listesi yerine kapsayıcı bir yaklaşım benimsemek, tek tek uç nokta kovalamaktan daha dayanıklıdır.
Doğrulamayı gözle yapmayın: indirmeyi başlattıktan sonra proxy tarafındaki bağlantı kaydına bakın ya da proxy kontrol aracıyla çıkışın gerçekten kullanıldığını sınayın. Ölçekli indirme yapacaksanız bant genişliği hesaplama yazısı maliyet tarafını planlamanıza yardımcı olur.
Hücre değerleri ölçüm değil, o kurulum noktasının ilgili trafiği kapsama ağırlığıdır. Koyu hücreler o ayarın belirleyici olduğu yeri, açık hücreler ise etkisiz kaldığı yeri gösterir. SSH trafiği ortam değişkenleriyle yönlendirilmez; yalnızca ana bilgisayara özel bir tünel kuralıyla taşınır.
Geliştirme ortamınız için uygun çıkışı seçin
Koşucu ve betikler için sabit adres, bölgesel doğrulama için lokasyon çeşitliliği farklı ürünlerde karşılık bulur.
Residential proxyler, Datacenter Proxyleri, IPv6 ve ISP çözümlerimizden dilediğinizi seçin. Tüm planlar sınırsız seçenekler, %99,9 çalışma süresi, rotating proxyler, sticky oturumlar ve 7/24 destek sunar. Web scraping, reklam doğrulama, SEO izleme ve dijital veri toplama için idealdir.
ISP ProxyStatik ISP kayıtlı Türkiye IP'leri
ISP kayıtlı statik Türkiye IP'leri; veri merkezi hızını gerçek operatör itibarıyla birleştirir. Uzun oturumlu ve düşük pingli kullanım için idealdir.
DNS ve WebRTC sızıntısı geliştirici tarafında neyi açık eder?
Proxy tanımlamak, alan adı çözümünün de proxy üzerinden yapıldığı anlamına gelmez. İstemci alan adını yerel çözümleyiciyle çözüp yalnızca bağlantıyı proxy’ye verirse, hangi ana bilgisayarlara gittiğiniz ağ sağlayıcınıza görünür. Geliştirici tarafında bu, sıradan bir gizlilik sorunundan fazlasıdır: kurum içi bir GitHub örneğinin alt alan adı çoğu zaman şirket adını taşır ve çözümleme kaydı bu ismi açık eder.
Şifreli bağlantılarda da alan adı el sıkışma sırasında sunucu adı göstergesiyle taşınabilir. İçerik okunamaz, ancak nereye bağlandığınız yol üzerindeki bir gözlemciye görünebilir. Bu yüzden proxy seçerken çözümlemenin nerede yapıldığı, en az çıkış adresinin kendisi kadar önemlidir. SOCKS5’te çözümlemenin istemcide mi uzak uçta mı yapıldığı ayarlanabilir; ayrıntısı SOCKS5’te DNS nerede çözülür yazısında.
Tarayıcı tarafında ikinci risk WebRTC arayüzüdür. Bir sayfa bu arayüz üzerinden gerçek yerel ve genel adresinizi öğrenebilir. Proxy yalnızca HTTP trafiğini yönlendiriyorsa bu kanal açık kalır ve dikkatle kurduğunuz çıkış görünümü tek bir sorguyla anlamsızlaşır.
Bu testleri yalnızca kurulum gününde değil, ağ tarafında bir şey değiştiğinde de tekrarlayın. İşletim sistemi güncellemesi, yeni bir tarayıcı profili ya da eklenen bir güvenlik yazılımı çözümleyici tercihini sessizce değiştirebilir ve aylar önce doğru kurulmuş bir kapsam farkında olmadan açılabilir.
Tünelin içinde ne görünür, ne görünmez?
Şifreli bir bağlantı istendiğinde istemci proxy’ye önce bir tünel açma isteği gönderir. Bu istekte hedef ana bilgisayar ve port açıkça yazılıdır; proxy nereye bağlanacağını buradan öğrenir. Kimlik doğrulama gerekiyorsa kullanıcı adı ve parola ayrı bir başlıkta taşınır.
Tünel kurulduktan sonra istemci ile sunucu arasında şifreli el sıkışma başlar. Bu aşamada sunucu adı göstergesi hâlâ görülebilir durumdadır; ondan sonrasında akan her şey proxy için anlamsız bayt dizisidir. Depo adı, dosya içeriği, taahhüt mesajları ve erişim jetonu proxy tarafından okunamaz.
Bu ayrım iki yönlü bir sonuç doğurur. Bir yandan sağlayıcınız kodunuzu göremez; öte yandan hangi ana bilgisayarlara ne sıklıkla bağlandığınız kayıt altına alınabilir. Sağlayıcı seçimini bir güven kararı hâline getiren şey tam olarak budur.
Erişim bilgisini adres satırına gömmek yaygın ama riskli bir alışkanlıktır; kabuk geçmişi, betik dosyaları ve hata çıktıları o satırı olduğu gibi saklar. Kimlik bilgisini ayrı bir yapılandırma dosyasında ya da ortam değişkeninde tutmak, kazara paylaşılan bir günlük dosyasının çıkışınızı üçüncü kişilere açmasını önler.
İpucu
Erişim jetonlarınızı proxy erişim bilgisinden bağımsız tutun ve ikisini aynı dosyada saklamayın. Tünel yaklaşımının protokol tarafını HTTP CONNECT metodu, sertifika doğrulamasının nasıl işlediğini ise TLS sertifika doğrulama yazısı anlatıyor.
ŞEMATünel açma isteğinin alan yapısı
Şemayı yatay kaydırarak inceleyebilirsiniz
İlk iki alan proxy tarafından okunur; üçüncü alanda yalnızca sunucu adı görünebilir. Dördüncü alandan sonrası proxy için anlamsız bayt dizisidir.
Çoklu cihaz ve eşzamanlı oturum davranışı
Aynı hesabı dizüstü bilgisayardan, masaüstünden, telefondan ve bir sunucudaki koşucudan aynı anda kullanmak olağandır. Platform bu eşzamanlılığı bekler; her cihaz kendi kimlik bilgisini taşır. Tarayıcı bir oturum çerezi, git istemcisi bir jeton veya anahtar, koşucu ise ayrı bir kimlik kullanır.
Proxy devreye girdiğinde dikkat edilecek nokta, tüm cihazların aynı çıkışa zorlanmasının gerekmediğidir. Aksine, her cihazın kendi bağlamına uygun bir kapsamı olması daha sağlıklıdır: geliştirici makinesi bölgesel doğrulama için bir çıkış kullanırken, koşucu sabit ve kurum tarafından tanınan bir adresten çıkabilir.
Cihaz veya süreç
Taşıdığı kimlik
Proxy kapsamı nereden gelir
Masaüstü tarayıcı
Oturum çerezi
Tarayıcı profili veya sistem ayarı
Komut satırı git (HTTPS)
Kişisel erişim jetonu
İstemcinin kendi yapılandırması
Komut satırı git (SSH)
Açık anahtar
Ana bilgisayara özel tünel kuralı
Sürekli tümleştirme koşucusu
İş jetonu
Ortam değişkenleri
Mobil uygulama
Cihaz oturumu
Yalnızca bağlı olunan kablosuz ağ
Eşzamanlı bağlantı sayısının proxy tarafında da bir sınırı olduğunu unutmayın; paralel klonlama yapan bir koşucu tek başına birkaç bağlantı açar. Sınırların nasıl hesaplandığını eşzamanlı bağlantı limiti yazısı açıklıyor.
İstek sınırları adrese mi, jetona mı bağlıdır?
Programatik erişimde kritik ayrım şudur: kimliklenmemiş istekler genellikle isteğin geldiği adrese göre sayılır, kimliklenmiş istekler ise kullanılan jetona göre. Bu ayrım, proxy’den ne beklemeniz gerektiğini de belirler.
Jetonla kimliklenen bir betikte çıkış adresini değiştirmek sayacı sıfırlamaz; sınır jetona yazılıdır. Dolayısıyla “rotasyon açarsam daha fazla istek atarım” beklentisi bu senaryoda karşılığı olmayan bir varsayımdır. Doğru yaklaşım, isteği azaltmak, sonuçları önbelleğe almak ve sunucunun döndürdüğü bekleme yönergelerine uymaktır.
Adrese bağlı sınırın anlamlı olduğu yerler farklıdır: paylaşımlı bir ofis çıkışından çalışan çok sayıda geliştirici, hepsi kimliklenmemiş istek atıyorsa aynı sayacı tüketir. Böyle bir durumda ekibe ayrı bir çıkış vermek ya da istekleri kimliklendirmek sorunu kaynağında çözer.
Otomasyonun proxy tarafındaki genel çerçevesini otomasyon ve botlar için proxy sayfası, adres havuzunun nasıl yönetileceğini ise proxy havuzu yazısı ele alıyor. Her iki durumda da platformun kullanım koşullarına uymak temel şarttır.
Ne zaman proxy gerekir, ne zaman fazladan katmandır?
Kendi ülkenizden, kendi bağlantınızla, tek bir hesapla çalışıyorsanız araya proxy koymak size bir şey kazandırmaz; yalnızca bir arıza noktası ve biraz gecikme ekler. Bu durumda yapılandırmayı olduğu gibi bırakmak en iyi karardır.
Proxy anlamlı hâle geldiği durumlar genellikle şunlardır: erişimin belirli adreslerle sınırlandırıldığı kurumsal ağlarda sabit ve tanınan bir çıkıştan konuşmak, farklı bölgelerden dağıtılan bir dokümantasyon sitesinin nasıl göründüğünü doğrulamak, test ortamının trafiğini üretim trafiğinden ayırmak ve kısıtlı bir ağdan çıkarken tek bir denetlenebilir kapı kullanmak.
Karar verirken maliyeti de hesaba katın. Klonlama ve arşiv indirme hacimli işlerdir; ölçüm yapmadan sınırsız bir kullanım varsaymak sürprizle sonuçlanır. Deneme aşamasında nelerin sınanacağını deneme sürümü nasıl test edilir yazısı sıralıyor.
Bir başka ölçüt ekip büyüklüğüdür. Tek kişilik bir kurulumda yapılandırmayı hatırlamak kolaydır; on kişilik bir ekipte herkesin makinesinde aynı ayarın doğru durduğunu varsaymak gerçekçi değildir. Bu noktada kapsamı kişisel makinelere değil, ortak koşuculara ve paylaşılan ortamlara taşımak çok daha dayanıklı bir çözüm olur.
Farklı bir ekosistemde aynı soruların nasıl karşılık bulduğunu görmek isterseniz GitLab proxy sayfası, sürekli tümleştirme ve nesne deposu tarafına daha ayrıntılı giriyor.
GitHub proxy hakkında sık sorulanlar
01Tarayıcıda proxy tanımladım, git komutları neden etkilenmiyor?
Git istemcisi tarayıcıdan bağımsız bir süreçtir ve kendi yapılandırmasını okur. HTTPS ile çalışıyorsanız istemcinin proxy anahtarlarını ayarlamanız, SSH kullanıyorsanız bağlantıyı ana bilgisayara özel bir tünel kuralıyla yönlendirmeniz gerekir.
02Sayfa açılıyor ama ham dosya indirilmiyor, sebebi ne olabilir?
Ham dosya içeriği ve sürüm varlıkları ana alan adından değil ayrı bir kullanıcı içeriği ana bilgisayarından servis edilir. Kuralınız yalnızca ana alan adını hedefliyorsa bu istekler kapsam dışında kalır. Kapsayıcı bir kural yazmak veya sistem geneli ayarı kullanmak sorunu çözer.
03SSH bağlantısını proxy üzerinden geçirmek mümkün mü?
Evet, ancak HTTP proxy ayarıyla değil. Bağlantının bir ara programla tünellenmesi ya da SOCKS üzerinden taşınması gerekir. Kurumsal ağda 22 numaralı port kapalıysa SSH’i 443 üzerinden konuşan alternatif uç noktaya yönlendirmek yaygın bir yöntemdir.
Şifreli bağlantıda hayır. Tünel kurulduktan sonra akan baytlar proxy için anlamsızdır; depo adı, dosya içeriği ve jeton okunamaz. Ancak hangi ana bilgisayara ne sıklıkla bağlandığınız proxy tarafında görünebilir.
Kimliklenmiş isteklerde hayır: sınır jetona bağlıdır, çıkış adresinin değişmesi sayacı etkilemez. Kimliklenmemiş isteklerde sayaç adrese bağlı olabilir; bu durumda doğru çözüm istekleri kimliklendirmek ve sonuçları önbelleğe almaktır.
06DNS sızıntısı geliştirici kullanımında neden önemli?
Çözümleme kayıtları hangi ana bilgisayarlara bağlandığınızı gösterir. Kurum içi bir örneğin alt alan adı çoğu zaman şirket adını taşıdığı için, çıkış adresi gizli olsa bile bağlam açığa çıkabilir. Kurulumdan sonra DNS leak testini mutlaka çalıştırın.
07Her cihaz aynı çıkışı kullanmak zorunda mı?
Hayır ve çoğu zaman gerekmez. Geliştirici makinesi bölgesel doğrulama için bir çıkış kullanırken, sürekli tümleştirme koşucusu kurum tarafından tanınan sabit bir adresten çıkabilir. Önemli olan her cihazın kapsamının bilinçli seçilmesidir.