Pengaturan proxy di Crawl4AI
Crawl4AI — adalah alat open-source yang kuat untuk web scraping, yang dirancang untuk mengekstrak data bersih dari halaman web yang cocok untuk pelatihan AI dan model LLM. Alat ini cepat, fleksibel, dan mampu melewati perlindungan dasar situs seperti sistem anti-bot sederhana. Untuk perlindungan yang lebih kompleks, termasuk CAPTCHA, direkomendasikan integrasi dengan layanan pihak ketiga (lihat Bagian 4).
Namun, pada scraping skala besar (misalnya, 10.000 halaman), alamat IP lokal Anda akan cepat terblokir. Untuk menghindari hal ini dan memastikan aliran data yang berkelanjutan untuk model AI Anda, diperlukan infrastruktur proksi yang andal. Dalam panduan ini, kita akan membahas cara memilih tipe proksi yang tepat dari CyberYozh App untuk tugas Anda dan mengintegrasikannya ke dalam Crawl4AI.
🛑 Informasi Sangat Penting Mengenai Protokol (HTTP vs SOCKS5): Pustaka Playwright (yang menjadi dasar Crawl4AI) tidak mendukung proksi SOCKS5 dengan otorisasi (login:password). Karena semua proksi di CyberYozh App hanya bekerja dengan otorisasi demi keamanan, untuk bekerja dengan Crawl4AI Anda harus menggunakan protokol HTTP. Protokol ini sepenuhnya mendukung otorisasi dan memastikan stabilitas operasional.
Fitur Utama Integrasi: Proksi sebagai modul terpisah (proxy_module.py) untuk modularitas. Data disimpan dalam file teks (berdasarkan tipe: residensial, seluler, datacenter). Peralihan tipe/protokol dilakukan dalam satu atau dua baris di skrip utama.
Bagian 1. Memilih Proksi: Tipe Mana yang Cocok untuk Dataset Anda?
Crawl4AI bersifat universal, namun efektivitasnya bergantung pada "bahan bakar" — yaitu kolam (pool) alamat IP. Di CyberYozh App, tersedia berbagai tipe proksi, masing-masing dioptimalkan untuk skenario scraping tertentu. Pilihan bergantung pada tingkat perlindungan situs, volume data, dan kebutuhan rotasi. Semua tipe mendukung HTTP dan SOCKS5.
- Residensial Rotasi (Residential Rotating) — Pilihan No. 1 untuk scraping massal
- Inti: Pool berisi jutaan alamat IP rumah asli. Rotasi otomatis: IP baru melalui tautan atau permintaan API.
- Ideal untuk Crawl4AI: Dataset besar dari marketplace (Amazon, Tokopedia), mesin pencari (Google, Yandex).
- Mengapa: Kepercayaan (trust) tinggi, meminimalkan pemblokiran. Mendukung 3 jenis sesi (IP Acak, Pendek, Panjang hingga 6 jam).
- Residensial Statis (Residential Static / ISP)
- Inti: IP rumah tetap selama periode sewa.
- Ideal untuk Crawl4AI: Situs dengan otorisasi (akun pribadi).
- Mengapa: Stabilitas sesi.
- Port Seluler Khusus (Mobile Dedicated)
- Inti: Modem pribadi dengan kartu SIM asli, didedikasikan khusus untuk Anda.
- Ideal untuk Crawl4AI: Tugas yang sulit, situs dengan perlindungan anti-bot yang ketat, emulasi perilaku pengguna nyata dari perangkat seluler.
- Mengapa: Kepercayaan maksimal dari sisi situs web. Direkomendasikan untuk kasus yang paling berat.
- Proksi Seluler Bersama (Mobile Shared)
- Inti: IP dari 4G/5G, saluran bersama dalam mode privat.
- Ideal untuk Crawl4AI: Media sosial (Instagram, TikTok) atau situs dengan perlindungan (Cloudflare).
- Mengapa: Kepercayaan tinggi untuk trafik seluler.
- Proksi Datacenter Khusus (Datacenter)
- Inti: IP server, cepat dan murah.
- Ideal untuk Crawl4AI: Sumber terbuka tanpa perlindungan.
- Mengapa: Kecepatan maksimal.
Tips Integrasi: Untuk pendekatan campuran, kombinasikan berbagai tipe proksi.
Bagian 2. Persiapan Data dan Instalasi
Siapkan data dari CyberYozh App:
Setelah membeli proksi, salin datanya:
- Host (IP): 51.77.190.247
- Port: 5959
- Login: user123
- Password: pass123
Format string koneksi: Crawl4AI (sama seperti pustaka Playwright yang mendasarinya) menerima proksi dalam format string tunggal: http://login:password@ip:port
Contoh: http://user123:pass123@51.77.190.247:5959
Manajemen Proksi Residensial Rotasi
Untuk Proksi Residensial Rotasi di CyberYozh App, tersedia pengaturan sesi yang fleksibel langsung melalui login (username). Hal ini sangat krusial bagi logika scraper Anda.
Kredensial dapat dibuat di kabinet pribadi dengan menekan tombol “Buat kredensial” pada kartu paket. Tersedia format output: IP:PORT:USERNAME:PASSWORD atau tautan untuk cURL.

