İçeriğe geç
Guides 3 dk okuma 870 görüntülenme

Swift'te Proxy Kullanımı

iOS ve macOS için Swift'te proxy kurulumu: URLSession, Network framework'ü, SOCKS5 ve sistem yapılandırması.

Swift'te Proxy Kullanımı

Swift'te Proxy Kullanımı

Swift'te Proxy'ler

Swift, iOS ve macOS uygulamaları geliştirmek için kullanılan başlıca dildir. Swift'te proxy'lerle çalışmak URLSession (üst düzey API), Network framework'ü (alt düzey) ve sistem ayarları üzerinden yapılır.

Proxy ile URLSession

URLSessionConfiguration ile yapılandırma

import Foundation

let config = URLSessionConfiguration.default

// HTTP proxy yapılandırması
config.connectionProxyDictionary = [
    kCFNetworkProxiesHTTPEnable: true,
    kCFNetworkProxiesHTTPProxy: "proxy_ip",
    kCFNetworkProxiesHTTPPort: 8080,
    kCFNetworkProxiesHTTPSEnable: true,
    kCFNetworkProxiesHTTPSProxy: "proxy_ip",
    kCFNetworkProxiesHTTPSPort: 8080
]

let session = URLSession(configuration: config)

let url = URL(string: "https://httpbin.org/ip")!
let task = session.dataTask(with: url) { data, response, error in
    if let data = data, let body = String(data: data, encoding: .utf8) {
        print(body)
    }
}
task.resume()

SOCKS Proxy

config.connectionProxyDictionary = [
    kCFStreamPropertySOCKSProxyHost: "proxy_ip",
    kCFStreamPropertySOCKSProxyPort: 1080,
    kCFStreamPropertySOCKSVersion: kCFStreamSocketSOCKSVersion5
]

Kimlik Doğrulamalı

config.connectionProxyDictionary = [
    kCFNetworkProxiesHTTPEnable: true,
    kCFNetworkProxiesHTTPProxy: "proxy_ip",
    kCFNetworkProxiesHTTPPort: 8080,
    kCFProxyUsernameKey: "username",
    kCFProxyPasswordKey: "password"
]

Sistem Proxy Ayarları

Otomatik Kullanım

URLSession varsayılan olarak sistem proxy'lerini kullanır:

let config = URLSessionConfiguration.default
// Varsayılan olarak sistem proxy'lerini kullanır
let session = URLSession(configuration: config)

Kullanıcı iOS/macOS sistem ayarlarında proxy yapılandırmışsa, URLSession bunları otomatik olarak kullanır.

PAC Dosyası

config.connectionProxyDictionary = [
    kCFNetworkProxiesProxyAutoConfigEnable: true,
    kCFNetworkProxiesProxyAutoConfigURLString: "http://example.com/proxy.pac"
]

Proxy Kimlik Doğrulama Challenge'ını Ele Alma

Proxy kimlik doğrulama istediğinde URLSession kendi delegate'ini çağırır:

class ProxyDelegate: NSObject, URLSessionDelegate {
    func urlSession(
        _ session: URLSession,
        didReceive challenge: URLAuthenticationChallenge,
        completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
    ) {
        if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodHTTPBasic
            && challenge.protectionSpace.isProxy {
            let credential = URLCredential(
                user: "username",
                password: "password",
                persistence: .forSession
            )
            completionHandler(.useCredential, credential)
        } else {
            completionHandler(.performDefaultHandling, nil)
        }
    }
}

let delegate = ProxyDelegate()
let session = URLSession(configuration: config, delegate: delegate, delegateQueue: nil)

Network Framework (NWConnection)

iOS 12+ / macOS 10.14+ üzerinde alt düzey ağ işlemleri için:

import Network

let proxyConfig = NWProtocolTLS.Options()
let params = NWParameters.tls

// NWEndpoint üzerinden proxy yapılandırması
let proxyEndpoint = NWEndpoint.hostPort(
    host: NWEndpoint.Host("proxy_ip"),
    port: NWEndpoint.Port(rawValue: 8080)!
)

// Bağlantı oluşturma
let connection = NWConnection(
    host: "httpbin.org",
    port: 443,
    using: params
)

connection.stateUpdateHandler = { state in
    switch state {
    case .ready:
        print("Connected")
    case .failed(let error):
        print("Failed: \(error)")
    default:
        break
    }
}

connection.start(queue: .global())

Proxy ile Alamofire

Alamofire, popüler bir Swift HTTP kütüphanesidir:

import Alamofire

