Kembali ke blog

Proksi untuk Pelatihan AI: Cara Mengumpulkan Jutaan Data untuk Model Tanpa Pemblokiran

Membahas cara yang tepat untuk mengorganisir pengumpulan data untuk pelatihan model AI melalui proxy: dari pemilihan jenis IP hingga pengaturan rotasi dan bypass sistem anti-bot.

📅5 Maret 2026
```html

Pelatihan model AI memerlukan volume data yang sangat besar — teks, gambar, video, informasi terstruktur dari situs web. Masalahnya adalah bahwa saat melakukan pengambilan data secara massal, situs web dengan cepat memblokir alamat IP, menganggap aktivitas tersebut sebagai bot. Dalam artikel ini, kita akan membahas cara yang tepat untuk mengorganisir pengumpulan data melalui proksi, jenis IP yang harus dipilih untuk berbagai tugas, dan cara mengatur infrastruktur untuk kinerja yang stabil.

Mengapa proksi diperlukan untuk pelatihan AI

Model bahasa modern seperti GPT, LLaMA, atau Claude dilatih pada miliaran token teks. Model penglihatan komputer memerlukan puluhan juta gambar. Sistem rekomendasi menganalisis perilaku pengguna di ribuan situs. Semua data ini perlu diperoleh dari suatu tempat.

Masalah utama adalah situs web secara aktif melindungi diri dari pengambilan data massal. Jika Anda mengirimkan lebih dari 100 permintaan per menit dari satu IP, Anda akan diblokir dalam waktu 5-10 menit. Alasan pemblokiran:

  • Rate limiting: pembatasan jumlah permintaan dari satu IP (biasanya 10-60 permintaan per menit)
  • Sistem anti-bot: Cloudflare, Akamai, PerimeterX menganalisis perilaku dan memblokir aktivitas yang mencurigakan
  • Pembatasan geografis: sebagian konten hanya tersedia dari negara tertentu
  • Perlindungan dari pesaing: marketplace dan agregator memblokir pengumpulan harga dan produk secara massal

Proksi menyelesaikan masalah ini dengan mendistribusikan permintaan melalui ribuan alamat IP yang berbeda. Alih-alih 1000 permintaan dari satu IP, Anda melakukan 1-2 permintaan dari masing-masing 500-1000 alamat yang berbeda — ini terlihat seperti aktivitas pengguna biasa.

Jenis proksi apa yang harus dipilih untuk pengumpulan data

Untuk pelatihan AI, tiga jenis proksi digunakan, masing-masing dengan kelebihan dan keterbatasannya. Pilihan tergantung pada sumber data, volume, dan anggaran proyek.

Jenis Proksi Kecepatan Kepercayaan Situs Biaya Kapan Menggunakan
Datacenter 100-1000 Mbit/s Rendah $0.5-2/IP API terbuka, situs sederhana tanpa perlindungan
Residential 10-50 Mbit/s Tinggi $5-15/GB Media sosial, situs dengan Cloudflare, e-commerce
Mobile 5-30 Mbit/s Sangat tinggi $10-30/GB Aplikasi mobile, perlindungan ketat

Proksi Datacenter: Kecepatan untuk Volume Besar

Proksi datacenter adalah alamat IP dari server di penyedia cloud (AWS, Google Cloud, Hetzner). Keuntungan utamanya adalah kecepatan dan biaya rendah. Satu IP datacenter dapat menangani ratusan permintaan per detik.

Cocok untuk mengumpulkan data dari sumber yang tidak menggunakan perlindungan agresif: API terbuka (GitHub, Wikipedia, Stack Overflow), basis data pemerintah, situs berita tanpa Cloudflare, publikasi ilmiah. Jika situs memberikan data tanpa rendering JavaScript dan tidak memeriksa fingerprint browser — datacenter dapat menangani.

Kekurangan — banyak situs yang memelihara blacklist IP datacenter. Instagram, Facebook, Google Search, marketplace besar memblokir IP datacenter hampir seketika. Untuk sumber-sumber tersebut, diperlukan residential.

Proksi Residential: Menghindari Perlindungan Apa Pun

Proksi residential menggunakan alamat IP dari pengguna rumah yang nyata. Untuk situs, permintaan seperti itu terlihat seperti pengunjung biasa dari rumah. Ini memungkinkan untuk menghindari Cloudflare, Akamai, mengumpulkan data dari media sosial dan platform yang dilindungi.

Residential diperlukan untuk: Instagram, Facebook, Twitter/X (pengumpulan pos, komentar, profil), Google Search (pengambilan hasil pencarian untuk model NLP), marketplace (Amazon, eBay, Wildberries — produk, ulasan, harga), situs dengan pembatasan geo (konten hanya tersedia dari negara tertentu).

Biaya lebih tinggi — pembayaran untuk lalu lintas ($5-15 per GB). Untuk menghemat, gunakan residential hanya untuk sumber yang kritis, dan situs sederhana dapat diambil melalui datacenter.

Proksi Mobile: Untuk Aplikasi Mobile

Proksi mobile menggunakan IP dari operator seluler (4G/5G). Jarang diperlukan — terutama untuk mengumpulkan data dari aplikasi mobile (TikTok, aplikasi Instagram, permainan mobile) atau ketika situs membedakan lalu lintas mobile dan desktop.

Keuntungan dari IP mobile — operator menggunakan CGNAT (satu IP untuk ratusan pengguna), sehingga memblokir alamat semacam itu tidak menguntungkan. Namun untuk sebagian besar tugas pelatihan AI, cukup menggunakan residential.

Jenis Sumber Data dan Persyaratan untuk Proksi

Berbagai jenis data memerlukan pendekatan yang berbeda terhadap proksi. Mari kita lihat sumber-sumber populer untuk pelatihan model AI.

Data Teks untuk Model NLP

Untuk melatih model bahasa, teks dikumpulkan dari situs berita, forum, blog, media sosial, Wikipedia, dan sumber khusus. Volume — puluhan terabyte teks.

Rekomendasi untuk proksi: Situs berita dan blog — datacenter (kecepatan lebih penting). Forum seperti Reddit, Quora — residential (ada rate limiting). Twitter, Facebook, Instagram — hanya residential dengan rotasi setiap 5-10 menit.

Ciri khas pengambilan data teks — perlu menjaga struktur (judul, paragraf, metadata). Gunakan browser headless (Puppeteer, Playwright) untuk situs JavaScript atau klien HTTP sederhana (requests, axios) untuk halaman statis.

Gambar untuk Penglihatan Komputer

Pelatihan model pengenalan memerlukan jutaan gambar dengan anotasi. Sumber: Google Images, Pinterest, Instagram, stok foto khusus, situs e-commerce (foto produk).

Masalahnya — gambar memakan banyak ruang (ukuran rata-rata 200-500 KB), sehingga lalu lintas cepat habis. Saat menggunakan proksi residential (pembayaran per GB), ini menjadi kritis. Strategi optimisasi: pertama kumpulkan URL gambar melalui residential, kemudian unduh file itu sendiri melalui datacenter atau langsung (jika CDN tidak memeriksa referrer).

Data Terstruktur dari E-commerce

Data tentang produk, harga, ulasan digunakan untuk melatih sistem rekomendasi dan model penetapan harga. Sumber: Amazon, eBay, Wildberries, Ozon, AliExpress.

Semua marketplace besar menggunakan Cloudflare atau sistem anti-bot mereka sendiri. Proksi residential dengan rotasi sangat diperlukan. Selain itu, penting untuk memiliki fingerprint browser yang benar — gunakan alat seperti puppeteer-extra-plugin-stealth untuk menyamarkan otomatisasi.

Data Video dan Audio

YouTube, TikTok, platform podcast — sumber untuk melatih model pengenalan suara dan video. Masalahnya — lalu lintas yang sangat besar (satu video = ratusan MB). Untuk tugas semacam itu, proksi residential tidak ekonomis.

Solusinya: gunakan residential hanya untuk mendapatkan metadata dan tautan video, dan unduh melalui datacenter atau alat khusus seperti yt-dlp (mereka dapat menghindari batasan YouTube tanpa proksi).

Strategi Rotasi IP untuk Berbagai Volume

Rotasi IP adalah poin kunci untuk pengambilan data yang stabil. Pengaturan yang salah akan mengakibatkan pemblokiran atau pembayaran berlebihan untuk lalu lintas.

Rotasi Berdasarkan Permintaan (Rotating Proxies)

Setiap permintaan dilakukan melalui IP baru. Cocok untuk pengambilan data massal dari berbagai situs, ketika tidak perlu menyimpan sesi. Misalnya, mengumpulkan teks dari 10000 situs berita yang berbeda — setiap situs hanya melihat 1-2 permintaan dari satu IP.

import requests

# Proksi rotasi - setiap permintaan menggunakan IP baru
proxies = {
    'http': 'http://username:password@rotating.proxycove.com:12345',
    'https': 'http://username:password@rotating.proxycove.com:12345'
}

urls = ['https://site1.com', 'https://site2.com', ...]
for url in urls:
    response = requests.get(url, proxies=proxies)
    # Setiap permintaan dilakukan dengan IP baru
    parse_data(response.text)

Keuntungannya — perlindungan maksimal dari pemblokiran. Kekurangannya — tidak mungkin bekerja dengan situs yang memerlukan otorisasi atau penyimpanan cookies.

Rotasi Berdasarkan Waktu (Sticky Sessions)

IP disimpan selama 5-30 menit, kemudian berubah. Cocok untuk pengambilan data dari satu situs dengan paginasi, ketika perlu melewati halaman 1, 2, 3... dengan menyimpan sesi.

import requests
import time

# Sesi lengket - IP disimpan selama 10 menit
session_id = generate_random_string()  # ID sesi unik
proxies = {
    'http': f'http://username-session-{session_id}:password@sticky.proxycove.com:12345'
}

# Semua permintaan dalam 10 menit dilakukan dari satu IP
for page in range(1, 100):
    url = f'https://site.com/catalog?page={page}'
    response = requests.get(url, proxies=proxies)
    parse_page(response.text)
    time.sleep(2)  # jeda antara permintaan

Atur waktu sesi tergantung pada rate limit situs. Jika batasnya adalah 60 permintaan per menit, atur sesi menjadi 1-2 menit dan lakukan tidak lebih dari 50 permintaan.

Kolam IP Statis

Anda mendapatkan daftar 100-1000 IP dan mengelola distribusi permintaan sendiri. Cocok untuk skenario kompleks, ketika kontrol penuh diperlukan: pengambilan data paralel dari berbagai bagian situs, penyeimbangan beban, logika rotasi yang disesuaikan.

import requests
from itertools import cycle

# Kolam 500 IP statis
ip_pool = [
    'http://user:pass@ip1.proxycove.com:12345',
    'http://user:pass@ip2.proxycove.com:12345',
    # ... 500 alamat
]

proxy_cycle = cycle(ip_pool)

for url in urls:
    proxy = next(proxy_cycle)  # ambil IP berikutnya dari kolam
    response = requests.get(url, proxies={'http': proxy, 'https': proxy})
    parse_data(response.text)

Pendekatan ini memberikan fleksibilitas maksimal, tetapi memerlukan lebih banyak kode untuk menangani kesalahan (jika IP diblokir, perlu mengecualikannya dari kolam).

Menghindari Sistem Anti-bot saat Pengambilan Data

Proksi menyelesaikan masalah pemblokiran IP, tetapi situs modern menganalisis puluhan parameter untuk mendeteksi bot. Bahkan dengan IP residential, Anda dapat diblokir jika fingerprint browser menunjukkan otomatisasi.

Apa yang Diperiksa oleh Sistem Anti-bot

  • User-Agent: harus sesuai dengan browser nyata (Chrome, Firefox), tidak boleh mengandung kata "headless" atau "bot"
  • Headers: kumpulan header harus tipikal untuk browser (Accept, Accept-Language, Accept-Encoding, Referer)
  • TLS fingerprint: parameter SSL connection berbeda antara browser dan skrip
  • JavaScript fingerprint: WebGL, Canvas, AudioContext, font, plugin, resolusi layar
  • Perilaku: gerakan mouse, kecepatan scrolling, klik (untuk situs dengan rendering JavaScript)

Alat untuk Menyamarkan Otomatisasi

Untuk menghindari perlindungan yang canggih, gunakan browser headless dengan plugin penyamaran:

// Puppeteer dengan plugin stealth
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({
    headless: true,
    args: [
        '--proxy-server=http://username:password@residential.proxycove.com:12345',
        '--disable-blink-features=AutomationControlled'
    ]
});

const page = await browser.newPage();
// Mengatur viewport yang realistis
await page.setViewport({ width: 1920, height: 1080 });

// Menambahkan jeda acak
await page.goto('https://protected-site.com');
await page.waitForTimeout(2000 + Math.random() * 3000);

const data = await page.evaluate(() => {
    return document.querySelector('.data').innerText;
});

await browser.close();

Untuk Python, gunakan Playwright dengan pengaturan serupa atau Selenium dengan undetected-chromedriver — pustaka yang secara otomatis mempatch ChromeDriver untuk menghindari deteksi.

Menghindari Cloudflare dan WAF Lainnya

Cloudflare menggunakan tantangan JavaScript untuk memeriksa browser. Klien HTTP sederhana (requests, axios) tidak dapat melewatinya. Solusinya:

  • Browser Headless: Puppeteer/Playwright dengan plugin stealth dapat melewati sebagian besar tantangan
  • Solusi Siap Pakai: pustaka seperti cloudscraper (Python) atau puppeteer-extra-plugin-recaptcha
  • Layanan Penghindaran: API khusus (FlareSolverr, Anti-Captcha) menyelesaikan tantangan untuk Anda

Penting: bahkan dengan fingerprint yang benar, lakukan jeda antara permintaan. Mengirimkan 100 permintaan per detik dengan fingerprint browser yang sempurna tetap terlihat mencurigakan. Kecepatan optimal — 10-30 permintaan per menit dari satu IP.

Arsitektur Infrastruktur untuk Pengumpulan Data

Saat mengumpulkan data untuk pelatihan AI dalam skala industri, diperlukan arsitektur yang dipikirkan dengan baik. Skrip sederhana di satu server tidak akan mampu menangani pengambilan terabyte data.

Komponen Sistem Pengumpulan

1. Antrian Tugas (Task Queue)

Menyimpan daftar URL untuk pengambilan data. Gunakan Redis, RabbitMQ, atau AWS SQS. Memungkinkan distribusi tugas di antara pekerja dan mengulangi tugas yang gagal.

2. Pekerja (Workers)

Proses yang mengambil tugas dari antrian dan melakukan pengambilan data. Jalankan 10-100 pekerja secara paralel di berbagai server. Setiap pekerja menggunakan proksi mereka sendiri atau kolam proksi.

3. Penyimpanan Data (Storage)

Tempat di mana data yang dikumpulkan disimpan. Untuk teks — S3/MinIO (penyimpanan objek). Untuk data terstruktur — PostgreSQL atau MongoDB. Untuk volume besar — data lake (AWS S3 + Athena, Google Cloud Storage).

4. Pemantauan (Monitoring)

Melacak kecepatan pengambilan data, persentase kesalahan, penggunaan lalu lintas. Gunakan Grafana + Prometheus atau solusi siap pakai seperti Datadog. Atur peringatan untuk metrik kritis (persentase kesalahan >10%, kecepatan turun 2 kali lipat).

Contoh Arsitektur di Python

# worker.py - proses pengambilan data
import redis
import requests
import json
from datetime import datetime

# Koneksi ke Redis (antrian tugas)
queue = redis.Redis(host='redis-server', port=6379)
# Kolam proksi
proxies_pool = load_proxies_from_config()

while True:
    # Mengambil tugas dari antrian
    task = queue.blpop('parsing_queue', timeout=5)
    if not task:
        continue
    
    url = task[1].decode('utf-8')
    proxy = get_next_proxy(proxies_pool)
    
    try:
        response = requests.get(
            url, 
            proxies={'http': proxy, 'https': proxy},
            timeout=30,
            headers={'User-Agent': get_random_user_agent()}
        )
        
        # Mengambil data
        data = parse_html(response.text)
        
        # Menyimpan ke S3
        save_to_s3(data, f'data/{datetime.now().isoformat()}/{hash(url)}.json')
        
        # Mencatat keberhasilan
        log_success(url, proxy)
        
    except Exception as e:
        # Jika terjadi kesalahan, kembalikan tugas ke antrian
        queue.rpush('parsing_queue', url)
        log_error(url, proxy, str(e))
        mark_proxy_as_failed(proxy)

Arsitektur ini memungkinkan penskalaan horizontal — cukup tambahkan server baru dengan pekerja. Jika satu pekerja gagal, yang lainnya tetap berfungsi.

Alat untuk Otomatisasi Pengumpulan

Untuk pengambilan data industri, gunakan kerangka kerja khusus yang menyelesaikan tugas-tugas standar dari awal.

Scrapy — Kerangka Kerja untuk Python

Scrapy adalah alat paling populer untuk web scraping di Python. Dari awal mendukung: pengambilan data paralel (ratusan permintaan sekaligus), pengulangan otomatis saat terjadi kesalahan, middleware untuk rotasi proksi dan User-Agent, ekspor ke JSON, CSV, XML, basis data.

# settings.py - pengaturan Scrapy dengan proksi
ROTATING_PROXY_LIST = [
    'http://user:pass@proxy1.proxycove.com:12345',
    'http://user:pass@proxy2.proxycove.com:12345',
    # ... daftar proksi
]

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

# Paralelisme
CONCURRENT_REQUESTS = 100
DOWNLOAD_DELAY = 0.5  # jeda antara permintaan

Scrapy cocok untuk situs statis (HTML tanpa JavaScript). Untuk situs dinamis, gunakan Scrapy + Splash (browser headless) atau beralih ke Playwright.

Crawlee — Kerangka Kerja untuk Node.js

Crawlee (sebelumnya Apify SDK) adalah alternatif Scrapy untuk JavaScript. Keuntungannya — bekerja secara native dengan Puppeteer dan Playwright, rotasi proksi bawaan, manajemen antrian otomatis, kecepatan pengambilan data adaptif (melambat saat terjadi kesalahan).

import { PlaywrightCrawler, ProxyConfiguration } from 'crawlee';

const proxyConfiguration = new ProxyConfiguration({
    proxyUrls: [
        'http://user:pass@proxy1.proxycove.com:12345',
        'http://user:pass@proxy2.proxycove.com:12345',
    ],
});

const crawler = new PlaywrightCrawler({
    proxyConfiguration,
    maxConcurrency: 50,
    requestHandler: async ({ page, request }) => {
        await page.waitForSelector('.data');
        const data = await page.$$eval('.item', items => 
            items.map(item => ({
                title: item.querySelector('h2').innerText,
                price: item.querySelector('.price').innerText
            }))
        );
        await saveData(data);
    },
});

await crawler.run(['https://site.com/catalog']);

Apache Nutch — untuk Crawling Skala Besar

Jika Anda perlu mengumpulkan data dari seluruh internet (seperti mesin pencari), gunakan Apache Nutch. Ini adalah crawler terdistribusi yang berjalan di atas Hadoop. Dapat menangani petabyte data, secara otomatis mendeteksi halaman baru melalui tautan, mendukung kebijakan crawling (robots.txt, sitemap.xml).

Nutch lebih sulit untuk diatur, tetapi tidak tergantikan untuk mengumpulkan dataset mirip Common Crawl. Untuk bekerja dengan proksi, gunakan plugin proxy-rotator.

Optimisasi Kecepatan dan Biaya

Pengumpulan data untuk pelatihan AI adalah hal yang mahal. Dengan volume dalam terabyte, biaya untuk proksi dapat mencapai puluhan ribu dolar per bulan. Mari kita lihat bagaimana mengoptimalkan pengeluaran tanpa mengorbankan kualitas.

Kombinasikan Jenis Proksi

Jangan gunakan residential untuk semua tugas. Bagi sumber menjadi tiga kategori:

  • Tanpa Perlindungan: proksi datacenter ($0.5-2/IP) — API terbuka, situs sederhana, basis data pemerintah
  • Perlindungan Sedang: proksi residential rotasi ($5-10/GB) — situs berita dengan Cloudflare, forum
  • Perlindungan Tinggi: proksi residential sesi lengket ($10-15/GB) — media sosial, marketplace

Contoh: Anda mengambil data dari 100 situs berita. 70 di antaranya beroperasi tanpa Cloudflare — gunakan datacenter. 30 dengan perlindungan — residential. Penghematan akan mencapai 60-70% dari anggaran untuk proksi.

Cache Permintaan

Jika Anda mengambil data dari satu situs beberapa kali (misalnya, pengumpulan berita harian), cache halaman yang tidak berubah. Gunakan Redis atau penyimpanan lokal untuk cache HTML.

import hashlib
import redis

cache = redis.Redis(host='localhost', port=6379)

def fetch_with_cache(url, proxies):
    # Memeriksa cache
    cache_key = hashlib.md5(url.encode()).hexdigest()
    cached = cache.get(cache_key)
    
    if cached:
        return cached.decode('utf-8')
    
    # Jika tidak ada di cache - lakukan permintaan
    response = requests.get(url, proxies=proxies)
    html = response.text
    
    # Simpan di cache selama 24 jam
    cache.setex(cache_key, 86400, html)
    return html

Optimalkan Lalu Lintas

Saat menggunakan proksi residential (pembayaran per GB), sangat penting untuk mengurangi volume lalu lintas:

  • Matikan pengunduhan gambar, CSS, font jika tidak diperlukan (di Puppeteer: page.setRequestInterception)
  • Gunakan kompresi (gzip, brotli) — sebagian besar proksi mendukungnya
  • Ambil hanya elemen yang diperlukan — jangan unduh seluruh halaman jika hanya satu blok yang dibutuhkan
  • Untuk API, gunakan JSON alih-alih HTML (5-10 kali lebih sedikit lalu lintas)

Distribusikan Beban Berdasarkan Waktu

Banyak situs memiliki beban yang berbeda sepanjang hari. Ambil data di jam malam (berdasarkan waktu server situs) — lebih sedikit kemungkinan terkena rate limiting. Juga perhatikan hari libur — pada hari Sabtu-Minggu, perlindungan mungkin lebih lemah.

Pantau Metrik

Pantau indikator kunci untuk optimisasi:

Metrik Norma Apa yang Harus Dilakukan Jika Menyimpang
Tingkat Keberhasilan >90% Tingkatkan jeda, ganti jenis proksi
Kecepatan Rata-rata 50-200 req/menit per pekerja Tambahkan pekerja atau proksi
Biaya per 1000 Rekaman $0.5-5 Optimalkan lalu lintas, gunakan datacenter
Persentase Duplikat <5% Tingkatkan deduplikasi, periksa logika crawling

Kesimpulan

Pengumpulan data untuk pelatihan model AI adalah tugas yang kompleks, memerlukan pemilihan proksi yang tepat, pengaturan rotasi, menghindari perlindungan, dan optimisasi biaya. Poin-poin kunci:

  • Untuk sumber sederhana (API, situs tanpa perlindungan) gunakan proksi datacenter — mereka cepat dan murah
  • Untuk platform yang dilindungi (media sosial, marketplace, situs dengan Cloudflare) proksi residential sangat diperlukan
  • Atur rotasi tergantung pada tugas: berdasarkan permintaan untuk pengambilan massal dari berbagai situs, sesi lengket untuk bekerja dengan satu situs
  • Gunakan browser headless dengan plugin penyamaran untuk menghindari sistem anti-bot
  • Buat arsitektur yang dapat diskalakan dengan antrian tugas dan pekerja paralel
  • Optimalkan pengeluaran: kombinasikan jenis proksi, cache permintaan, kurangi lalu lintas

Dengan pengaturan yang tepat, Anda dapat mengumpulkan terabyte data secara stabil dan ekonomis. Mulailah dengan proyek percontohan kecil di 10-20 sumber, perbaiki proses, lalu skalakan hingga volume industri.

Jika Anda berencana untuk mengumpulkan data dari platform yang dilindungi (media sosial, e-commerce, situs dengan sistem anti-bot), kami merekomendasikan untuk menggunakan proksi residential — mereka memberikan tingkat kepercayaan yang tinggi dan persentase pemblokiran yang minimal. Untuk sumber sederhana dan API, cukup gunakan proksi datacenter, yang memberikan kecepatan maksimal dengan biaya rendah.

```