Gbr 1. Berpindah ke antarmuka pembuatan konfigurasi dan parameter koneksi (generator kredensial).

Gbr 2. Menggunakan generator untuk mengatur parameter sid, yang bertanggung jawab untuk membuat sesi unik baru.

Gbr 3. Pengaturan parameter untuk pembentukan kredensial menggunakan sesi panjang (Sticky).

Gbr 4. Hasil dari generator kredensial.
Tipe Sesi dan Cara Penulisannya:
1. IP Acak (Random IP) — IP baru untuk setiap permintaan Gunakan awalan -res-any. Contoh login: user-res-any Kapan dibutuhkan: Scraping biasa di mana Anda tidak perlu mempertahankan status antar halaman.
2. Sesi Pendek (hingga 1 menit) Memungkinkan mempertahankan IP untuk waktu singkat (misalnya, melewati captcha dan memuat halaman). Gunakan awalan -sid-RANDOMNUMBER.
Format: user-res-any-sid-47551677 (di mana 47551677 adalah angka acak apa pun yang Anda buat).
Geo: Dalam sesi pendek, Anda dapat memilih Negara, Wilayah, dan Kota (contoh: -res_sc-us_georgia_macon-sid-54683597).
3. Sesi Sticky Panjang (hingga 6 jam) Ini adalah Sticky-session yang mempertahankan satu IP hingga 6 jam. Ideal untuk parsing mendalam pada satu situs.
Cara mendapatkan: Opsi A (Mudah): Buat string jadi dengan "Sesi Panjang" di generator kredensial di kabinet pribadi. Opsi B (Lanjutan/API): Perlu melakukan 2 langkah. Buat permintaan cURL dengan awalan -resfix- (contoh: user-resfix-us-nnid-0). Dalam header respons X-NN-LLS, ambil token (contoh: 9d016e26...). Masukkan token ini menggantikan 0 dalam login: user-resfix-us-nnid-9d016e26....
Manajemen Proksi Seluler di Kabinet Pribadi
Bekerja dengan proksi seluler memiliki fitur penting: tautan API digunakan untuk mengganti IP. Pastikan untuk menemukannya di kartu paket yang dibeli — URL inilah yang perlu dimasukkan ke dalam perangkat lunak atau skrip Anda untuk mengatur rotasi otomatis.

Gbr 5. Lokasi tautan untuk rotasi otomatis.
Selain itu, di CyberYozh App tersedia mode manual. Jika Anda perlu mengganti alamat IP saat ini juga tanpa menggunakan skrip, cukup tekan tombol ganti IP di panel kontrol — alamat akan diperbarui seketika.

