Empat protokol yang dilabel "proksi" berkongsi sedikit sahaja selain nama. Proksi HTTP menghurai Lapisan 7 dan menulis semula pengepala; proksi SOCKS tidak membaca trafik anda langsung. Perbezaan ini menentukan proksi mana yang sesuai untuk melayari, mengikis, dan terowong mentah.
Proksi HTTP
Proksi HTTP menjangkakan semantik HTTP. Ia membuka permintaan, membaca URL, boleh melampirkan pengepala seperti Via atau X-Forwarded-For, dan menolak apa-apa yang bukan permintaan HTTP yang sah. Pelayar, curl, dan kebanyakan pustaka pengikisan lalai kepada proksi HTTP kerana konfigurasi pada dasarnya percuma — tetapkan satu pembolehubah persekitaran atau hantar bendera.
Kos kesederhanaan itu ialah keterlihatan. Proksi melihat URL penuh, termasuk laluan dan rentetan pertanyaan, dan dalam HTTP teks biasa ia juga melihat badan. Proksi caching boleh menulis semula respons; proksi telus boleh menanggalkan kuki. Anggap mana-mana proksi HTTP sebagai perantara berkeistimewaan penuh dan jangan sekali-kali menghantar kelayakan melalui teks biasa.
Proksi HTTPS dan Kaedah CONNECT
"Proksi HTTPS" adalah label yang sedikit mengelirukan. Ia merujuk kepada proksi HTTP yang turut melaksanakan kaedah CONNECT. CONNECT memberitahu proksi untuk membuka terowong TCP mentah ke hos sasaran dan mengangkut bait dalam kedua-dua arah; klien dan destinasi kemudian merundingkan TLS seolah-olah proksi tidak wujud. Proksi melihat hos dan port destinasi, serta jumlah bait, tetapi bukan muatan.
Oleh itu, proksi yang "menyokong HTTPS" adalah proksi yang menyokong terowong TLS, bukan proksi yang berjalan melalui TLS. Pautan dari mesin anda ke proksi boleh menjadi teks biasa atau disulitkan secara bebas. Jika anda mengambil berat tentang perlindungan pautan tersebut, gunakan pelaksanaan SOCKS5-over-TLS atau proksi komersial berbayar yang menerbitkan titik akhir TLSnya.
SOCKS4
SOCKS4 adalah minimum 1994: TCP sahaja, IPv4 sahaja, tiada UDP, tiada IPv6, tiada pengesahan, tiada resolusi nama hos di proksi. Jabat tangan adalah enam bait ditambah kod respons satu bait. Ia masih wujud kerana protokolnya sangat kecil sehingga hampir mana-mana alat yang sedar TCP boleh melaksanakannya dengan betul. Jika senarai mengiklankan SOCKS4, jangkakan pemajuan TCP mentah ke alamat IPv4 — dan tiada yang lain.
SOCKS5
SOCKS5, yang ditakrifkan dalam RFC 1928 (1996), adalah versi yang digunakan oleh kebanyakan alat moden. Ia menambah pemajuan UDP, alamat IPv6, pengesahan GSSAPI, dan pilihan untuk menyelesaikan nama hos di proksi dan bukannya di klien. Oleh kerana SOCKS5 tidak membuat andaian tentang lapisan aplikasi yang berjalan di atasnya, ia adalah pilihan paling fleksibel untuk beban kerja bukan HTTP: SSH, IRC, BitTorrent, RPC tersuai.
Prestasi dan Overhed
Proksi SOCKS mempunyai overhed per-permintaan yang lebih rendah kerana mereka tidak menghurai apa-apa. Proksi HTTP dan HTTPS membayar untuk penghuraian permintaan penuh pada setiap sambungan. Untuk satu sesi TLS yang panjang dalam CONNECT, perbezaannya boleh diabaikan. Untuk ribuan permintaan pendek di mana proksi membuka sambungan baru setiap kali, SOCKS5 menang dengan ketara — biasanya 2–5 ms setiap permintaan untuk laluan penghuraian.
Tanpa Nama, dalam Amalan
Proksi HTTP yang tidak menanggalkan pengepala anda boleh membocorkan IP klien anda melalui Via, X-Forwarded-For, atau Forwarded. Proksi SOCKS tidak mempunyai pengepala sedemikian kerana mereka tidak mempunyai konsep pengepala. Itu bukan ciri tanpa nama tetapi lebih kepada ketiadaan permukaan kebocoran. Di dalam HTTPS yang diterowong CONNECT, destinasi hanya melihat jabat tangan TLS, jadi sebarang kebocoran peringkat HTTP di proksi adalah tidak relevan.
Konvensyen Port
Anda akan melihat ini dalam direktori ini: 80, 8080, 3128, 8888 untuk HTTP; 443 untuk titik akhir yang menyokong secara eksplisit CONNECT; 1080 untuk SOCKS. Banyak penyedia mendedahkan port tinggi bukan standard (melebihi 10,000) untuk mengelak pengimbasan port kasual. Nombor port tidak mengatakan apa-apa tentang kualiti — ia hanya menandakan apa yang pengendali pilih untuk didedahkan.