Kembali ke blog

Cara Mendiagnosis Penyebab Success Rate Rendah

Tingkat keberhasilan proxy adalah metrik kritis untuk setiap proyek. Mari kita pahami cara mengidentifikasi penyebab penurunan dan memulihkan efisiensi.

📅3 Desember 2025

Cara mendiagnosis penyebab tingkat kesuksesan rendah: panduan langkah demi langkah

Tingkat kesuksesan adalah persentase permintaan yang berhasil dari total jumlah percobaan. Ketika indikator ini turun di bawah normal, uang, waktu, dan data hilang. Namun penyebabnya bisa puluhan: dari konfigurasi yang salah hingga pemblokiran server target. Dalam artikel ini, kami akan membahas pendekatan sistematis untuk diagnosis dan menemukan solusinya.

Apa itu tingkat kesuksesan dan berapa normanya

Tingkat kesuksesan (SR) = (Permintaan berhasil / Total jumlah permintaan) × 100%

Nilai normal tergantung pada jenis tugas:

Tugas SR Normal Tingkat Kritis
Parsing data publik 95–99% di bawah 85%
Otomasi SMM 90–97% di bawah 80%
Verifikasi iklan 98–99.5% di bawah 95%
Integrasi API 99–99.9% di bawah 98%

Jika SR turun 5–10% dari garis dasar Anda — ini adalah sinyal untuk diagnosis. Jika turun 20%+ — tindakan mendesak diperlukan.

Langkah pertama diagnosis

Langkah 1: Periksa log dan metrik

Kumpulkan data untuk 24–72 jam terakhir:

  • Kapan tepatnya SR turun? (waktu yang tepat)
  • Berapa persen permintaan yang mengembalikan kesalahan 407 (Proxy Authentication Required)?
  • Berapa persen — 429 (Terlalu Banyak Permintaan)?
  • Berapa persen — timeout (connection timeout)?
  • Apakah beban berubah (RPS — permintaan per detik)?

Langkah 2: Uji secara terisolasi

Gunakan skrip sederhana untuk memeriksa proxy tanpa aplikasi Anda:

import requests
import time

proxy = "http://proxy_ip:port"
proxies = {"http": proxy, "https": proxy}
target_url = "https://httpbin.org/ip"

success = 0
failed = 0

for i in range(100):
    try:
        response = requests.get(
            target_url, 
            proxies=proxies, 
            timeout=10,
            verify=False
        )
        if response.status_code == 200:
            success += 1
            print(f"✓ Percobaan {i+1}: berhasil")
        else:
            failed += 1
            print(f"✗ Percobaan {i+1}: status {response.status_code}")
    except Exception as e:
        failed += 1
        print(f"✗ Percobaan {i+1}: {str(e)}")
    time.sleep(0.5)

sr = (success / (success + failed)) * 100
print(f"\nTingkat Kesuksesan: {sr:.1f}%")
print(f"Berhasil: {success}, Kesalahan: {failed}")

Jika tes ini menunjukkan SR normal — masalahnya ada di kode atau konfigurasi Anda. Jika SR rendah bahkan di sini — masalahnya ada di proxy atau server target.

Masalah dari sisi proxy

Kesalahan 407: Autentikasi Proxy Diperlukan

Penyebab:

  • Kredensial salah (login/password)
  • Akun telah kadaluarsa
  • Alamat IP tidak dalam daftar putih (jika diperlukan)
  • Rotasi IP tidak berfungsi atau dinonaktifkan

Solusi:

import requests

# Format yang benar untuk proxy residensial
proxy = "http://login:password@proxy-host:port"
proxies = {"http": proxy, "https": proxy}

# Tes
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(response.text)

Kelebihan beban server proxy

Jika semua pengguna layanan mengirim sejumlah besar permintaan secara bersamaan, mungkin ada batasan RPS (permintaan per detik). Ini jarang terjadi, tetapi bisa terjadi.

Periksa:

  • RPS saat ini Anda pada puncaknya
  • Batas tarif Anda
  • Apakah ada kesalahan 429 di log

Solusi: tambahkan penundaan antar permintaan atau tingkatkan paket Anda.

Kualitas alamat IP

Untuk proxy residensial SR rendah dapat berarti Anda dirotasi dengan alamat yang diblokir. Periksa:

  • Berapa persen alamat IP yang mengembalikan 403 Forbidden?
  • Apakah alamat yang sama berulang?
  • Apakah ada pola — satu negara/wilayah bekerja, yang lain tidak?

Pemblokiran dan filter server target

Kesalahan 429: Terlalu Banyak Permintaan

Server target melihat terlalu banyak permintaan dari satu IP atau secara keseluruhan. Solusi:

  • Tambahkan penundaan: `time.sleep(random.uniform(1, 3))`
  • Gunakan rotasi IP: setiap permintaan — IP baru
  • Kurangi RPS: kirim permintaan secara berurutan, bukan paralel
  • Tambahkan header realistis: User-Agent, Referer, Accept-Language

Kesalahan 403 Forbidden

Server telah memblokir IP Anda (atau IP proxy). Ini bisa:

  • Filter berdasarkan geolokasi
  • Daftar hitam layanan proxy
  • Detektor bot (JavaScript, CAPTCHA)