Gbr 6. Tombol untuk penggantian manual paksa.
Buat file di direktori proyek:
proxies_residential.txt:
user123:pass123@51.77.190.247:5959 Tambahkan lebih banyak proksi untuk rotasi.
proxies_mobile.txt dan proxies_datacenter.txt dengan cara yang sama. * Format: login:password@host:port untuk otorisasi (hanya dengan HTTP).
Instalasi:
pip install crawl4ai playwright
playwright install
Periksa instalasi: python -m crawl4ai --version. Gunakan venv jika diperlukan.
Bagian 3. Integrasi Proksi ke dalam Crawl4AI (Python) sebagai Modul Terpisah
Modul proxy_module.py memuat proksi dari file, menambahkan protokol ("http" atau "socks5") dan mendukung rotasi.
Langkah 1. Modul Proksi (proxy_module.py):
import random
import os
class ProxyManager:
def __init__(self, proxy_type="residential", protocol="http", rotate=True):
"""
Inisialisasi manajer proksi.
:param proxy_type: Tipe ('residential', 'mobile', 'datacenter')
:param protocol: Protokol ('http' atau 'socks5') — socks5 hanya tanpa otorisasi!
:param rotate: Nyalakan/matikan rotasi
"""
self.proxy_type = proxy_type.lower()
self.protocol = protocol.lower()
self.rotate = rotate
self.proxies = self._load_proxies() # Memuat dari file
if self.protocol == "socks5" and self.proxies and '@' in self.proxies[0]: # Cek otorisasi
raise ValueError("SOCKS5 tidak mendukung otorisasi di Playwright! Hapus login:password dari file.")
self.current_proxy = None
def _load_proxies(self):
"""Memuat proksi dari file."""
file_map = {
"residential": "proxies_residential.txt",
"mobile": "proxies_mobile.txt",
"datacenter": "proxies_datacenter.txt"
}
file_name = file_map.get(self.proxy_type)
if not file_name:
raise ValueError(f"Tipe tidak dikenal: {self.proxy_type.")
file_path = os.path.join(os.path.dirname(__file__), file_name)
if not os.path.exists(file_path):
raise FileNotFoundError(f"File {file_name tidak ditemukan.")
with open(file_path, 'r') as f:
lines = f.read().strip().splitlines()
# Menambahkan protokol: protocol://line (line = user:pass@host:port atau host:port)
proxies = [f"{self.protocol://{line.strip()" for line in lines if line.strip()]
if not proxies:
raise ValueError(f"File {file_name kosong.")
return proxies
def get_proxy(self):
"""Mengambil proksi."""
if not self.proxies:
raise ValueError("Tidak ada proksi!")
if self.rotate:
self.current_proxy = random.choice(self.proxies)
else:
self.current_proxy = self.proxies[0]
return self.current_proxy
def get_proxy_config(self):
"""Mengembalikan ProxyConfig untuk Crawl4AI."""
if not self.current_proxy:
self.get_proxy()
# Memisahkan: protocol://user:pass@host:port atau protocol://host:port
if '@' in self.current_proxy:
parts = self.current_proxy.split('@')
auth = parts[0].split('//')[1] # user:pass
host_port = parts[1] # host:port
user, password = auth.split(':')
else:
host_port = self.current_proxy.split('//')[1] # host:port untuk tanpa-auth
user, password = None, None
from crawl4ai.async_configs import ProxyConfig
return ProxyConfig(
server=f"{self.protocol://{host_port",
username=user,
password=password
)
def add_proxy(self, proxy_url):
self.proxies.append(proxy_url)
Langkah 2. Skrip Scraper (scraper.py):
import asyncio
from crawl4ai import AsyncWebCrawler
from crawl4ai.async_configs import BrowserConfig
from proxy_module import ProxyManager
# Ganti tipe (residential, mobile, datacenter)
PROXY_TYPE = "residential"
# Ganti protokol (http atau socks5 — socks5 hanya tanpa otorisasi!)
PROXY_PROTOCOL = "http" # Direkomendasikan untuk otorisasi; untuk SOCKS5 hapus login:password dari file
# Inisialisasi manajer
proxy_manager = ProxyManager(proxy_type=PROXY_TYPE, protocol=PROXY_PROTOCOL, rotate=True)
async def main():
try:
proxy_config = proxy_manager.get_proxy_config()
browser_config = BrowserConfig(proxy_config=proxy_config)
async with AsyncWebCrawler(verbose=True, config=browser_config) as crawler:
current_proxy = proxy_manager.get_proxy()
print(f"🚀 Menjalankan via {PROXY_PROTOCOL.upper() proksi...")
print(f"Proksi: {current_proxy")
result = await crawler.arun(
url="https://ipinfo.io/json",
bypass_cache=True
)
if result.success:
print("\n✅ Berhasil! Respons:")
print(result.markdown)
else:
print(f"\n❌ Galat: {result.error_message")
except Exception as e:
print(f"❌ Galat: {str(e)")
if __name__ == "__main__":
asyncio.run(main())
Langkah 3. Menjalankan:
python scraper.py
- Untuk SOCKS5: Atur PROXY_PROTOCOL = "socks5" dan hapus otorisasi dari file (hanya host:port). Jika otorisasi diperlukan — gunakan "http".
Bagian 4. Skenario Lanjutan dan Penyelesaian Masalah
Rotasi Otomatis (untuk residensial rotasi dan seluler):
Tidak perlu kode tambahan — gateway CyberYozh App sendiri yang merotasi IP. Cukup panggil crawler.arun dalam loop:
for url in urls_list:
proxy_config = proxy_manager.get_proxy_config() # Konfig baru untuk rotasi
browser_config = BrowserConfig(proxy_config=proxy_config)
# Inisialisasi ulang crawler dengan konfigurasi baru jika diperlukan
result = await crawler.arun(url=url, bypass_cache=True)
Rotasi Manual untuk Statis (residensial/datacenter):
Tambahkan beberapa baris ke dalam file proxies_residential.txt atau proxies_datacenter.txt dan gunakan rotate=True. Atau gunakan penggantian IP melalui tautan atau permintaan API.
Scraping Massal dengan Jeda:
Tambahkan jeda untuk meniru perilaku manusia:
import time
time.sleep(random.uniform(1, 5)) # Jeda 1-5 detik sebelum permintaan
💡 Tips: beberapa situs web mungkin menggunakan mekanisme pemeriksaan berbasis CAPTCHA untuk mencegah akses otomatis. Jika Anda menemui masalah seperti ini dalam alur kerja Anda, Anda dapat mengintegrasikan layanan pemrosesan CAPTCHA pihak ketiga, seperti CapSolver. Ini mendukung reCAPTCHA v2/v3, Cloudflare Turnstile, Challenge, AWS WAF, dan lainnya. Pastikan penggunaan Anda sesuai dengan persyaratan layanan situs web target dan undang-undang yang berlaku.
Penyelesaian Masalah:
- Kesalahan Koneksi: Periksa format dalam file (login:password@host:port). Uji proksi di browser.
- Terblokir Meskipun Menggunakan Proksi: Tingkatkan jeda atau ganti tipe (ke seluler untuk situs yang ketat). Tambahkan stealth mode di Crawl4AI: browser_type="undetected" di BrowserConfig.
- Kesalahan Playwright: Pastikan playwright install telah dijalankan. Jika headless=False, browser akan terbuka secara terlihat untuk debugging.
- Kesalahan Otorisasi SOCKS5: Playwright tidak mendukung — gunakan proksi HTTP.
- Pengecualian Asyncio: Abaikan; ini spesifik untuk Windows dan tidak memengaruhi operasional.
- Pencatatan (Logging): Aktifkan verbose=True di Crawl4AI untuk log detail.
Kesimpulan
Crawl4AI + proksi dari CyberYozh App — duet ideal untuk pengumpulan data tanpa pemblokiran. Pilih:
- Residensial Rotasi untuk dataset massal (Amazon/Google).
- Seluler Bersama (Shared) untuk media sosial dan situs terlindungi.
- Residensial Statis untuk tugas berbasis sesi.
- Datacenter Statis untuk pengumpulan data yang sederhana dan cepat.
Kunjungi katalog CyberYozh App, pilih proksi yang sesuai, atur Crawl4AI, dan skalakan scraping AI Anda.
Dokumentasi tambahan: Crawl4AI GitHub