let config = URLSessionConfiguration.default
config.connectionProxyDictionary = [
    kCFNetworkProxiesHTTPEnable: true,
    kCFNetworkProxiesHTTPProxy: "proxy_ip",
    kCFNetworkProxiesHTTPPort: 8080
]

let session = Session(configuration: config)

session.request("https://httpbin.org/ip").response { response in
    if let data = response.data, let body = String(data: data, encoding: .utf8) {
        print(body)
    }
}

iOS'a Özgü Noktalar

iOS'ta VPN ve Proxy'ler

iOS, proxy yapılandırmasına şu yollarla izin verir:
1. Sistem Ayarları (Ayarlar → Wi-Fi → HTTP Proxy)
2. MDM profilleri
3. NEProxySettings (Network Extension framework'ü)

Network Extension

iOS'ta tam kapsamlı bir proxy uygulaması oluşturmak için NETransparentProxyProvider kullanın:

import NetworkExtension

class ProxyProvider: NETransparentProxyProvider {
    override func startProxy(options: [String: Any]?, completionHandler: @escaping (Error?) -> Void) {
        // Proxy yapılandırması
        completionHandler(nil)
    }

    override func handleNewFlow(_ flow: NEAppProxyFlow) -> Bool {
        // Yeni bir bağlantının işlenmesi
        return true
    }
}

Bu, Apple'dan bir entitlement gerektirir ve Enterprise/MDM çözümleri için uygundur.

async/await (Swift 5.5+)

func fetchViaProxy() async throws -> String {
    let config = URLSessionConfiguration.default
    config.connectionProxyDictionary = [
        kCFNetworkProxiesHTTPEnable: true,
        kCFNetworkProxiesHTTPProxy: "proxy_ip",
        kCFNetworkProxiesHTTPPort: 8080
    ]

    let session = URLSession(configuration: config)
    let url = URL(string: "https://httpbin.org/ip")!
    let (data, _) = try await session.data(from: url)
    return String(data: data, encoding: .utf8) ?? ""
}

// Kullanım
Task {
    let ip = try await fetchViaProxy()
    print(ip)
}

Sonuç

Swift, proxy'lerle çalışmak için esnek araçlar sunar: üst düzey görevler için URLSession, alt düzey denetim için Network framework'ü ve proxy uygulamaları oluşturmak için Network Extension. Çoğu görev için connectionProxyDictionary ile URLSession en uygun seçimdir.

Güncellendi: 06.03.2026
Kategoriye dön

Bunları da okuyun

Guides 2 dk

Nike SNKRS için Proxy: Sınırlı Sürümler ve Çoklu Katılım

Nike SNKRS'ta birden fazla hesapla çekilişlere katılmak, IP limitlerini aşmak ve ban yemeden sınırlı sürümleri kapmak için residential veya mobil proxy kullanın. Hangi türü seçmeli ve nasıl kurmalı.

Guides 2 dk

iPhone'da Proxy Nasıl Kurulur (Wi-Fi ve SOCKS5)

iPhone'da proxy'yi yerleşik Wi-Fi ayarlarından (HTTP/HTTPS) veya SOCKS5 ile hücresel kapsama için Shadowrocket gibi bir uygulamayla kurun. Adım adım iOS kurulumu ve bilinmesi gereken kısıtlar.

Guides 3 dk

Tinder için proxy: çoklu hesap ve ban'lerden kaçınma

Birden fazla profil işletmek ve IP shadowban'lerinden kaçınmak için Tinder'da mobil veya residential proxy kullanın. Mobilin neden kazandığı, kurulumu ve proxy'nin şehri neden değiştirmediği.

Guides 2 dk

StockX için proxy: fiyat takibi ve hesap yönetimi

StockX'te fiyatları izlemek, birden fazla hesap çalıştırmak ve drop'ları yasaklanmadan kapmak için residential, ISP veya mobil proxy kullanın. Hangi türü seçeceğinizi ve nasıl kuracağınızı anlatıyoruz.

Guides 3 dk

OpenAI API için Proxy: Erişim, Hız Limitleri ve Kurulum

OpenAI API'yi residential veya ISP proxy üzerinden yönlendirerek desteklenen bölgelere erişin, 429 hız limitlerinden kaçının ve hesapları izole edin. Hangi proxy'yi seçmeli ve Python kurulum örnekleri.

Guides 1 dk

E2E testleri için Cypress'te proxy kurulumu

Cypress'te proxy kurulumu: HTTP_PROXY değişkenleri, cy-proxy-middleware ve coğrafi konuma bağlı içeriğin test edilmesi.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.