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 permintaanUser-agent: Googlebot— aturan khusus untuk Google (semua diizinkan)
Mengapa situs menggunakan robots.txt:
- Perlindungan dari kelebihan beban server — pengambilan data massal menciptakan beban pada server, memperlambat kinerja untuk pengguna nyata
- Menyembunyikan halaman teknis — keranjang belanja, formulir pembayaran, endpoint API tidak boleh diindeks
- Perlindungan data komersial — marketplace tidak ingin pesaing dengan mudah mengunduh seluruh katalog produk
- 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).
Risiko hukum pengambilan data: apa kata hukum
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
- Patuh pada robots.txt — jika bagian dilarang untuk pengambilan data, jangan coba untuk mengelak. Cari sumber data alternatif.
- Batasi kecepatan permintaan — jangan kirim 1000 permintaan per detik. Beri jeda 2-10 detik antara permintaan untuk tidak membebani server.
- 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.
- Ambil hanya data publik — jangan coba mengakses bagian tertutup, API, atau basis data.
- Jangan menjual kembali data yang disalin — gunakan informasi yang dikumpulkan untuk kebutuhan internal (analisis pesaing, pemantauan harga), bukan untuk membuat layanan yang bersaing.
- 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
- Rotasi untuk setiap permintaan — setiap permintaan menggunakan IP baru. Cocok untuk pengambilan data dari situs dengan batasan ketat (media sosial, marketplace).
- Rotasi berdasarkan waktu (setiap 5-10 menit) — satu IP digunakan untuk beberapa permintaan, kemudian diganti. Perilaku yang lebih alami.
- Sticky sessions (sesi lengket) — satu IP digunakan untuk seluruh sesi pengguna (misalnya, otorisasi + pengambilan data dari akun pribadi). Penting untuk situs dengan otorisasi.
- 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:
- Periksa robots.txt — Wildberries mengizinkan pengambilan data dari halaman produk, tetapi melarang endpoint API.
- Gunakan proxy residential — untuk setiap wilayah (Moskow, SPb, Novosibirsk) ambil proxy dari wilayah tersebut.
- Rotasi untuk setiap permintaan — ambil setiap produk dengan IP baru.
- Jeda 2-3 detik — beri jeda antara permintaan.
- 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:
- Periksa robots.txt — Avito mengizinkan pengambilan data dari halaman iklan, tetapi dengan batasan Crawl-delay: 5 detik.
- Gunakan proxy residential — rotasi setiap 10 permintaan (tidak untuk setiap permintaan, agar tidak terlihat mencurigakan).
- Jeda 5-7 detik — patuhi Crawl-delay dari robots.txt.
- Ambil data di malam hari — saat beban situs minimal (2-6 pagi).
- 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:
- Periksa robots.txt — pengambilan data dari /catalog/ diizinkan, tetapi /admin/ dan /api/ dilarang.
- Gunakan Sitemap — alih-alih menjelajahi semua halaman secara manual, ambil daftar URL dari sitemap.xml (ini lebih cepat dan tidak menciptakan beban tambahan).
- Proxy residential dengan rotasi setiap 5 menit — satu IP melakukan 20-30 permintaan, kemudian diganti.
- Jeda 3-5 detik — meniru perilaku pengguna biasa.
- 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:
- Buka pengaturan tugas (Task Settings)
- Aktifkan "Respect robots.txt"
- Atur jeda (Delay) 3-5 detik
- Sambungkan proxy di bagian "Proxy Settings"
- 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...