Kembali ke blog

Apa yang Harus Dilakukan Jika Proxy Tidak Mendukung Protokol yang Diperlukan

Menganalisis penyebab ketidakcocokan proxy dengan protokol dan solusi praktis: mulai dari konfigurasi konverter lokal hingga pemilihan jenis proxy yang tepat.

📅9 Desember 2025

Proxy Tidak Mendukung Protokol yang Diperlukan: Apa yang Harus Dilakukan

Anda telah mengonfigurasi proxy, menjalankan skrip — dan mendapatkan kesalahan "Protocol not supported" atau "Connection refused". Masalah ketidakcocokan protokol lebih sering terjadi daripada yang dibayangkan. Mari kita bahas mengapa ini terjadi dan bagaimana menyelesaikan masalah tanpa mengganti penyedia layanan.

Protokol yang Digunakan Proxy

Sebelum menyelesaikan masalah, penting untuk memahami perbedaan antara protokol-protokol tersebut. Masing-masing memiliki area aplikasi dan batasan tersendiri.

Protokol Port Default Fitur Utama
HTTP 80, 8080, 3128 Hanya lalu lintas HTTP, dapat memodifikasi header
HTTPS (CONNECT) 443, 8443 Tunneling melalui HTTP CONNECT, enkripsi
SOCKS4 1080 Koneksi TCP, tanpa otentikasi, tanpa UDP
SOCKS5 1080, 1081 TCP dan UDP, otentikasi, DNS melalui proxy

Konflik Umum:

  • Selenium dan Puppeteer memerlukan HTTP/HTTPS, padahal Anda memiliki SOCKS5
  • Bot Telegram berjalan melalui SOCKS5, tetapi proxy hanya mendukung HTTP
  • Klien Torrent memerlukan SOCKS5 dengan UDP, tetapi proxy adalah SOCKS4
  • Aplikasi game memerlukan UDP, tetapi proxy HTTP tidak mendukungnya

Diagnosis: Menentukan Protokol Proxy

Jika penyedia layanan tidak secara eksplisit menyebutkan protokol atau Anda ragu, uji proxy secara mandiri.

Pengujian melalui curl

Menguji protokol HTTP:

# Proxy HTTP
curl -x http://proxy_ip:port http://httpbin.org/ip

# Dengan otentikasi
curl -x http://user:pass@proxy_ip:port http://httpbin.org/ip

Menguji SOCKS5:

# Proxy SOCKS5
curl -x socks5://proxy_ip:port http://httpbin.org/ip

# SOCKS5 dengan DNS melalui proxy (socks5h)
curl -x socks5h://proxy_ip:port http://httpbin.org/ip

Jika perintah mengembalikan alamat IP proxy, protokol telah terdeteksi dengan benar. Kesalahan seperti Connection refused atau Unsupported proxy berarti protokolnya salah.

Pengujian melalui Python

import requests

proxy_ip = "proxy_ip:port"

# Uji HTTP
try:
    r = requests.get("http://httpbin.org/ip", 
                     proxies={"http": f"http://{proxy_ip}"}, 
                     timeout=10)
    print(f"HTTP berfungsi: {r.json()}")
except Exception as e:
    print(f"HTTP tidak berfungsi: {e}")

# Uji SOCKS5 (memerlukan pip install requests[socks])
try:
    r = requests.get("http://httpbin.org/ip", 
                     proxies={"http": f"socks5://{proxy_ip}"}, 
                     timeout=10)
    print(f"SOCKS5 berfungsi: {r.json()}")
except Exception as e:
    print(f"SOCKS5 tidak berfungsi: {e}")

Deteksi Otomatis

Skrip untuk mengulang protokol:

import requests

def detect_protocol(proxy_address):
    protocols = ["http", "https", "socks4", "socks5", "socks5h"]
    
    for proto in protocols:
        try:
            proxies = {
                "http": f"{proto}://{proxy_address}",
                "https": f"{proto}://{proxy_address}"
            }
            r = requests.get("http://httpbin.org/ip", 
                           proxies=proxies, timeout=5)
            if r.status_code == 200:
                return proto
        except:
            continue
    return None

result = detect_protocol("proxy_ip:port")
print(f"Protokol terdeteksi: {result}")

Konversi HTTP ke SOCKS dan Sebaliknya

Jika proxy mendukung protokol yang salah untuk perangkat lunak Anda, gunakan konverter lokal.

Privoxy: HTTP → SOCKS

Privoxy menerima permintaan HTTP dan meneruskannya melalui proxy SOCKS.

Instalasi:

# Ubuntu/Debian
sudo apt install privoxy

# macOS
brew install privoxy

# Windows — unduh dari situs resmi

Konfigurasi (file /etc/privoxy/config):

# Mendengarkan di port lokal 8118 (HTTP)
listen-address 127.0.0.1:8118

# Meneruskan melalui SOCKS5 eksternal
forward-socks5 / socks_proxy_ip:1080 .

# Dengan otentikasi
forward-socks5 / user:pass@socks_proxy_ip:1080 .

Sekarang perangkat lunak Anda terhubung ke 127.0.0.1:8118 melalui HTTP, dan lalu lintas diteruskan melalui SOCKS5.

Gost: Konverter Universal

Gost adalah alat canggih untuk semua jenis transformasi protokol.

# Proxy HTTP di input → SOCKS5 di output
gost -L http://:8080 -F socks5://socks_proxy_ip:1080

# SOCKS5 di input → HTTP di output
gost -L socks5://:1080 -F http://http_proxy_ip:8080