Solusi: gunakan proxy mobile atau proxy residensial dengan rotasi. Mereka lebih sulit untuk diblokir.

Kesalahan 403: Pemeriksaan User-Agent

Beberapa layanan menolak permintaan dengan User-Agent yang mencurigakan:

import requests
import random

user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15"
]

headers = {
    "User-Agent": random.choice(user_agents),
    "Accept-Language": "en-US,en;q=0.9",
    "Accept": "text/html,application/xhtml+xml",
    "Referer": "https://google.com"
}

response = requests.get(
    "https://target-site.com",
    headers=headers,
    proxies={"http": proxy, "https": proxy},
    timeout=10
)
print(response.status_code)

Kesalahan dalam kode klien

Penanganan pengecualian yang tidak benar

Kesalahan umum: kode menganggap kesalahan koneksi sebagai permintaan yang gagal, tetapi tidak mencoba untuk terhubung kembali:

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# Cara yang benar dengan retries
session = requests.Session()
retry_strategy = Retry(
    total=3,
    backoff_factor=1,
    status_forcelist=[429, 500, 502, 503, 504],
    allowed_methods=["GET", "POST"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("http://", adapter)
session.mount("https://", adapter)

try:
    response = session.get(url, proxies=proxies, timeout=10)
except requests.exceptions.RequestException as e:
    print(f"Kesalahan: {e}")
    # Catat dan lanjutkan ke permintaan berikutnya

Timeout yang tidak benar

Jika timeout terlalu pendek (1–2 detik), proxy yang lambat akan ditolak:

  • Untuk parsing biasa: 10–30 detik
  • Untuk proxy mobile: 15–45 detik
  • Untuk API: 5–10 detik

Kesalahan SSL/TLS

Jika Anda menggunakan `verify=False`, ini dapat menyembunyikan masalah nyata. Lebih baik perbarui sertifikat:

import requests
import certifi

# Benar
response = requests.get(
    url,
    proxies=proxies,
    verify=certifi.where(),  # Bukan verify=False
    timeout=15
)

Masalah jaringan dan timeout

Connection timeout vs Read timeout

Perbedaannya penting:

  • Connection timeout: proxy tidak merespons (masalah dengan proxy atau jaringan)
  • Read timeout: server target mengirim data dengan lambat (masalah server target)
import requests

# timeout = (connection_timeout, read_timeout)
try:
    response = requests.get(
        url,
        proxies=proxies,
        timeout=(5, 15)  # 5 detik untuk koneksi, 15 untuk membaca
    )
except requests.exceptions.ConnectTimeout:
    print("Proxy tidak merespons")
except requests.exceptions.ReadTimeout:
    print("Server target lambat")

Masalah DNS

Jika server target tidak terselesaikan, ini bukan kesalahan proxy:

import socket

# Periksa DNS di luar proxy
try:
    ip = socket.gethostbyname("target-site.com")
    print(f"Terselesaikan: {ip}")
except socket.gaierror:
    print("Kesalahan DNS — situs tidak ditemukan")

Daftar periksa diagnosis SR rendah

  1. Tetapkan garis dasar: berapa SR yang normal sebelumnya?
  2. Jalankan tes terisolasi (skrip di atas) dengan 100 permintaan
  3. Periksa log: kode HTTP mana yang mendominasi? (407, 429, 403, timeout?)
  4. Jika 407: periksa login/password dan daftar putih IP
  5. Jika 429: tambahkan penundaan antar permintaan, gunakan rotasi IP
  6. Jika 403: periksa User-Agent, Referer, tambahkan header realistis
  7. Jika timeout: tingkatkan timeout, periksa RPS, gunakan logika retry
  8. Periksa kode Anda: penanganan pengecualian yang benar, timeout yang benar
  9. Periksa server target: apakah dapat diakses secara langsung (tanpa proxy)?
  10. Jika semua yang lain gagal: coba jenis proxy lain atau penyedia lain

Tabel diagnosis cepat

Kode HTTP Kemungkinan Penyebab Solusi
407 Kredensial proxy salah Periksa login/password, daftar putih IP
429 Terlalu banyak permintaan Tambahkan penundaan, gunakan rotasi IP
403 IP diblokir atau detektor bot Tambahkan header realistis, gunakan proxy mobile
Timeout Proxy lambat atau server target kelebihan beban Tingkatkan timeout, periksa RPS
Connection refused Server proxy tidak dapat diakses Periksa IP:port, status proxy

Kesimpulan

Tingkat kesuksesan rendah adalah gejala, bukan penyakit. Penyebabnya bisa banyak: dari kesalahan ketik dalam kode hingga pemblokiran oleh server target. Diagnosis sistematis adalah kunci untuk solusi:

  1. Periksa metrik dan log
  2. Isolasi masalah (proxy vs server target vs kode Anda)
  3. Tentukan jenis kesalahan (407, 429, 403, timeout)
  4. Terapkan solusi yang sesuai

Untuk tugas yang memerlukan keandalan dan SR tinggi, proxy residensial dengan rotasi IP direkomendasikan. Mereka lebih sulit untuk dideteksi dan lebih stabil. Coba tes gratis di proxycove.com dan uji pada tugas Anda.