Scraping yang sopan dan hemat kuota
Proxy bukan izin untuk mengambil apa saja. Aturan dasar scraping yang legal dan sopan, dari robots.txt sampai batas kecepatan, plus cara menghemat GB.
Residential proxy membantu menyebar request ke banyak IP, tapi tidak mengubah aturan main. Situs yang datanya kamu ambil punya syarat layanan, pemiliknya membayar server, dan sebagian datanya dilindungi hukum. Scraping yang sopan bisa berjalan lama tanpa masalah; yang serampangan cepat diblokir dan bisa berujung urusan hukum.
Pastikan boleh sebelum mulai
- Baca syarat layanan situsnya. Banyak situs melarang pengambilan data otomatis. Kalau dilarang, jangan lakukan.
- Cek robots.txt di
/robots.txtsitus tujuan. File ini menjelaskan bagian mana yang boleh dan tidak boleh diakses bot. Hormati aturannya, termasuk Crawl-delay kalau ada. - Cari API resmi atau fitur ekspor. Kalau tersedia, pakai itu: lebih stabil, lebih hemat, dan jelas diizinkan.
- Ambil data publik saja. Jangan masuk ke area yang butuh login milik orang lain, dan jangan menembus CAPTCHA atau paywall.
- Hati-hati dengan data pribadi. Nama, nomor HP, dan email dilindungi UU No. 27 Tahun 2022 tentang Pelindungan Data Pribadi. Jangan kumpulkan tanpa dasar hukum yang jelas.
Pemakaian yang melanggar hukum atau aturan situs juga melanggar Kebijakan Penggunaan kami dan bisa membuat akun ditangguhkan.
Sopan terhadap server
- Beri jeda beberapa detik antar request ke domain yang sama, dan jangan membuka banyak koneksi paralel ke satu situs.
- Anggap respons 429 dan 503 sebagai tanda untuk melambat. Ikuti header Retry-After, jangan malah mencoba lebih keras.
- Pakai User-Agent yang jujur dan cantumkan kontak, supaya admin situs bisa menghubungimu alih-alih langsung memblokir.
- Kalau situs menyediakan sitemap.xml, pakai itu untuk menemukan halaman, alih-alih merayapi semua tautan.
- Jadwalkan pekerjaan besar di jam sepi situs tujuan.
Kerangka scraper di Python
import random, timeimport requestsfrom urllib import robotparserUA = "RisetHargaBot/1.0 (+mailto:kamu@example.com)"PROXY = "http://USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000"PROXIES = {"http": PROXY, "https": PROXY}robots = robotparser.RobotFileParser("https://example.com/robots.txt")robots.read()jeda = robots.crawl_delay(UA) or 3def ambil(url):if not robots.can_fetch(UA, url):return None # dilarang robots.txt, lewatifor _ in range(3):r = requests.get(url, headers={"User-Agent": UA}, proxies=PROXIES, timeout=30)if r.status_code not in (429, 503):return rtunggu = r.headers.get("Retry-After", "60")time.sleep(int(tunggu) if tunggu.isdigit() else 60)return Nonefor url in ["https://example.com/produk/1", "https://example.com/produk/2"]:halaman = ambil(url)time.sleep(jeda + random.uniform(0, 2))
Kerangka ini membaca robots.txt sekali, melewati URL yang dilarang, memakai Crawl-delay situs (atau 3 detik kalau tidak ada), dan menunggu sesuai Retry-After sebelum mencoba lagi.
Hemat kuota
Tagihan dihitung dari data yang lewat proxy, jadi setiap byte yang tidak perlu adalah biaya.
- Pakai HTTP client biasa kalau datanya ada di HTML. Browser headless ikut mengunduh gambar, font, video, dan skrip.
- Kalau harus memakai browser, blokir gambar, font, dan media.
- Simpan hasil dan jangan mengambil ulang halaman yang belum berubah. Request bersyarat (If-None-Match dengan ETag, atau If-Modified-Since) membantu, karena respons 304 tidak membawa isi halaman.
- Batasi percobaan ulang, supaya satu error tidak berubah menjadi ribuan request.
Cara menghitung kebutuhan GB-nya ada di Berapa GB yang sebenarnya kamu butuhkan?