# Dengan otentikasi di kedua ujung
gost -L http://local_user:local_pass@:8080 \
     -F socks5://remote_user:remote_pass@proxy_ip:1080

Konverter Python

Konverter minimalis untuk tugas sederhana:

# pip install pproxy
# HTTP di input, SOCKS5 di output
pproxy -l http://:8080 -r socks5://proxy_ip:1080

# SOCKS5 di input, HTTP di output  
pproxy -l socks5://:1080 -r http://proxy_ip:8080

Pengaturan Terowongan Lokal

Terkadang konversi tidak cukup — diperlukan terowongan yang lengkap.

Terowongan SSH melalui Proxy HTTP

Jika Anda memiliki server SSH dan proxy HTTP, Anda dapat membuat SOCKS5:

# Membuat SOCKS5 di localhost:1080 melalui proxy HTTP
ssh -D 1080 -o ProxyCommand="nc -X connect -x http_proxy:8080 %h %p" user@ssh_server

Stunnel untuk HTTPS

Jika Anda memerlukan proxy HTTPS, tetapi hanya memiliki HTTP:

# stunnel.conf
[https-proxy]
client = yes
accept = 127.0.0.1:8443
connect = http_proxy_ip:8080
protocol = connect
protocolHost = target_host:443

Mengonfigurasi Perangkat Lunak untuk Protokol yang Tersedia

Terkadang lebih mudah mengonfigurasi perangkat lunak agar sesuai dengan protokol yang tersedia daripada mengonversi protokol.

Selenium dengan Protokol Berbeda

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Proxy HTTP (cara standar)
options = Options()
options.add_argument('--proxy-server=http://proxy_ip:8080')

# Proxy SOCKS5
options.add_argument('--proxy-server=socks5://proxy_ip:1080')

# Untuk Firefox dengan SOCKS5
from selenium.webdriver.firefox.options import Options as FirefoxOptions
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.socks", "proxy_ip")
profile.set_preference("network.proxy.socks_port", 1080)
profile.set_preference("network.proxy.socks_version", 5)

aiohttp dengan SOCKS

# pip install aiohttp-socks
import aiohttp
from aiohttp_socks import ProxyConnector

async def fetch_with_socks():
    connector = ProxyConnector.from_url('socks5://proxy_ip:1080')
    async with aiohttp.ClientSession(connector=connector) as session:
        async with session.get('http://httpbin.org/ip') as response:
            return await response.json()

Bot Telegram melalui HTTP

Jika pustaka Telegram memerlukan SOCKS5, tetapi Anda memiliki HTTP:

# python-telegram-bot dengan proxy HTTP
from telegram.ext import ApplicationBuilder

application = (
    ApplicationBuilder()
    .token("YOUR_TOKEN")
    .proxy_url("http://proxy_ip:8080")  # Berfungsi dengan HTTP
    .build()
)

Saran: Banyak pustaka modern mendukung kedua protokol. Periksa dokumentasi — mungkin cukup mengubah skema URL dari socks5:// menjadi http://.

Cara Memilih Proxy dengan Protokol yang Tepat

Untuk menghindari masalah protokol, tentukan persyaratan Anda terlebih dahulu.

Matriks Kompatibilitas

Tugas Protokol yang Direkomendasikan Alasan
Web Scraping HTTP/HTTPS Dukungan luas, pengaturan mudah
Otomatisasi Browser HTTP atau SOCKS5 Tergantung pada browser dan framework
Bot Telegram, Discord SOCKS5 Persyaratan pustaka
Torrent SOCKS5 dengan UDP DHT dan PEX menggunakan UDP
Game, VoIP SOCKS5 dengan UDP Latensi rendah, lalu lintas UDP
Permintaan API HTTP/HTTPS REST API berjalan melalui HTTP

Hal yang Perlu Diperhatikan Saat Memilih Penyedia

  • Daftar Protokol yang Didukung — Harus disebutkan secara eksplisit
  • Kemampuan Beralih — Beberapa penyedia mengizinkan akses IP yang sama melalui port/protokol yang berbeda
  • Dukungan UDP untuk SOCKS5 — Tidak semua proxy SOCKS5 mendukung UDP
  • Dokumentasi Pengaturan — Contoh untuk berbagai bahasa dan alat

Proxy residensial biasanya mendukung HTTP/HTTPS dan SOCKS5 secara bersamaan, yang menghilangkan sebagian besar masalah kompatibilitas. Proxy pusat data lebih sering terbatas pada HTTP/HTTPS.

Daftar Periksa Sebelum Membeli

  1. Tentukan protokol apa yang dibutuhkan oleh perangkat lunak Anda
  2. Periksa apakah UDP diperlukan (game, torrent, VoIP)
  3. Tanyakan kepada penyedia tentang dukungan protokol yang diperlukan
  4. Minta akses uji coba untuk memverifikasi kompatibilitas
  5. Siapkan rencana cadangan — konverter lokal

Kesimpulan

Ketidakcocokan protokol adalah masalah yang dapat diatasi. Dalam kebanyakan kasus, konverter lokal seperti Privoxy atau Gost sudah cukup. Untuk proyek jangka panjang, lebih menguntungkan untuk segera memilih proxy yang mendukung protokol yang diperlukan.

Untuk tugas yang memerlukan fleksibilitas dalam pemilihan protokol, proxy residensial dengan akses multiprotokol adalah pilihan yang baik — pelajari lebih lanjut di proxycove.com.