Developer
Ke protokol mana klien diarahkan, dan skema socks5 atau socks5h mana yang disetel di klien setelah proxy dialihkan.
SOCKS5 adalah protokol proxy di lapisan transport: protokol ini membuka koneksi atas nama Anda dan memindahkan byte, tanpa membaca atau menulis ulang isinya. Setiap proxy ISP statis yang kami jual bisa dialihkan antara HTTP dan SOCKS5 pada pesanan yang sudah Anda pegang.
Mengganti protokol bukan produk yang berbeda: Anda mengalihkan proxy yang sudah Anda pegang, dari dasbor atau API, dan pesanan diperbarui dengan port dan kredensial baru untuk terhubung.
Singkatnya: SOCKS5 adalah protokol proxy, bukan jenis alamat: protokol ini meneruskan koneksi TCP tanpa membaca atau menulis ulang isinya. Setiap proxy residensial statis (ISP) yang dijual ProxyJam berjalan dengan HTTP, yang juga membawa HTTPS, atau SOCKS5, dan Anda beralih di antara keduanya pada pesanan yang sudah Anda pegang; setelah peralihan, terhubunglah dengan port dan kredensial yang ditampilkan pesanan.
SOCKS5 membawa apa pun yang bisa dibukakan koneksi TCP oleh klien Anda, termasuk trafik yang tidak bisa diteruskan proxy HTTP, dan meneruskan byte tanpa diubah. Itu menjadikannya pilihan alami untuk klien basis data, sesi SSH, atau alat apa pun yang tidak berbicara HTTP. Yang tidak dilakukannya adalah mengubah apa alamatnya. Protokol proxy dipakai antara klien Anda dan proxy; situs di ujung sana melihat koneksi dari alamat proxy, ditambah header apa pun yang dipilih untuk ditambahkan oleh proxy HTTP. Jadi pertanyaan yang layak diajukan bukan protokol mana yang dibeli. Pertanyaannya adalah alamat itu milik jaringan mana, dan di situ jawabannya adalah penyedia layanan internet yang disebutkan namanya, 19 di antaranya di Amerika Serikat.
SOCKS versi 5 diterbitkan pada 1996 sebagai RFC 1928, protokol penembus firewall yang memperluas SOCKS versi 4 dengan UDP, kerangka untuk metode autentikasi, dan tujuan yang diberikan sebagai nama domain atau alamat IPv6. Klien menawarkan metode autentikasi yang didukungnya dan server memilih salah satunya; klien lalu meminta koneksi keluar (CONNECT), port yang mendengarkan (BIND), atau relay UDP (UDP ASSOCIATE). Login dengan nama pengguna dan kata sandi punya spesifikasi singkatnya sendiri, RFC 1929, yang mengirim kata sandi dalam teks biasa, jadi jaga trafik di dalam terowongan tetap terenkripsi jika hal itu penting.
Opsi nama domain itulah yang dipilih oleh skema socks5 dan socks5h. Manual curl menggambarkan --socks5 sebagai memakai proxy “but resolve the hostname locally” (tetapi me-resolve nama host secara lokal), dan --socks5-hostname sebagai varian yang membiarkan “the proxy resolve the hostname” (proxy me-resolve nama host). Dalam URL proxy, socks5:// memberi perilaku pertama dan socks5h:// perilaku kedua, seperti dijabarkan tabel di Everything curl. Proxy HTTP yang membawa HTTPS biasanya justru menerima namanya: permintaan CONNECT menyebutkan host dan port tujuan, dan proxy membuka terowongan ke sana (RFC 9110, bagian 9.3.6). Relay UDP adalah bagian dari spesifikasi SOCKS5, tetapi implementasinya berbeda-beda; FAQ di bawah menjelaskan apa artinya bagi proxy kami.
Jika Anda sudah punya login SSH di sebuah server, Anda punya proxy SOCKS5 tanpa membelinya. ssh -N -D 1080 user@server menyiapkan apa yang disebut manual ssh OpenBSD sebagai penerusan port tingkat aplikasi “dynamic” (dinamis) lokal: ssh mendengarkan port 1080 di mesin Anda dan “will act as a SOCKS server” (akan bertindak sebagai server SOCKS), membawa setiap koneksi lewat kanal SSH terenkripsi dan membukanya dari mesin jarak jauh. -N membatasinya pada penerusan, tanpa shell jarak jauh. Arahkan klien ke socks5h://127.0.0.1:1080 dan trafiknya keluar dari server.
Perbedaannya dengan proxy SOCKS5 yang dibeli adalah tempat koneksi keluar. Melalui terowongan SSH, situs di ujung sana melihat alamat server SSH dan jaringan tempat server itu berada, yang untuk server sewaan biasanya milik perusahaan hosting. SSH mengenkripsi ruas antara Anda dan server; dari server ke situs, trafiknya tetap seperti apa adanya. Proxy ProxyJam yang dialihkan ke SOCKS5 keluar dari alamat di jaringan penyedia layanan internet yang disebutkan namanya, dipilih menurut negara dan operator saat checkout, dan Anda terhubung langsung ke sana dengan port dan kredensial di pesanan, tanpa SSH di antaranya dan tanpa server sendiri yang harus dijalankan.
Jadi keduanya menjawab pertanyaan yang berbeda. Terowongan lewat SSH mengirim trafik keluar dari mesin yang sudah Anda kendalikan. Proxy SOCKS5 di alamat ISP ditujukan untuk pekerjaan yang alamat keluarnya sendiri penting, yaitu jaringan mana yang muncul saat alamat itu di-lookup.
Tiga pertukaran singkat, dan tidak satu pun melibatkan proxy yang memahami trafik Anda.
Klien Anda menyapa proxy dan menyepakati autentikasi. Klien menawarkan metode yang didukungnya; proxy menyebutkan metode yang dikehendakinya. Pada alamat kami, itu berupa nama pengguna dan kata sandi, atau tidak ada sama sekali jika Anda justru memasukkan IP Anda sendiri ke whitelist.
Klien Anda meminta sebuah tujuan. Host dan port, dikirim sebagai alamat atau sebagai nama. Mengirim nama adalah kasus yang menarik: proxy yang me-resolve-nya, sehingga lookup keluar dari jaringan proxy, bukan dari jaringan Anda.
Setelah itu proxy hanya memindahkan byte. Proxy tidak mem-parse payload, tidak menambahkan header, dan tidak tahu apakah yang dibawanya halaman web, sesi basis data, atau transfer email. Ketidakpedulian itulah seluruh alasan memilih SOCKS5 daripada proxy HTTP.
| Proxy HTTP | HTTPS lewat CONNECT | SOCKS5 | |
|---|---|---|---|
| Apa yang bisa dibawa | Hanya permintaan HTTP | Terowongan TCP ke host dan port yang disebutkan | Aliran TCP apa pun |
| Apakah proxy membaca payload | Ya, proxy mem-parse permintaan | Tidak, setelah terowongan terbuka | Tidak, pada titik mana pun |
| Bisakah proxy mengubah header Anda | Ya, proxy meneruskannya dan bisa menambahkan miliknya sendiri, seperti Via | Tidak, setelah terowongan terbuka | Tidak, SOCKS5 tidak mengenal konsep header |
| Di mana nama host di-resolve | Di proxy | Di proxy, karena CONNECT menyebutkan host | Pilihan Anda, di ujung mana pun |
| Dukungan klien yang umum | Universal di alat HTTP | Universal di alat HTTP | Umum di alat baris perintah; sebagian library butuh paket tambahan |
| Paling cocok untuk | Permintaan web biasa | Browsing dan scraping HTTPS biasa | Protokol non-web dan trafik campuran |
Ke protokol mana klien diarahkan, dan skema socks5 atau socks5h mana yang disetel di klien setelah proxy dialihkan.
Ke protokol mana klien diarahkan, dan cara mengalihkan proxy yang sudah Anda pegang dari dasbor atau API.
Dari dasbor atau dengan satu panggilan API pada pesanan; mengubah klien saja tidak cukup. Proxy mungkin sebentar tidak tersedia selama peralihan.
Jangan memakai ulang nilai yang Anda pakai untuk terhubung lewat HTTP.
socks5h://USERNAME:PASSWORD@HOST:PORT agar proxy yang me-resolve nama host, atau socks5:// untuk me-resolve-nya di sisi Anda.
curl -x socks5h://USERNAME:PASSWORD@HOST:PORT https://example.com/.
Di Python, requests membutuhkan ekstra SOCKS-nya, pip install requests[socks], sebelum URL proxy socks5h:// berfungsi.
import requests
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"
proxies = {
"http": proxy,
"https": proxy,
}
response = requests.get(
"https://example.com/",
proxies=proxies,
)
print(response.status_code)
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
curl -x http://USERNAME:PASSWORD@HOST:PORT \
https://example.com/
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
const proxy = "http://USERNAME:PASSWORD@HOST:PORT";
const agent = new HttpsProxyAgent(proxy);
const response = await axios.get(
"https://example.com/",
{
httpAgent: agent,
httpsAgent: agent,
},
);
console.log(response.status);
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy, _ := url.Parse(
"http://USERNAME:PASSWORD@HOST:PORT")
client := &http.Client{Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
}}
res, _ := client.Get("https://example.com/")
fmt.Println(res.Status)
}
Contoh di bawah terhubung lewat HTTP, protokol awal setiap pesanan. Untuk memakai SOCKS5, alihkan dulu proxy itu sendiri, dari dasbor atau dengan satu panggilan API; pesanan kemudian menampilkan port dan kredensial yang dipakai mulai saat itu. Di klien, ganti skemanya menjadi socks5, atau socks5h jika Anda ingin proxy yang me-resolve nama host, dengan port dan kredensial tersebut. Untuk itu Python membutuhkan requests[socks], dan Node.js membutuhkan agen SOCKS sebagai pengganti agen HTTPS.
Jawaban di bawah menyatakan ketentuan penjualan kami, dan setiap jawaban yang melakukannya menautkan dokumen yang mengikat kami padanya.
SOCKS5 adalah protokol proxy yang didefinisikan dalam RFC 1928 dan bekerja di lapisan transport. Klien Anda meminta proxy membuka koneksi ke sebuah host dan port, proxy membukanya, dan sejak itu meneruskan byte ke dua arah tanpa menafsirkannya. Karena tidak pernah mem-parse apa yang dibawanya, SOCKS5 tidak terbatas pada trafik web: apa pun yang berjalan di atas TCP bisa melewatinya.
Proxy HTTP memahami HTTP. Proxy itu membaca baris permintaan dan header, dan bebas menambah, menghapus, atau menulis ulang header, itulah sebabnya sebagian proxy diam-diam mengumumkan dirinya di header yang tidak Anda setel. SOCKS5 sama sekali tidak mengenal konsep header: yang dilihatnya hanya tujuan dan aliran byte. Jika trafik Anda bukan HTTP, atau Anda tidak ingin ada apa pun di tengah yang bisa menyuntingnya, SOCKS5 yang perlu dipilih.
Tidak, dan proxy HTTP pun tidak. SOCKS5 mengautentikasi Anda ke proxy lalu meneruskan byte. Spesifikasinya memungkinkan metode autentikasi menambahkan perlindungannya sendiri, tetapi autentikasi nama pengguna dan kata sandi (RFC 1929) mengirim kata sandi dalam teks biasa dan tidak melindungi apa pun sesudahnya. Jika trafik di dalamnya HTTPS atau SSH, trafik itu sudah terenkripsi ujung ke ujung, dan proxy tidak bisa membacanya. Jika trafik di dalamnya teks biasa, ia tetap teks biasa, jadi jangan anggap SOCKS5 sebagai lapisan enkripsi.
Memindahkan lookup DNS. Dengan socks5, klien Anda me-resolve nama host secara lokal dan meminta proxy terhubung ke alamat hasilnya. Dengan socks5h, klien Anda mengirim namanya dan proxy yang me-resolve-nya. Itu penting dalam dua hal: resolver Anda sendiri tidak pernah melihat host mana yang Anda kunjungi, dan Anda mendapat jawaban yang didapat jaringan proxy, yang untuk nama host yang berbeda menurut geografi sering kali bukan jawaban yang akan Anda dapat di rumah.
UDP ASSOCIATE ada di RFC 1928; apakah klien atau server tertentu mengimplementasikannya berbeda-beda, jadi periksa kedua ujungnya, jangan berasumsi. Kami belum menerbitkan dukungan UDP untuk proxy kami, jadi rencanakan dengan TCP, dan tanyakan ke tim dukungan sebelum Anda membangun apa pun yang bergantung pada UDP.
Tidak. Anda mengalihkan proxy yang sudah Anda pegang antara HTTP, yang juga membawa HTTPS, dan SOCKS5: dari dasbor, atau dengan satu panggilan API pada pesanan yang sama. Ini bukan sekadar pengaturan klien: peralihan dilakukan pada proxy, pesanan diperbarui dengan protokol, port, dan kredensial baru, dan proxy mungkin sebentar tidak tersedia saat hal itu berlangsung. Proxy tetap milik Anda selama seluruh periode yang Anda bayar, diganti gratis jika berhenti merespons atau diblokir di target yang Anda sebutkan, hingga 20 % dari pesanan per bulan kalender, dan pesanan pertama membawa pengembalian dana 24 jam yang mencakup hingga 10 IP dan tidak batal karena pengujian. Ketentuan Layanan
--socks5 me-resolve nama host secara lokal, --socks5-hostname membiarkan proxy me-resolve-nyasocks5:// dan socks5h:// dalam URL proxy, dan ujung mana yang me-resolve nama host-D menyiapkan penerusan port dinamis lokal, dengan ssh bertindak sebagai server SOCKS4 dan SOCKS5, dan -N meneruskan port tanpa menjalankan perintah jarak jauh