Kembali ke blog

Robots.txt dan Proksi: Cara Mengambil Data Pesaing Secara Legal Tanpa Mendapatkan Larangan Situs

Panduan lengkap untuk pengambilan data etis melalui proxy: cara mematuhi robots.txt, menghindari pemblokiran, dan mengumpulkan data pesaing tanpa risiko hukum.

📅5 Maret 2026
```html

Pengambilan data pesaing adalah praktik umum bagi pemasar, penjual di marketplace, dan agensi. Anda memantau harga di Wildberries, mengumpulkan iklan dari Avito, menganalisis produk pesaing. Namun, sebagian besar situs memblokir permintaan massal, dan mengabaikan file robots.txt dapat menyebabkan masalah hukum. Dalam artikel ini, kita akan membahas cara menggunakan proxy untuk pengambilan data secara etis: mematuhi aturan situs, menghindari pemblokiran, dan mengumpulkan data tanpa risiko bagi bisnis.

Apa itu robots.txt dan mengapa itu penting bagi situs

File robots.txt adalah dokumen teks di root situs yang memberi tahu robot pencari dan pengambil data bagian mana yang dapat dipindai dan mana yang dilarang. Misalnya, toko online dapat melarang pengindeksan keranjang belanja atau akun pribadi agar halaman tersebut tidak muncul di Google.

File robots.txt yang tipikal terlihat seperti ini:

User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /api/
Crawl-delay: 10

User-agent: Googlebot
Allow: /

Sitemap: https://example.com/sitemap.xml

Analisis direktif:

  • User-agent: * — aturan untuk semua bot (bintang berarti "bot mana saja")
  • Disallow: /admin/ — dilarang memindai bagian /admin/
  • Crawl-delay: 10 — jeda 10 detik antara permintaan
  • User-agent: Googlebot — aturan khusus untuk Google (semua diizinkan)

Mengapa situs menggunakan robots.txt:

  1. Perlindungan dari kelebihan beban server — pengambilan data massal menciptakan beban pada server, memperlambat kinerja untuk pengguna nyata
  2. Menyembunyikan halaman teknis — keranjang belanja, formulir pembayaran, endpoint API tidak boleh diindeks
  3. Perlindungan data komersial — marketplace tidak ingin pesaing dengan mudah mengunduh seluruh katalog produk
  4. Penghematan trafik — setiap permintaan bot memerlukan biaya bagi pemilik situs

Penting: robots.txt adalah rekomendasi, bukan penghalang teknis. File ini tidak memblokir akses secara fisik, tetapi mengabaikan aturan dapat menyebabkan pemblokiran IP Anda atau tuntutan hukum (terutama di AS dan Eropa).

Pengambilan data berada di zona abu-abu hukum. Di berbagai negara berlaku aturan yang berbeda, tetapi ada prinsip umum yang penting untuk diketahui agar tidak menghadapi tuntutan hukum.

Hukum di Rusia

Di Rusia tidak ada undang-undang khusus tentang pengambilan data, tetapi norma umum diterapkan:

  • Hak cipta (Kode Sipil RF, Pasal 1259) — tidak boleh menyalin teks unik, foto, deskripsi produk tanpa izin pemegang hak. Pengambilan data harga dan karakteristik biasanya aman, karena ini adalah data faktual.
  • Data pribadi (152-FZ) — dilarang mengumpulkan data pribadi pengguna (nama, telepon, email) tanpa persetujuan. Ini berlaku untuk pengambilan profil media sosial atau basis kontak.
  • Persaingan tidak sehat (Pasal 14.33 Kode Pelanggaran Administratif RF) — jika pengambilan data digunakan untuk menyalin model bisnis atau menyesatkan pelanggan, dapat dikenakan denda hingga 500.000 rubel.

Hukum di AS dan Eropa

Di AS dan UE, hukum lebih ketat:

  • CFAA (Computer Fraud and Abuse Act, AS) — akses tidak sah ke sistem komputer dianggap sebagai kejahatan. Pelanggaran terhadap robots.txt dapat ditafsirkan sebagai "akses tidak sah". Kasus terkenal: LinkedIn vs hiQ Labs (2022) — pengadilan memutuskan bahwa pengambilan data publik adalah legal, tetapi mengabaikan penghalang teknis (misalnya, captcha) adalah tidak.
  • GDPR (General Data Protection Regulation, UE) — pengumpulan data pribadi warga UE tanpa persetujuan eksplisit dilarang. Denda hingga 20 juta euro atau 4% dari omset tahunan perusahaan.
  • Terms of Service (Perjanjian Pengguna) — banyak situs secara eksplisit melarang pengambilan data dalam aturan mereka. Pelanggaran dapat mengakibatkan tuntutan hukum karena breach of contract (pelanggaran kontrak).

Tip praktis: Sebelum melakukan pengambilan data, periksa tiga dokumen: robots.txt, Terms of Service, dan Privacy Policy situs target. Jika pengambilan data secara eksplisit dilarang — cari sumber data alternatif (API publik, program kemitraan, dataset siap pakai).

Apa yang aman untuk diambil datanya

Tipe data Risiko Komentar
Harga produk Rendah Data faktual, tidak dilindungi hak cipta
Karakteristik produk Rendah Data teknis aman
Deskripsi unik Tinggi Dilindungi hak cipta
Foto produk Tinggi Perlu izin pemegang hak
Kontak pengguna Kritis Pelanggaran 152-FZ dan GDPR
Statistik publik Rendah Data terbuka aman

Pengambilan data etis: bagaimana mengumpulkan data tanpa pelanggaran

Pengambilan data etis adalah keseimbangan antara tugas bisnis dan menghormati pemilik situs. Anda dapat mengumpulkan data yang diperlukan tanpa menciptakan masalah bagi sumber yang ditargetkan dan tanpa melanggar hukum.

Prinsip dasar pengambilan data etis

  1. Patuh pada robots.txt — jika bagian dilarang untuk pengambilan data, jangan coba untuk mengelak. Cari sumber data alternatif.
  2. Batasi kecepatan permintaan — jangan kirim 1000 permintaan per detik. Beri jeda 2-10 detik antara permintaan untuk tidak membebani server.
  3. Gunakan User-Agent dari pengambil data Anda — jangan menyamar sebagai pengguna biasa. Sebutkan User-Agent yang jujur, misalnya: "MyCompanyParser/1.0 (contact@mycompany.com)". Ini memungkinkan administrator situs menghubungi Anda jika ada masalah.
  4. Ambil hanya data publik — jangan coba mengakses bagian tertutup, API, atau basis data.
  5. Jangan menjual kembali data yang disalin — gunakan informasi yang dikumpulkan untuk kebutuhan internal (analisis pesaing, pemantauan harga), bukan untuk membuat layanan yang bersaing.
  6. Cache data — jangan minta halaman yang sama beberapa kali. Simpan hasil secara lokal dan perbarui sesuai jadwal (sekali sehari, sekali seminggu).

Kapan TIDAK seharusnya mengambil data

Ada situasi di mana pengambilan data menciptakan lebih banyak masalah daripada manfaat:

  • Situs menyediakan API — banyak marketplace (Wildberries, Ozon, Yandex.Market) memiliki API resmi untuk mitra. Gunakan itu daripada pengambilan data — ini lebih cepat, lebih legal, dan lebih dapat diandalkan.
  • Data dilindungi oleh captcha atau otorisasi — menghindari perlindungan dapat dianggap sebagai peretasan sistem.
  • Situs secara eksplisit melarang pengambilan data dalam Terms of Service — risiko tuntutan hukum terlalu tinggi.
  • Anda mengumpulkan data pribadi — ini melanggar GDPR dan 152-FZ dengan denda besar.

Cara membaca dan mematuhi robots.txt dengan benar

File robots.txt terletak di root domain: https://example.com/robots.txt. Sebelum memulai pengambilan data, selalu periksa file ini.

Direktif utama robots.txt

Direktif Arti Contoh
User-agent Untuk bot mana aturan berlaku User-agent: * (semua bot)
Disallow Bagian yang dilarang untuk diambil datanya Disallow: /admin/
Allow Bagian yang diizinkan (pengecualian dari Disallow) Allow: /public/
Crawl-delay Jeda minimum antara permintaan (dalam detik) Crawl-delay: 10
Sitemap Tautan ke peta situs (daftar semua halaman) Sitemap: /sitemap.xml

Contoh robots.txt dan cara menginterpretasikannya

Contoh 1: Larangan total pengambilan data

User-agent: *
Disallow: /

Ini berarti: "Semua bot dilarang memindai seluruh situs". Pengambilan data dari situs seperti ini adalah pelanggaran aturan pemilik. Cari sumber data alternatif.

Contoh 2: Pembatasan selektif

User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /cart/
Allow: /products/
Crawl-delay: 5

Ini berarti: "Anda dapat mengambil data dari bagian /products/ (produk), tetapi dilarang dari /admin/, /api/, dan /cart/. Beri jeda 5 detik antara permintaan". Ini adalah kondisi yang normal — Anda dapat mengambil produk dengan mematuhi batasan.

Contoh 3: Aturan untuk bot tertentu

User-agent: Googlebot
Allow: /

User-agent: *
Disallow: /
Crawl-delay: 10

Ini berarti: "Google dapat memindai seluruh situs, tetapi semua bot lainnya tidak". Jika Anda bukan Google, pengambilan data dilarang.

Cara memeriksa robots.txt sebelum pengambilan data

Sebagian besar bahasa pemrograman memiliki pustaka untuk memeriksa robots.txt secara otomatis. Contoh dalam Python:

from urllib.robotparser import RobotFileParser

rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()

# Memeriksa apakah halaman dapat diambil datanya
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"

if rp.can_fetch(user_agent, url):
    print("Pengambilan data diizinkan")
else:
    print("Pengambilan data dilarang oleh robots.txt")

Ini akan secara otomatis memeriksa aturan dan memberi tahu apakah pengambilan data dari URL tertentu diizinkan.

Rate Limiting dan jeda antara permintaan

Rate Limiting (pembatasan kecepatan permintaan) adalah perlindungan situs dari kelebihan beban. Jika Anda mengirim terlalu banyak permintaan dalam waktu singkat, server dapat memblokir IP Anda atau menampilkan captcha.

Mengapa penting untuk mematuhi jeda

  • Hindari pemblokiran IP — situs melacak frekuensi permintaan dari satu IP. Jika Anda mengirim 100 permintaan per menit, Anda akan diblokir sebagai bot.
  • Kurangi beban pada server — pengambilan data massal dapat "menjatuhkan" situs, terutama jika itu adalah sumber daya kecil di hosting murah.
  • Mematuhi Crawl-delay dari robots.txt — jika situs menyebutkan jeda 10 detik, mengabaikan aturan ini tidak etis.
  • Perilaku yang lebih alami — pengguna biasa tidak membuka 10 halaman per detik. Jeda membuat pengambil data Anda terlihat seperti orang nyata.

Jeda yang disarankan untuk berbagai tugas

Tipe pengambilan data Jeda antara permintaan Komentar
Situs kecil (hingga 1000 halaman) 5-10 detik Daya server rendah
Situs menengah (toko online) 2-5 detik Keseimbangan optimal
Marketplace besar (Wildberries, Ozon) 1-3 detik Infrastruktur kuat, tetapi perlindungan ketat
Endpoint API Sesuai dengan batasan API (biasanya 10-100 permintaan/menit) Lihat dokumentasi API
Media sosial (Instagram, VK) 10-30 detik Batasan sangat ketat, risiko pemblokiran tinggi

Cara menerapkan jeda dalam kode

Contoh dalam Python menggunakan pustaka time:

import time
import requests

urls = [
    "https://example.com/product1",
    "https://example.com/product2",
    "https://example.com/product3"
]

for url in urls:
    response = requests.get(url)
    print(f"Data diambil: {url}")
    
    # Jeda 3 detik sebelum permintaan berikutnya
    time.sleep(3)

Untuk skenario yang lebih kompleks, gunakan jeda acak (random delay) agar perilaku terlihat lebih alami:

import time
import random

for url in urls:
    response = requests.get(url)
    
    # Jeda acak antara 2 hingga 5 detik
    delay = random.uniform(2, 5)
    time.sleep(delay)

Rotasi proxy untuk pengambilan data etis

Bahkan jika Anda mematuhi robots.txt dan memberikan jeda, pengambilan data dalam jumlah besar dari satu IP dapat menimbulkan kecurigaan. Rotasi proxy membantu mendistribusikan permintaan di antara berbagai alamat IP, meniru perilaku banyak pengguna nyata.

Mengapa rotasi proxy diperlukan

  • Menghindari Rate Limiting — jika batasnya adalah 100 permintaan/jam dari satu IP, maka 10 proxy akan memberi Anda 1000 permintaan/jam.
  • Penyebaran geografis — untuk pengambilan data regional (harga di Wildberries di Moskow dan Vladivostok) diperlukan proxy dari berbagai kota.
  • Kurangi kecurigaan — permintaan dari berbagai IP terlihat seperti trafik dari pengguna nyata.
  • Cadangan — jika satu proxy diblokir, pengambil data secara otomatis beralih ke yang lain.

Proxy mana yang digunakan untuk pengambilan data etis

Tipe proxy Kelebihan Kekurangan Kapan digunakan
Residential IP nyata dari pengguna rumah, risiko pemblokiran rendah Lebih mahal dibandingkan tipe lain Pengambilan data dari media sosial, marketplace dengan perlindungan ketat
Mobile IP dari operator seluler, kepercayaan maksimum Paling mahal, lebih sedikit IP yang tersedia Pengambilan data dari Instagram, TikTok, aplikasi seluler
Data center Murah, kecepatan tinggi Mudah terdeteksi, sering ada dalam daftar hitam Pengambilan data dari situs sederhana, pengujian

Rekomendasi untuk pengambilan data etis: Gunakan proxy residential dengan rotasi otomatis. Mereka memberikan keseimbangan antara biaya dan keandalan, dan IP mereka terlihat seperti pengguna biasa.

Strategi rotasi proxy

  1. Rotasi untuk setiap permintaan — setiap permintaan menggunakan IP baru. Cocok untuk pengambilan data dari situs dengan batasan ketat (media sosial, marketplace).
  2. Rotasi berdasarkan waktu (setiap 5-10 menit) — satu IP digunakan untuk beberapa permintaan, kemudian diganti. Perilaku yang lebih alami.
  3. Sticky sessions (sesi lengket) — satu IP digunakan untuk seluruh sesi pengguna (misalnya, otorisasi + pengambilan data dari akun pribadi). Penting untuk situs dengan otorisasi.
  4. Rotasi geografis — untuk setiap wilayah menggunakan proxy dari wilayah tersebut. Contoh: pengambilan data harga di Wildberries di Moskow — menggunakan proxy dari Moskow.

Contoh rotasi proxy dalam Python

import requests
import random
import time

# Daftar proxy (ganti dengan yang nyata)
proxies_list = [
    {"http": "http://user:pass@proxy1.example.com:8080"},
    {"http": "http://user:pass@proxy2.example.com:8080"},
    {"http": "http://user:pass@proxy3.example.com:8080"}
]

urls = [
    "https://example.com/product1",
    "https://example.com/product2",
    "https://example.com/product3"
]

for url in urls:
    # Pilih proxy acak
    proxy = random.choice(proxies_list)
    
    try:
        response = requests.get(url, proxies=proxy, timeout=10)
        print(f"Data diambil {url} melalui {proxy}")
    except Exception as e:
        print(f"Kesalahan dengan proxy {proxy}: {e}")
    
    # Jeda 3 detik
    time.sleep(3)

Kasus praktis: pengambilan data dari marketplace dan pesaing

Mari kita lihat skenario nyata pengambilan data etis untuk bisnis.

Kasus 1: Pemantauan harga di Wildberries

Tugas: Anda menjual produk di Wildberries dan ingin memantau harga pesaing untuk menyesuaikan harga Anda.

Masalah:

  • Wildberries memblokir IP saat permintaan terlalu sering
  • Harga tergantung pada wilayah pengiriman
  • Perlu mengambil data 100-500 produk setiap hari

Solusi etis:

  1. Periksa robots.txt — Wildberries mengizinkan pengambilan data dari halaman produk, tetapi melarang endpoint API.
  2. Gunakan proxy residential — untuk setiap wilayah (Moskow, SPb, Novosibirsk) ambil proxy dari wilayah tersebut.
  3. Rotasi untuk setiap permintaan — ambil setiap produk dengan IP baru.
  4. Jeda 2-3 detik — beri jeda antara permintaan.
  5. Ambil data sekali sehari — tidak perlu memperbarui harga setiap jam, cukup pemantauan harian.

Hasil: Anda mendapatkan harga pesaing yang akurat tanpa pemblokiran. Wildberries tidak melihat beban yang tidak normal, karena permintaan terdistribusi secara waktu dan IP.

Kasus 2: Pengambilan iklan di Avito

Tugas: Anda adalah agen real estat dan ingin mengumpulkan semua iklan penjualan apartemen di kota Anda untuk analisis pasar.

Masalah:

  • Avito menampilkan captcha saat aktivitas mencurigakan
  • Perlu mengambil 5000+ iklan
  • Data diperbarui setiap hari

Solusi etis:

  1. Periksa robots.txt — Avito mengizinkan pengambilan data dari halaman iklan, tetapi dengan batasan Crawl-delay: 5 detik.
  2. Gunakan proxy residential — rotasi setiap 10 permintaan (tidak untuk setiap permintaan, agar tidak terlihat mencurigakan).
  3. Jeda 5-7 detik — patuhi Crawl-delay dari robots.txt.
  4. Ambil data di malam hari — saat beban situs minimal (2-6 pagi).
  5. Cache data — jangan ambil iklan yang sama dua kali, simpan hasilnya di database.

Hasil: Dalam semalam, Anda mengumpulkan semua iklan baru tanpa captcha dan pemblokiran. Avito tidak mengalami kelebihan beban, Anda mendapatkan data yang diperlukan.

Kasus 3: Analisis produk pesaing

Tugas: Anda adalah pemilik toko online elektronik dan ingin mengetahui produk baru apa yang muncul di pesaing.

Masalah:

  • Situs pesaing dihosting di server yang aman dengan sistem anti-bot
  • Perlu mengambil katalog dari 10.000 produk
  • Anda ingin melakukan ini setiap minggu

Solusi etis:

  1. Periksa robots.txt — pengambilan data dari /catalog/ diizinkan, tetapi /admin/ dan /api/ dilarang.
  2. Gunakan Sitemap — alih-alih menjelajahi semua halaman secara manual, ambil daftar URL dari sitemap.xml (ini lebih cepat dan tidak menciptakan beban tambahan).
  3. Proxy residential dengan rotasi setiap 5 menit — satu IP melakukan 20-30 permintaan, kemudian diganti.
  4. Jeda 3-5 detik — meniru perilaku pengguna biasa.
  5. Ambil hanya produk baru — bandingkan katalog saat ini dengan sebelumnya dan ambil hanya perubahan.

Hasil: Anda mendapatkan daftar produk baru pesaing setiap minggu tanpa pemblokiran. Situs pesaing tidak mengalami masalah, Anda mendapatkan keunggulan kompetitif.

Alat untuk otomatisasi dengan mematuhi aturan

Ada alat siap pakai yang menyederhanakan pengambilan data etis dan secara otomatis mematuhi robots.txt.

Scrapy (Python)

Scrapy adalah kerangka kerja populer untuk pengambilan data di Python. Ini secara otomatis memeriksa robots.txt dan mematuhi aturan.

Pengaturan untuk mematuhi robots.txt di Scrapy:

# settings.py

# Aktifkan kepatuhan terhadap robots.txt
ROBOTSTXT_OBEY = True

# Jeda antara permintaan (dalam detik)
DOWNLOAD_DELAY = 3

# Jeda acak (dari 0.5 hingga 1.5 * DOWNLOAD_DELAY)
RANDOMIZE_DOWNLOAD_DELAY = True

# Pembatasan permintaan bersamaan ke satu domain
CONCURRENT_REQUESTS_PER_DOMAIN = 1

# User-Agent dari pengambil data Anda
USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'

Dengan pengaturan ini, Scrapy secara otomatis akan memeriksa robots.txt sebelum pengambilan data dan akan mematuhi semua aturan.

Apify (platform cloud)

Apify adalah platform cloud untuk web scraping tanpa kode. Anda membuat pengambil data melalui antarmuka visual, dan Apify secara otomatis mengelola proxy dan mematuhi batasan.

Keuntungan untuk pengambilan data etis:

  • Rotasi proxy bawaan (residential dan data center)
  • Mematuhi robots.txt secara otomatis
  • Pengaturan jeda melalui antarmuka
  • Jadwal peluncuran (pengambilan data sekali sehari/minggu)

Octoparse (pengambil data tanpa kode)

Octoparse adalah aplikasi desktop untuk pengambilan data tanpa pemrograman. Cocok untuk pemasar dan penjual yang tidak bisa menulis kode.

Bagaimana mengatur pengambilan data etis di Octoparse:

  1. Buka pengaturan tugas (Task Settings)
  2. Aktifkan "Respect robots.txt"
  3. Atur jeda (Delay) 3-5 detik
  4. Sambungkan proxy di bagian "Proxy Settings"
  5. Atur jadwal peluncuran (Schedule)

Puppeteer/Playwright (JavaScript)

Puppeteer dan Playwright adalah pustaka untuk otomatisasi browser. Mereka cocok untuk pengambilan data dari situs dengan rendering JavaScript.

Contoh pengambilan data etis dengan Puppeteer:

const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');

async function ethicalScrape(url) {
  // Periksa robots.txt
  const robots = robotsParser('https://example.com/robots.txt', 
    'MyParser/1.0');
  
  if (!robots.isAllowed(url)) {
    console.log('Pengambilan data dilarang oleh robots.txt');
    return;
  }
  
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  
  // Jeda sebelum memuat halaman
  await new Promise(resolve => setTimeout(resolve, 3000));
  
  await page.goto(url);
  const data = await page.evaluate(() => {
    return document.querySelector('h1').innerText;
  });
  
  console.log(data);
  await browser.close();
}

ethicalScrape('https://example.com/product1');

Kesimpulan

Pengambilan data etis melalui proxy adalah keseimbangan antara tugas bisnis dan menghormati pemilik situs. Dengan mematuhi robots.txt, memberikan jeda antara permintaan, dan menggunakan rotasi proxy, Anda dapat mengumpulkan data yang diperlukan tanpa risiko hukum dan pemblokiran. Prinsip utama: periksa robots.txt sebelum pengambilan data, batasi kecepatan permintaan, gunakan User-Agent yang jujur, dan ambil hanya data publik. Ini akan melindungi bisnis Anda dari tuntutan hukum dan memastikan pengambil data berfungsi dengan stabil.

Jika Anda berencana untuk mengambil data dari marketplace, situs pesaing, atau mengumpulkan data untuk analisis pasar, kami merekomendasikan untuk menggunakan proxy residential dengan rotasi otomatis. Mereka memberikan...

```