Daftar Isi
Kesalahan kode status HTTP pengikisan web
Saat Anda menjelajahi web, kode status HTTP seperti sinyal lalu lintas Internet - kode tersebut memberi tahu Anda bagaimana server merespons permintaan Anda. Mengetahui arti kode-kode ini akan membantu Anda menyesuaikan pendekatan, memecahkan masalah kesalahan, dan menjaga scraper Anda tetap berjalan lancar.
Berikut rincian singkatnya:
- informasi 1xx: Server telah menerima permintaan Anda dan sedang memprosesnya.
- 2xx sukses: Permintaan Anda telah berhasil diterima dan diproses – namun jangan berasumsi bahwa Anda telah menerima data yang Anda minta! Selalu periksa isi jawabannya.
- pengalihan 3xx: Server mengarahkan Anda ke halaman lain. Pastikan scraper Anda mengikuti pengalihan ini untuk mengambil konten yang benar.
- kesalahan klien 4xx: Anda mengalami kesalahan - permintaan tidak valid atau Anda tidak memiliki izin yang benar.
- kesalahan server 5xx: Server mengalami masalah saat memproses permintaan Anda. Ini biasanya merupakan masalah sementara.
Sekarang mari kita jelajahi kesalahan paling umum yang mungkin Anda temui saat melakukan scraping dan, yang lebih penting, cara memperbaikinya.
Kesalahan sisi klien (4xx)
Kesalahan ini biasanya terjadi ketika masalahnya ada pada permintaan yang Anda kirimkan. Berikut arti setiap kesalahan dan cara memperbaikinya:
401 Tidak Sah
Server menolak permintaan Anda karena kredensial hilang atau tidak valid. Bisa jadi:
- Detail login salah
- Sesi atau token autentikasi yang kedaluwarsa
- Pembatasan geografis yang membatasi akses
Larutan:
- Periksa kembali kredensial Anda dan perbarui token yang kedaluwarsa
- Siapkan sistem untuk memperbarui token secara otomatis
-
Lewati pembatasan geografis menggunakan proxy atau VPN
403 Dilarang
Server memahami permintaan Anda tetapi menolak untuk memenuhinya. Ini biasanya terjadi ketika:
- IP Anda telah diblokir
- Anda mengirim terlalu banyak permintaan terlalu cepat
- Agen pengguna Anda terlihat mencurigakan seperti bot pengikis
Larutan:
404 tidak ditemukan
Halaman yang Anda coba akses tidak ada. Hal ini sering kali disebabkan oleh:
- Ada kesalahan ketik pada URL
- Halaman telah dipindahkan atau dihapus
Larutan:
- Periksa kembali URL apakah ada kesalahan
-
Gunakan alat seperti peta situs atau mesin pencari untuk menemukan lokasi baru halaman tersebut
429 Terlalu banyak permintaan
Anda telah mengirimkan terlalu banyak permintaan dalam waktu singkat dan server membatasi kecepatan Anda.
Larutan:
Kesalahan sisi server (5xx)
Kesalahan sisi server sering kali menunjukkan masalah sementara pada server itu sendiri, seperti masalah kelebihan beban atau pemeliharaan. Berikut cara mengatasinya:
500 Internal Server Error
Server mengalami masalah tak terduga saat memproses permintaan Anda. Hal ini mungkin disebabkan oleh hal-hal berikut:
- Server kelebihan beban
- Kesalahan konfigurasi atau kesalahan perangkat lunak pada server
Larutan:
- Coba lagi permintaan tersebut setelah penundaan singkat - sebagian besar 500 kesalahan bersifat sementara
-
Terapkan satu kemunduran eksponensial Strategi di mana setiap percobaan ulang menunggu sedikit lebih lama untuk menghindari kelebihan beban pada server
502 Gerbang Buruk & Batas Waktu Gerbang 504
Kesalahan ini menunjukkan masalah komunikasi antar server. Kesalahan 502 berarti satu server menerima respons yang tidak valid dari server lain, sedangkan 504 berarti server upstream membutuhkan waktu terlalu lama untuk merespons.
Larutan:
-
Periksa pengaturan proxy Anda - proxy yang tidak dikonfigurasi dengan benar terkadang dapat menyebabkan kesalahan ini
-
Ulangi permintaan tersebut dengan jeda yang lebih lama di antara upaya - dalam banyak kasus, masalahnya teratasi dengan sendirinya
503 Layanan tidak tersedia
Server untuk sementara kelebihan beban atau tidak tersedia karena pemeliharaan.
Larutan:
-
Jadwalkan tugas pengikisan Anda di luar jam sibuk untuk menghindari waktu lalu lintas yang padat
-
Atur percobaan ulang otomatis untuk terus mengirimkan permintaan hingga server kembali online
Penanganan kesalahan dasar yang diterapkan
Saat menyalin situs web, penting untuk menangani berbagai kesalahan HTTP dengan benar. Cuplikan Python berikut menunjukkan penggunaan
requests
Perpustakaan untuk membuat permintaan HTTP sambil menangkap dan menangani berbagai jenis kesalahan. Pendekatan penanganan kesalahan dasar ini memungkinkan scraper Anda mencatat masalah dan tetap berjalan bahkan ketika masalah muncul:
import requests
from requests.exceptions import RequestException
def make_request(url):
try:
response = requests.get(url)
response.raise_for_status() # Raise HTTPError for bad responses (4xx, 5xx)
return response.text
except requests.HTTPError as http_err:
print(f'HTTP error occurred: {http_err}') # Handle HTTP-specific errors
except RequestException as err:
print(f'Other error occurred: {err}') # Handle other potential errors
return None
url = 'https://example.com'
content = make_request(url)
if content:
print('Request successful!')
else:
print('Failed to retrieve content')
Anda dapat dengan mudah mengintegrasikan fitur ini ke dalam skrip scraping untuk menambah ketahanan ekstra pada permintaan web Anda.
Bagaimana ScraperAPI dapat menyederhanakan web scraping
ScraperAPI membantu memecahkan banyak tantangan web scraping ini secara otomatis. Begini cara kerjanya:
- Rotasi IP otomatis: ScraperAPI merotasi IP pada setiap permintaan untuk menghindari larangan IP atau batas kecepatan.
- Manajemen agen pengguna: Secara otomatis memilih header yang benar dan menghasilkan cookie untuk meniru pengguna sebenarnya yang mengunjungi halaman target.
- Penanganan kesalahan dan percobaan ulang: ScraperAPI mencoba ulang permintaan yang gagal dengan backoff eksponensial bawaan, sehingga menyelamatkan Anda dari manajemen kesalahan manual.
- Proksi geolokasi: Beralih dengan mudah antar proxy dari lokasi geografis yang berbeda untuk melewati batasan spesifik wilayah.
- Minta pembatasan: Kontrol laju permintaan Anda untuk menghindari batas laju.
Dengan ScraperAPI yang melakukan tugas berat, Anda dapat fokus mengekstrak data yang Anda perlukan tanpa terjebak oleh kesalahan pengikisan yang umum. Pertama, buat akun ScraperAPI gratis dan kirimkan permintaan Anda melalui titik akhir:
import requests
payload = {
'api_key': 'YOUR_API_KEY',
'url': 'https://books.toscrape.com/',
'country_code': 'us'
}
response = requests.get('https://api.scraperapi.com', params=payload)
print(response.status_code)
Temukan semua solusi kami untuk kasus penggunaan yang lebih spesifik.
Kode kesalahan berbasis platform
Meskipun kode status HTTP memberi Anda gambaran dasar tentang apa yang salah dengan permintaan Anda, platform seperti Amazon, Etsy, dan situs e-commerce lainnya sering kali mengeluarkan pesan kesalahan yang jelas atau menggunakan mekanisme anti-scraping canggih yang melampaui respons standar. Agar berhasil menelusuri situs-situs ini, Anda perlu memahami kesalahan yang Anda temui dan cara menyesuaikan pendekatan Anda untuk setiap platform.
Kesalahan pengikisan Amazon
Amazon terkenal dengan teknik anti-scrapingnya yang agresif dan alih-alih memberi Anda kode kesalahan yang jelas, Amazon sering kali merespons dengan pesan yang tidak jelas seperti:
“Maaf, ada yang tidak beres”
Meskipun kesalahan ini bukan merupakan kode status HTTP, kesalahan ini menunjukkan bahwa tindakan anti-scraping Amazon telah dipicu. Hal ini biasanya disebabkan oleh pola permintaan yang agresif, pembatasan IP, atau sistem deteksi bot. Inilah yang biasanya mengarah pada hal ini dan bagaimana Anda dapat mengatasi rintangan tersebut:
Alasan Umum untuk kesalahan “Ada yang tidak beres” di Amazon.
-
Blok IP atau batas kecepatan:
-
Sama seperti kesalahan pembatasan kecepatan HTTP tradisional, Amazon memantau dengan cermat frekuensi permintaan. Terlalu banyak permintaan dari IP yang sama dalam waktu singkat akan mengakibatkan IP Anda diblokir atau dibatasi sementara.
-
-
Mekanisme deteksi bot:
-
Amazon menggunakan metode canggih untuk mendeteksi bot. Permintaan yang mengulang header atau string agen pengguna atau datang terlalu cepat kemungkinan besar akan ditandai sebagai otomatis dan mengakibatkan kesalahan ini.
-
-
Masalah sesi atau cookie:
-
Saat melakukan scraping di belakang halaman login, sesi yang tidak valid atau kedaluwarsa juga dapat menyebabkan kesalahan ini. Amazon mengharapkan kredensial dan cookie sesi yang valid untuk mempertahankan akses. Jika Anda tidak memperbaruinya, Anda bisa terkunci.
-
-
Rendering JavaScript:
-
Halaman Amazon sangat bergantung pada JavaScript untuk memuat detail produk, ulasan, dan data penting lainnya. Jika scraper Anda tidak merender JavaScript, Anda mungkin menerima kesalahan ini saat mencoba mengakses konten dinamis.
-
Bagaimana cara mengatasi kesalahan Amazon “Maaf, ada yang tidak beres”.
Inilah cara Anda dapat memperbaiki kesalahan “Terjadi kesalahan” secara efektif:
- Ubah IP secara teratur:
Seperti disebutkan sebelumnya, rotasi IP adalah kunci untuk menghindari penyumbatan. Hal ini menjadi lebih penting bagi Amazon karena pemantauan ketat terhadap aktivitas IP. Gunakan kumpulan proxy untuk sering mengubah IP Anda dan pilih proxy pribadi atau seluler untuk hasil yang lebih baik.
Mengapa: Mengubah IP secara terus-menerus membantu menyebarkan permintaan Anda dan mencegah satu IP membuat terlalu banyak permintaan dalam waktu singkat - salah satu pemicu utama kesalahan ini.
- Batasi dan acak permintaan Anda:
Seperti yang telah kita lihat pada batas kecepatan HTTP, memperlambat permintaan dapat membantu Anda tetap tidak terdeteksi. Untuk Amazon, tambahkan penundaan acak antar permintaan, mulai dari beberapa detik hingga interval yang lebih lama, untuk meniru penelusuran alami.
Mengapa: Mengirim permintaan terlalu cepat merupakan tanda jelas adanya aktivitas scraping. Mengacak waktu permintaan Anda akan membuat scraper Anda tampak lebih manusiawi, sehingga mengurangi kemungkinan pemblokiran.
- Mensimulasikan perilaku manusia:
Berputar String agen pengguna dan mengubah header, seperti yang dibahas sebelumnya, sangat penting di sini. Di Amazon, sangat penting untuk menyimulasikan pola penjelajahan manusia dengan mengubah cookie dan data sesi pada setiap permintaan.
Mengapa: Sistem deteksi Amazon mencari pola header dan agen pengguna yang berulang. Anda dapat menghindari pemicu kesalahan ini dengan mengacak elemen-elemen ini dan memastikan manajemen sesi yang valid.
- Gunakan browser tanpa kepala untuk rendering JavaScript:
Jika Anda memindai konten dinamis di Amazon, beralihlah ke browser tanpa kepala seperti
Dalang atau selenium adalah langkah yang cerdas. Alat-alat ini dapat merender JavaScript, memungkinkan scraper Anda mengakses elemen dinamis yang tidak dimuat dengan permintaan HTTP standar.
Strategi hebat lainnya adalah menggunakan ScraperAPI untuk rendering JS. Ini memungkinkan Anda menelusuri halaman dinamis apa pun tanpa kerumitan tambahan menggunakan browser tanpa kepala.
Mengapa: Amazon sangat bergantung pada JavaScript untuk konten inti seperti data produk dan ulasan pelanggan. Jika halaman tidak ditampilkan dengan benar, scraper Anda mungkin kehilangan informasi penting dan menimbulkan kesalahan.
Seperti yang telah kita diskusikan mengenai kesalahan pembatasan kecepatan, penting untuk menghindari pola permintaan yang berulang. Amazon melacak perilaku ini dengan cermat, jadi:
- Acak waktu interaksi: Dengan menambahkan variabilitas pada interaksi Anda, mis. Seperti penundaan acak antara pemuatan halaman atau tindakan, permintaan Anda akan terlihat lebih alami.
- Menggaruk di luar jam sibuk: Amazon mungkin memperketat pembatasan selama periode lalu lintas tinggi. Menjalankan scraper Anda di luar jam sibuk dapat mengurangi kemungkinan terjadinya kesalahan ini.
Sederhanakan pengikisan Amazon dengan ScraperAPI
Mengatasi tindakan anti-scraping Amazon yang canggih bisa jadi rumit, tetapi alat seperti Amazon Endpoint dari ScraperAPI memberikan solusi yang mudah. Dengan mengotomatiskan rotasi IP, pemrosesan konten dinamis, dan manajemen penilaian permintaan, ScraperAPI melakukan pekerjaan berat sehingga Anda dapat fokus pada data.
Dengan titik akhir khusus Amazon, Anda tidak perlu menerapkan solusi secara manual untuk pemblokiran IP, pembatasan laju, atau konten yang dirender JavaScript. Sebaliknya, ia memberikan solusi yang efisien dan siap pakai yang disesuaikan untuk menggunakan Amazon dalam skala besar tanpa perlu melakukan penyesuaian terus-menerus.
Untuk informasi lebih lanjut tentang cara mengikis data produk Amazon secara efisien, lihat panduan ini untuk mengikis Amazon ASIN dalam skala besar. Ini memandu Anda melalui strategi khusus untuk bekerja dengan data Amazon dan menunjukkan bagaimana ScraperAPI dapat membantu Anda mengumpulkan informasi produk dengan mudah.
Kesalahan pengikisan Etsy
Seperti Amazon, Etsy menggunakan mekanisme anti-scraping yang agresif untuk melindungi datanya. Kesalahan umum yang dihadapi para scraper di Etsy adalah:
Kesalahan Etsy 429 – Terlalu banyak permintaan
Kesalahan ini menunjukkan bahwa Anda melampaui batas kecepatan permintaan Etsy dalam waktu singkat. Etsy menggunakan metode ini untuk mencegah bot membebani server mereka dengan permintaan cepat. Ini adalah tanda yang jelas bahwa aktivitas scraping Anda telah terdeteksi dan diblokir sementara.
Alasan Umum Kesalahan Etsy 429
-
Frekuensi permintaan yang berlebihan:
-
Etsy memberlakukan batasan tarif pada jumlah permintaan yang dapat dibuat dari IP yang sama dalam jangka waktu tertentu. Jika Anda melebihi batas ini dan menerima kesalahan 429, Anda akan diblokir sementara.
-
-
Kurangnya rotasi IP:
-
Etsy dapat dengan mudah melacak jumlah permintaan dari satu sumber tanpa perlu merotasi alamat IP. Mengirim beberapa permintaan dari IP yang sama meningkatkan kemungkinan sistem pembatasan tarif Etsy akan diterapkan.
-
-
Pola seperti bot:
-
Etsy memantau pola penelusuran dan dapat mendeteksi bot berdasarkan interval tetap antara permintaan atau string agen pengguna yang identik. Perilaku yang berulang atau dapat diprediksi kemungkinan besar menyebabkan penyumbatan.
-
Cara mengatasi error 429 Etsy
Berikut cara menghindari batas kecepatan Etsy dan menghindari kesalahan 429:
- Batasi dan acak permintaan Anda:
Seperti halnya masalah pembatasan tarif Amazon, memperlambat dan mengacak permintaan Anda dapat membantu mencegah deteksi. Perkenalkan penundaan yang berbeda antar permintaan untuk memastikan permintaan tersebut meniru perilaku penjelajahan alami.
Mengapa: Mengirim terlalu banyak permintaan dalam waktu singkat adalah penyebab utama kesalahan 429. Dengan mengacak interval dan mengurangi frekuensi permintaan, Anda dapat mencegah Etsy memblokir scraper Anda.
- Ubah IP secara teratur:
Gunakan kumpulan proxy untuk sering mengubah alamat IP Anda, seperti yang telah kita bahas di bagian sebelumnya. Untuk Etsy, merotasi alamat IP pribadi atau seluler membuat permintaan Anda lebih mirip dengan pengguna biasa.
Mengapa: Etsy dapat melacak jumlah permintaan yang datang dari setiap IP. Dengan merotasi IP, Anda mendistribusikan lalu lintas ke beberapa alamat, mencegah satu IP melebihi batas kecepatan.
- Simulasikan perilaku mirip manusia:
Berbelok String agen pengguna dan judul, seperti yang kami sebutkan sebelumnya, untuk menghindari pola berulang. Selain itu, variasikan interaksi Anda dengan situs web, misalnya dengan melakukan simulasi mengeklik, menggulir, atau menjeda seperti yang dilakukan pengguna manusia.
Mengapa: Etsy mendeteksi otomatisasi dengan melacak perilaku berulang. Memutar header, menyimulasikan aktivitas pengguna alami, dan kustomisasi cookie atau sesi dapat membuat pengikisan Anda lebih rahasia.
- Memantau dan mematuhi batasan tarif:
Lihat dokumentasi API Etsy untuk memahami batasan tarif tertentu. Tetap dalam batas ini bahkan saat menyalin HTML secara langsung untuk menghindari kesalahan 429.
Mengapa: Batasan tarif dibangun ke dalam sistem Etsy untuk melindungi platform dari kelebihan beban. Dengan mematuhi ambang batas ini, Anda mengurangi risiko pemblokiran.
Etsy mungkin menerapkan batasan tarif yang lebih ketat selama jam sibuk. Untuk menghindari pemblokiran, sebaiknya lakukan aktivitas scraping di luar jam sibuk, saat pertahanan Etsy mungkin lebih rileks. Dengan mengacak waktu interaksi dan menghindari pola permintaan yang dapat diprediksi, Anda tetap tidak terdeteksi.
Jadikan pengikisan Etsy lebih mudah dengan ScraperAPI
Berurusan dengan pembatasan tarif Etsy bisa jadi sulit, namun ScraperAPI membantu menyederhanakan prosesnya. Rotasi IP otomatis dan manajemen permintaan mempermudah menghindari kesalahan 429 saat menskalakan pengumpulan data Anda.
Kesalahan pengikisan Walmart
Kesalahan Walmart 429 – Terlalu banyak permintaan
Kesalahan 429 terjadi ketika Walmart mendeteksi bahwa Anda mengirimkan terlalu banyak permintaan dalam waktu singkat. Ini adalah mekanisme pertahanan pembatas kecepatan yang dirancang untuk mencegah bot membanjiri server. Ini adalah sinyal bahwa frekuensi permintaan scraper Anda telah ditandai dan Walmart untuk sementara memblokir akses lebih lanjut.
Alasan Umum Kesalahan 429 Walmart
-
Melebihi batas tarif:
-
Walmart menerapkan batasan tarif yang ketat, artinya terlalu banyak permintaan yang dikirim dari IP yang sama dalam waktu singkat akan memicu kesalahan 429.
-
-
Kurangnya rotasi IP:
-
Jika Anda mengikis tanpa merotasi alamat IP, Walmart dapat dengan mudah melacak volume permintaan satu IP dan memblokirnya setelah batas kecepatan terlampaui.
-
-
Pola permintaan seperti bot:
-
Mengirim permintaan pada interval yang dapat diprediksi atau menggunakan string agen pengguna statis dapat menandai scraper Anda sebagai bot. Alat anti-goresan Walmart disetel untuk mendeteksi dan memblokir otomatisasi yang tidak meniru perilaku manusia.
-
Berikut cara mengatasi kesalahan 429 Walmart
Berikut cara menghindari batas tarif Walmart dan memperbaiki kesalahan 429:
- Batasi dan acak permintaan Anda:
Masukkan penundaan acak di antara permintaan Anda, yang meniru waktu interaksi pengguna sebenarnya. Variasikan penundaan antara beberapa detik dan interval yang lebih lama untuk menghindari pengiriman permintaan terlalu cepat.
Mengapa: Sistem pembatasan tarif Walmart mendeteksi aktivitas berlebihan dari satu sumber. Dengan mengatur waktu permintaan Anda secara acak, Anda dapat menghindari hal ini dan membuat scraper Anda tampak kurang otomatis.
- Ubah IP secara teratur:
Gunakan kumpulan proxy untuk sering mengubah alamat IP Anda dan sebarkan permintaan Anda ke beberapa IP. Bagi Walmart, merotasi proxy perumahan atau seluler sangat efektif dalam mencegah penguncian tarif.
Mengapa: Walmart melacak jumlah permintaan yang datang dari setiap IP. Dengan merotasi IP, Anda menyebarkan beban ke berbagai alamat, mengurangi kemungkinan mencapai batas kecepatan dan memicu kesalahan 429.
- Simulasikan perilaku mirip manusia:
Seperti platform lainnya, memutar string dan header agen pengguna dapat membantu mensimulasikan aktivitas yang lebih mirip manusia. Selain itu, padukan perilaku seperti menggulir, mengeklik, atau berinteraksi dengan berbagai bagian laman untuk membuat pengikisan lebih alami.
Mengapa: Walmart mencari pola mirip bot, seperti agen pengguna yang identik atau header statis. Dengan menyimulasikan perilaku penjelajahan nyata, Anda mengurangi kemungkinan ditandai karena otomatisasi.
- Pantau batas harga Walmart:
Pantau jumlah permintaan yang Anda kirim per menit/jam dan pastikan Anda tetap berada dalam batas tarif Walmart. Beberapa situs web memberikan panduan mengenai hal ini, namun meskipun tanpa angka pasti, mengurangi frekuensi permintaan dapat membantu.
Mengapa: Dengan secara proaktif mengelola tarif permintaan dan memantau lalu lintas, Anda dapat mencegah terlampauinya batas tarif Walmart, yang akan membantu mencegah terjadinya kesalahan 429.
Sederhanakan pengikisan Walmart dengan ScraperAPI
Mengelola pertahanan pembatasan tarif Walmart dapat menjadi sebuah tantangan, namun titik akhir khusus Walmart dari ScraperAPI memberikan solusi yang disesuaikan. Dirancang untuk tindakan anti-scraping Walmart yang unik, Walmart Scraper dari ScraperAPI memungkinkan Anda mengumpulkan data produk dalam skala besar tanpa mengkhawatirkan pemblokiran terus-menerus atau batasan permintaan. Ini menangani proses backend yang kompleks sehingga Anda dapat fokus mengumpulkan data yang Anda butuhkan.
Tidak tahu harus mulai dari mana? Lihat panduan kami untuk mengambil detail produk Walmart dengan Python.
Kesalahan pengikisan YouTube
Kesalahan YouTube 429 – Terlalu banyak permintaan
Kesalahan 429 menunjukkan bahwa server YouTube mendeteksi permintaan berlebihan dari IP Anda dalam waktu singkat. Kesalahan ini biasanya berarti Anda telah mencapai batas kecepatan YouTube dan scraper Anda untuk sementara diblokir agar tidak dapat mengirimkan permintaan lebih lanjut.
Alasan Umum Kesalahan YouTube 429
-
Frekuensi permintaan yang berlebihan:
-
Mengirim terlalu banyak permintaan dalam waktu singkat, baik ke situs video atau titik akhir API, dengan cepat menyebabkan kesalahan ini. YouTube memantau dengan cermat lonjakan lalu lintas, terutama dari IP individual.
-
-
Kurangnya rotasi IP:
-
Permintaan berulang dari satu alamat IP dapat dengan mudah mengakibatkan pembatasan kecepatan. YouTube melacak jumlah permintaan yang datang dari setiap IP, terutama jika permintaan tersebut muncul secara otomatis.
-
-
Pola otomatis:
-
Penggunaan pola permintaan yang dapat diprediksi atau berulang – seperti string agen pengguna yang identik atau interval tetap – dapat mengungkapkan bahwa lalu lintas Anda dihasilkan oleh bot, sehingga menyebabkan penyumbatan.
-
Cara mengatasi YouTube 429 error
Untuk menghindari atau memperbaiki error 429 di YouTube, sebaiknya pertimbangkan strategi berikut:
- Batasi permintaan Anda:
Daripada membombardir YouTube dengan permintaan cepat, perlambat proses Anda dengan memberikan penundaan acak di antara permintaan. Ini akan membantu Anda tetap berada dalam batas kecepatan YouTube.
Mengapa: Saat Anda membatasi permintaan, permintaan tersebut tersebar dari waktu ke waktu sehingga lebih terlihat seperti aktivitas pengguna alami dibandingkan lalu lintas yang didorong oleh bot.
- Ubah IP sesering mungkin:
Gunakan jaringan proxy untuk mengubah alamat IP secara teratur. Untuk YouTube, merotasi IP pribadi atau seluler berfungsi dengan baik karena sangat mirip dengan lalu lintas pengguna sebenarnya.
Mengapa: Memutar IP memungkinkan Anda mendistribusikan beban ke beberapa alamat, menghindari mencapai batas permintaan satu IP.
- Gunakan alternatif API:
Daripada meng-crawl halaman web secara langsung, pertimbangkan untuk menggunakan API resmi YouTube, yang menyediakan akses terstruktur ke metadata video, komentar, dan lainnya. Jika Anda mengalami batas kecepatan API, sesuaikan volume permintaan Anda dan pantau kuota harian YouTube.
Mengapa: API resmi menawarkan efisiensi yang lebih besar untuk tugas-tugas tertentu seperti mengumpulkan metadata video, namun memiliki batas kecepatannya sendiri. Mengelola permintaan Anda dengan hati-hati dapat mencegah terjadinya kesalahan 429.
YouTube juga sensitif terhadap lalu lintas yang menggunakan banyak bandwidth. Saat menyalin konten video (bukan metadata), pastikan Anda tidak meminta terlalu banyak data sekaligus.
Misalnya, mengambil thumbnail dengan resolusi lebih rendah daripada versi resolusi penuh dapat mengurangi penggunaan bandwidth secara signifikan, sehingga mengurangi kemungkinan scraper Anda memicu batas kecepatan.
Pengikisan YouTube yang disederhanakan dengan ScraperAPI
Tindakan pembatasan kecepatan YouTube dapat membuat proses scraping menjadi menantang, namun ScraperAPI menawarkan cara yang efisien untuk menavigasinya. ScraperAPI membantu Anda menghindari kesalahan 429 saat meningkatkan upaya pengikisan dengan mengotomatiskan rotasi IP, mengelola header, dan mengoptimalkan waktu permintaan.
Untuk informasi lebih lanjut, lihat panduan kami untuk menghapus YouTube secara efektif dengan ScraperAPI. Panduan ini mencakup strategi dan tips khusus untuk mengumpulkan data YouTube secara efisien.
Penerapan pengobatan yang membatasi angka
Berikut adalah contoh cara menangani pembatasan tarif menggunakan backoff eksponensial:
import time
import requests
from requests.exceptions import RequestException
def rate_limited_request(url, max_retries=3, initial_delay=1):
delay = initial_delay
for attempt in range(max_retries):
try:
response = requests.get(url)
if response.status_code == 429: # Handling rate limit (HTTP 429)
print(f"Rate limited. Attempt {attempt + 1}/{max_retries}. Waiting {delay} seconds...")
time.sleep(delay) # Wait before retrying
delay *= 2 # Exponential backoff: double the delay for each retry
else:
response.raise_for_status() # Raise HTTPError for other 4xx or 5xx
return response.text
except RequestException as err:
print(f"Error occurred: {err}") # Catch all request-related errors
if attempt == max_retries - 1:
raise # Raise final error if max retries are reached
raise Exception("Max retries reached")
# Usage example
url = 'https://api.example.com/data'
try:
content = rate_limited_request(url)
print('Request successful!')
except Exception as e:
print(f'Failed to retrieve content: {e}')
Itu rate_limited_request
Fitur ini mengimplementasikan beberapa fitur utama untuk menangani pembatasan kecepatan:
- Ia mencoba permintaan tersebut beberapa kali (default 3) sebelum menyerah
- Ketika kode status 429 diterima, ia menunggu sebelum mencoba lagi
- Ini menggunakan backoff eksponensial, yang menggandakan waktu tunggu pada setiap percobaan ulang
-
Ini menangani pengecualian permintaan lainnya sehingga Anda dapat menerapkan logika lain jika perlu
Pendekatan ini memungkinkan scraper Anda menyesuaikan secara otomatis dengan batas kecepatan, mengurangi kemungkinan terhenti total dan meningkatkan keandalannya secara keseluruhan. Anda dapat menyesuaikannya max_retries
Dan
initial_delay
Parameter untuk menyempurnakan perilaku situs web atau API tertentu.
Namun, cara paling efisien untuk menangani batasan kecepatan di situs web terbesar adalah dengan menggunakan ScraperAPI. Sistem bypass canggihnya menggunakan pembelajaran mesin dan analisis statistik bertahun-tahun untuk mendistribusikan permintaan Anda ke jutaan proxy. Hal ini mencegah terpicunya batas kapasitas sekaligus memastikan bahwa laman landas tidak dipenuhi dengan permintaan Anda.
Kode Kesalahan Pengikisan Pemblokir Bot Tingkat Lanjut
Seperti yang telah kita lihat terkait batasan kecepatan dan kode kesalahan umum, platform menjadi semakin canggih dalam mendeteksi dan memblokir upaya pengikisan. Namun, beberapa situs web melangkah lebih jauh dan menggunakan mekanisme perlindungan bot tingkat lanjut yang membuat pengikisan menjadi lebih sulit. Solusi seperti Fastly, Akamai, dan DataDome telah menetapkan standar tinggi dalam deteksi bot dan menimbulkan tantangan kompleks bagi para scraper. Untuk yang sukses Pengikisan web Penting untuk memahami cara kerja sistem ini, mengidentifikasi hambatan yang ada, dan mencari cara untuk mengatasinya.
Mari kita lihat kode kesalahan spesifik dan tantangan yang ditimbulkan oleh pemblokir bot tingkat lanjut ini - dan bagaimana Anda dapat mengatasinya.
Cepat
Cepat adalah jaringan pengiriman konten (CDN) yang mengintegrasikan solusi manajemen bot tingkat lanjut untuk mendeteksi dan memblokir lalu lintas non-manusia. Meskipun pada dasarnya dirancang untuk mengirimkan konten dengan cepat dan aman, kemampuan deteksi botnya dapat menimbulkan hambatan yang signifikan bagi web scraper.
Kode dan Pesan Kesalahan Pengikisan Cepat yang Umum:
- 403 Dilarang: Kesalahan ini menunjukkan bahwa sistem deteksi bot Fastly telah menandai lalu lintas Anda sebagai mencurigakan.
- 503 Layanan tidak tersedia: Jika Fastly membebani atau memblokir alamat IP Anda, Anda mungkin mengalami kesalahan 503, yang mencegah akses ke halaman target.
Cara mengidentifikasi blok Fastly:
-
Tajuk respons: Carilah header khusus Fastly seperti
x-served-by
ataux-cache
. Header ini dapat menunjukkan apakah Fastly melayani situs web dan apakah kesalahan disebabkan oleh perlindungan bot Fastly. - Daftar hitam IP secara tiba-tiba: Fastly sering kali memblokir lalu lintas karena permintaan berulang dari IP yang sama. Blokir cepat setelah aktivitas penambangan dapat menjadi tanda bahwa pertahanan Fastly sedang dimainkan.
Teknik Mengikis Situs Web yang Dilindungi dengan Cepat:
Memutar IP dan menyesuaikan waktu permintaan adalah strategi utama untuk melewati perlindungan Fastly. Ini memantau dengan cermat pola khas aktivitas pengikisan, sehingga memvariasikan lalu lintas Anda dapat membantu menghindari deteksi.
Untuk teknik lebih mendalam dengan API pengikis dan Python, termasuk cuplikan kode untuk menggores situs web yang dilindungi Fastly, lihat panduan ini: Cara mengikis situs web yang dilindungi Fastly dengan Python.
Akamai
Akamai adalah salah satu CDN dan penyedia keamanan terbesar di Internet. Teknologi deteksi bot canggih dan menggabungkan pembelajaran mesin dan analisis perilaku untuk menyaring bot. Hal ini menjadikannya penghalang yang kuat bagi pengikis.
Kesalahan pengikisan Akamai yang umum:
- 403 Dilarang: Ketika Akamai mendeteksi aktivitas mirip bot, ia mengembalikan kesalahan HTTP standar ini dan memblokir akses lebih lanjut.
- Tantangan captcha: Akamai sering menggunakan tantangan CAPTCHA untuk memverifikasi bahwa lalu lintas berasal dari pengguna manusia, sehingga menyulitkan scraper untuk melewatinya tanpa kemampuan penyelesaian CAPTCHA.
Cara mendeteksi perlindungan bot Akamai:
- Tantangan Javascript: Akamai sering kali mengharuskan browser untuk menjalankan tantangan JavaScript, yang dapat mencegah pengikis sederhana mengakses konten.
- Pola permintaan: Akamai memantau pola penjelajahan, sehingga permintaan yang cepat dan berulang jelas merupakan pemicu pemblokiran.
Strategi untuk Melewati Akamai:
Sistem Akamai sangat sensitif terhadap pola permintaan yang mencurigakan, jadi Anda perlu melakukan simulasi aktivitas yang lebih mirip manusia. Ini termasuk memperlambat permintaan, merotasi IP, dan menggunakan a HBrowser yang mudah digunakan seperti Puppeteer atau Selenium untuk melewati tantangan CAPTCHA dan JavaScript.
Lihat artikel ini “Cara mengikis situs web yang dilindungi Akamai dengan Python” untuk mengetahui lebih dalam tentang cara mengikis situs web yang dilindungi Akamai dan bagaimana ScraperAPI dapat membantu mengotomatiskan prosesnya.
DataDome
DataDome menyediakan layanan deteksi dan perlindungan bot waktu nyata untuk banyak situs web dengan lalu lintas tinggi. Sistemnya menggunakan AI dan analisis perilaku untuk mengidentifikasi dan memblokir upaya pengikisan, menjadikannya salah satu perlindungan yang lebih sulit untuk dielakkan.
Tantangan dan Kesalahan Umum Pengikisan Web DataDome:
- 403 Dilarang: Seperti pemblokir bot lainnya, DataDome sering kali merespons dengan kesalahan 403 saat mendeteksi lalu lintas yang mencurigakan.
- Captcha dan ReCaptcha: Salah satu metode pilihan DataDome untuk memblokir bot adalah dengan memberikan tantangan CAPTCHA untuk memastikan lalu lintas bersifat manusia.
- Blok waktu nyata: DataDome bekerja secara real-time, artinya Anda dapat ditandai dan diblokir dalam hitungan detik jika permintaan Anda memicu algoritma pendeteksian.
Untuk mendeteksi blok DataDome:
- Banjir CAPTCHA: Jika Anda menemukan CAPTCHA setelah setiap permintaan atau terus-menerus melihat ReCaptcha, DataDome mungkin adalah pemblokir bot yang sedang bekerja.
-
Header deteksi bot: Cari header khusus DataDome seperti
X-DataDome-RequestID
dalam respons server, yang mungkin mengindikasikan pemblokiran.
Metode Bypass DataDome:
Melewati DataDome memerlukan pendekatan multi-cabang. Strategi utamanya mencakup merotasi IP, menggunakan proxy perumahan, dan mengintegrasikan layanan penyelesaian CAPTCHA. Selain itu, browser tanpa kepala membantu menghindari tantangan JavaScript yang tidak dapat ditangani oleh scraper sederhana.
Informasi lebih lanjut dapat ditemukan di sini API pengikis dapat membantu Anda mengikis situs web yang dilindungi DataDome menggunakan Python, termasuk contoh kode. Lihat panduan ini: Cara menghapus situs web yang dilindungi DataDome menggunakan Python.
Implementasi rotasi agen pengguna
Berikut cuplikan Python yang menunjukkan cara mengimplementasikan rotasi agen pengguna.
Teknik ini melibatkan perubahan header Agen-Pengguna pada setiap permintaan untuk meniru browser dan perangkat yang berbeda.
import random
import requests
user_agents = (
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15',
# Add more user agents...
)
def make_request_with_random_ua(url):
headers = {'User-Agent': random.choice(user_agents)}
return requests.get(url, headers=headers)
for _ in range(5):
response = make_request_with_random_ua(url)
print(f"Status Code: {response.status_code}, User-Agent: {response.request.headers('User-Agent')}")
Dengan merotasi agen pengguna, Anda dapat mengurangi kemungkinan terdeteksi sebagai bot oleh sistem anti-scraping yang canggih. Namun, perlu diingat bahwa sistem yang canggih mungkin menggunakan faktor lain untuk mendeteksi bot. Oleh karena itu, teknik ini harus digunakan bersama dengan strategi lain seperti rotasi IP dan pengacakan waktu permintaan untuk mencapai hasil yang optimal.