Beranda BlogPengikisan web Agen pengguna terbaru untuk web scraping

Agen pengguna terbaru untuk web scraping

oleh Kadek

Saat mengumpulkan informasi dalam jumlah besar, masalah utamanya adalah risiko penyumbatan dan cara menghindarinya. Kami telah membahas bahwa Anda dapat menggunakan layanan penyelesaian captcha, proxy, atau bahkan API web scraping yang akan mengatasi masalah Anda.

Misalkan Anda mengumpulkan data melalui permintaan HTTP sederhana dan ingin membuat scraper Anda sepenuhnya. Dalam hal ini, Anda tidak dapat melakukannya tanpa penggunaan header pada umumnya dan agen pengguna pada khususnya.

Pada artikel ini kami akan menjelaskan apa itu agen pengguna, mengapa dibutuhkan, apa maksudnya, dan di mana mendapatkannya. Kami juga menyediakan contoh kode untuk mengatur dan merotasi agen pengguna dengan Python dan NodeJS.

Apa yang dimaksud dengan string agen pengguna?

Agen-pengguna adalah string yang dikirimkan browser web ke server ketika meminta halaman web. Ini berisi informasi tentang browser web, sistem operasi, dan perangkat.

Mengubah agen pengguna dan proxy secara teratur adalah strategi penting untuk menghindari penyumbatan web scraping. Dengan mengubah header Agen-Pengguna, Anda dapat meniru perangkat dan browser yang berbeda, sehingga lebih sulit mendeteksi dan memblokir permintaan pengikisan situs web otomatis.

Pentingnya Agen Pengguna dalam Web Scraping

Agen pengguna memainkan peran penting dalam web scraping dengan meningkatkan proses scraping dan mencegah deteksi dan pemblokiran. Bagian ini menjelaskan mengapa Anda harus menggunakan agen pengguna dalam skrip scraping Anda.

Hindari pemblokiran IP

Tidak semua situs web ramah bot. Banyak situs web telah menerapkan tindakan anti-bot untuk melindungi kontennya dan mencegah akses tidak sah. Oleh karena itu, menyiapkan dan mengubah agen pengguna Anda sangat penting untuk menghindari pemblokiran IP Anda dalam permintaan situs web otomatis. Meskipun tidak semua agen pengguna adalah manusia, ketidakhadiran mereka dalam permintaan menimbulkan tanda bahaya dan segera memanggil bot.

Misalkan skrip Anda mengambil data tanpa menggunakan browser tanpa kepala dan mengandalkan permintaan sederhana. Dalam hal ini, kecuali dinyatakan secara tegas, Anda tidak mengirimkan data spesifik apa pun ke situs, termasuk agen pengguna. Sebaliknya, browser sebenarnya terus mengirimkan agen pengguna ketika pengguna mengunjungi situs web.

Situs web mewaspadai bot dan secara aktif memblokirnya untuk mencegah aktivitas jahat. Tanpa agen pengguna, alamat IP Anda dapat ditandai dan diblokir, sehingga menghambat upaya pengumpulan data Anda.

Untuk menghindari pemblokiran, pastikan bot Anda menyertakan string agen pengguna dalam permintaannya. Langkah sederhana ini dapat membuat bot Anda terlihat lebih manusiawi dan menghindari deteksi situs web.

Meniru perangkat dan browser yang berbeda

Dengan memalsukan header agen pengguna, scraper dapat meniru perangkat dan browser yang berbeda, sehingga memudahkan untuk mengakses versi situs web lain dan konten yang dioptimalkan untuk perangkat tertentu.

Hal ini sangat penting terutama jika Anda ingin mengakses informasi yang hanya tersedia pada perangkat tertentu. Misalnya, hasil penelusuran Google dapat sangat bervariasi bergantung pada jenis perangkat yang digunakan untuk membuat kueri.

Sintaks agen pengguna

String agen pengguna adalah format khusus yang berisi informasi tentang browser, sistem operasi, dan parameter lainnya. Secara umum tampilannya seperti ini:

User-Agent: <product> / <product-version> <comment>

Di Sini, <product> adalah pengidentifikasi produk (nama atau nama kode), <product-version> adalah nomor versi produk dan <comment> adalah informasi tambahan, seperti: B. Detail sub-produk.

Untuk browser, sintaksnya diperluas sebagai berikut:

Mozilla/(version) ((system and browser information)) (platform) ((platform details)) (extensions)

Mari kita lihat lebih dekat setiap parameter dan artinya.

Memahami komponen agen pengguna

Sintaks umum string agen pengguna mencakup komponen berikut:

  1. Awalan dan versi: Mungkin terdapat awalan di awal string, yang biasanya menunjukkan jenis perangkat atau aplikasi dan versinya. Misalnya, “Mozilla/5.0” sering digunakan dalam string agen pengguna browser.
  2. Nama peramban: Informasi browser yang membuat permintaan mengikuti awalan. Ini mungkin termasuk nama dan versi browser. Contoh: “Chrome/121.0.6167.87”.
  3. Sistem Informasi: Setelah informasi browser, sistem operasi tempat permintaan dibuat ditentukan. Ini bisa berupa “Windows NT 10.0; Menang64; x64”.
  4. Detail platform: Ini mungkin termasuk mesin tata letak yang digunakan oleh browser untuk merender halaman web dan versinya, misalnya. Misalnya WebKit/537.36.
  5. Ekstensi: Agen pengguna dapat berisi parameter tambahan, seperti: B. Informasi bahasa (misalnya “en-GB”) atau resolusi layar.

Mari gunakan ini dan buat string agen pengguna yang menentukan sistem operasi Windows 10 dan browser Chrome versi versi 121.0.6167.87.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.87 Safari/537.36

Agen pengguna untuk perangkat lain dapat dibuat mengikuti pola serupa.

Format dan variasi umum

String agen pengguna sering kali mengikuti format standar, seperti yang ditunjukkan pada contoh di atas. Namun, beberapa string agen pengguna mungkin berisi parameter tambahan, seperti: B. Informasi tentang plug-in browser atau pengidentifikasi perangkat unik.

Untuk melengkapi contoh kita, mari pertimbangkan variasi agen pengguna yang berbeda untuk perangkat yang berbeda:

  1. Linux:
Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0
  1. macOS:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
  1. Browser seluler:
Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.210 Mobile Safari/537.36 EdgA/120.0.2210.126

Sekarang kita telah membahas sintaks agen pengguna, mari kita lihat daftar agen pengguna saat ini yang dapat Anda gunakan dalam proyek Anda.

Daftar agen pengguna terbaru untuk web scraping

Di bawah ini kami menyediakan tabel dengan daftar agen pengguna umum yang terus diperbarui untuk platform populer. Pencakar kami secara otomatis memperbarui daftar agen pengguna setiap hari, sehingga Anda dapat yakin bahwa Anda selalu menggunakan informasi terbaru.

Agen pengguna Windows:

Sistem operasi dan browser Agen pengguna
Chrome 121.0.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/121.0.0.0 Safari/537.36
Tepi 120.0.2210, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/120.0.2210.144
Tepi 44.18363.8131, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/121.0.0.0 Safari/537.36 Edge/44.18363.8131
Firefox 122.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/122.0
Firefox 115.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:115.0) Gecko/20100101 Firefox/115.0
Opera 106.0.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/106.0.0.0
Opera 106.0.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/106.0.0.0

Agen pengguna MacOS:

Sistem operasi dan browser Agen pengguna
Chrome 121.0.0, Mac OS X 10.15.7 Mozilla/5.0 (Macintosh; Intel Mac OS
Tepi 120.0.2210, Mac OS X 10.15.7 Mozilla/5.0 (Macintosh; Intel Mac OS
Firefox 122.0, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS X 14.3; rv:109.0) Gecko/20100101 Firefox/122.0
Firefox 115.0, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS X 14.3; rv:115.0) Gecko/20100101 Firefox/115.0
Safari 17.2, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS X 14_3) AppleWebKit/605.1.15 (KHTML, seperti Gecko) Versi/17.2 Safari/605.1.15
Opera 106.0.0, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS

Harap pertimbangkan versi browser saat memilih atau menyusun agen pengguna. Agen pengguna terbaik dan paling umum menggunakan Chrome versi terbaru karena Chrome diperbarui secara otomatis saat startup. Oleh karena itu, sebagian besar pengguna akan menggunakannya dan Anda dapat menutupi scraper Anda dengan lebih baik dengan menggunakan agen pengguna khusus dengan versi Chrome terbaru.

Cara mengatur agen pengguna

Konfigurasi agen pengguna bergantung pada konteks di mana Anda ingin menggunakannya. Biasanya ini adalah skrip Anda yang membuat permintaan ke berbagai situs web. Mari kita lihat cara menyiapkan agen pengguna dalam dua bahasa pemrograman populer.

Kami membuat permintaan ke situs web https://httpbin.org/headers, yang mengembalikan semua header, termasuk header User-Agent:

  1. ular piton. Kami akan menggunakan perpustakaan Permintaan untuk membuat permintaan:
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

response = requests.get('https://httpbin.org/headers', headers=headers)
print(response.text)

keluaran:

{
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "X-Amzn-Trace-Id": "Root=1-65c0adfb-7a198b2f3bf4dff157696ce2"
  }
}
  1. NodeJS. Kami akan menggunakan mengambil() untuk membuat permintaan:
fetch('https://httpbin.org/headers', {
    headers: {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
})

Reaksinya mirip dengan yang sebelumnya.

Jika Anda ingin mengubah agen pengguna karena alasan tertentu, bukan dalam skrip tetapi di browser Anda, Anda dapat mengatur agen pengguna menggunakan alat pengembang browser (DevTools) di bawah tab Jaringan atau Perangkat. Ini dapat berguna untuk menguji situs web atau aplikasi web. Selain itu, terdapat ekstensi browser khusus yang memudahkan peralihan agen pengguna.

Cara merotasi agen pengguna

Rotasi agen pengguna adalah bagian penting dari strategi penghindaran pemblokiran alamat IP. Rotasi agen pengguna secara konstan mengubah string agen pengguna yang dikirimkan perangkat lunak Anda pada setiap permintaan. Hal ini dapat membantu Anda mengurangi waktu antar permintaan tanpa risiko diblokir.

Pentingnya merotasi agen pengguna

Seperti disebutkan sebelumnya, rotasi agen pengguna adalah mekanisme penting untuk melewati tindakan perlindungan dan memastikan kelangsungan operasi web scraping dan proses otomatis di Internet. Singkatnya, menggunakan rotasi agen pengguna memungkinkan Anda untuk:

  1. Tingkatkan kemungkinan menghindari pemblokiran alamat IP.
  2. Permintaan masker lebih efektif.
  3. Meningkatkan keandalan scraper.
  4. Meniru permintaan dari perangkat dan browser yang berbeda.

Dengan kata lain, rotasi agen pengguna memungkinkan Anda untuk menutupi permintaan sehingga terlihat lebih seperti permintaan normal dari pengguna manusia, mengakses konten yang dioptimalkan untuk platform tertentu, atau menguji kompatibilitas halaman web pada perangkat yang berbeda. Dan jika agen pengguna diblokir sementara atau berhenti bekerja, Anda dapat beralih ke agen lain untuk melanjutkan pengikisan tanpa waktu henti.

Teknik merotasi agen pengguna di web scraping

Sekarang kami telah menjelaskan mengapa rotasi agen pengguna diperlukan, mari kita lihat contoh sederhana dengan Python dan NodeJS yang dapat Anda gunakan untuk mengimplementasikan fungsi ini.

Kita akan menggunakan contoh sebelumnya sebagai dasar dan menambahkan variabel yang berisi daftar agen pengguna dan loop yang memanggil agen pengguna berbeda dari daftar. Kami kemudian membuat permintaan ke situs web, yang mengembalikan konten header, menampilkannya di layar dan berpindah ke agen pengguna berikutnya.

Algoritma yang kami pertimbangkan dapat diimplementasikan dengan Python sebagai berikut:

import requests

# List of User Agents
user_agents = (
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0',
    'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0',
)

# Index to track the current User Agent
user_agent_index = 0

# Make a request with a rotated User Agent
def make_request(url):
    global user_agent_index
    headers = {'User-Agent': user_agents(user_agent_index)}
    response = requests.get(url, headers=headers)
    user_agent_index = (user_agent_index + 1) % len(user_agents)
    return response.text

# Example usage
url_to_scrape="https://httpbin.org/headers"
for _ in range(5):
    html_content = make_request(url_to_scrape)
    print(html_content)

Untuk NodeJS Anda dapat menggunakan kode berikut:

const axios = require('axios');

// List of User Agents
const userAgents = (
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.2; rv:109.0) Gecko/20100101 Firefox/121.0',
    'Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0',
    'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0',
);

// Index to track the current User Agent
let userAgentIndex = 0;

// Function to make a request with a rotated User Agent
async function makeRequest(url) {
    const headers = {'User-Agent': userAgents(userAgentIndex)};
    const response = await axios.get(url, {headers});
    userAgentIndex = (userAgentIndex + 1) % userAgents.length;
    return response.data;
}

// Example usage
const urlToScrape="http://example.com";
for (let i = 0; i < 5; i++) {
    makeRequest(urlToScrape)
        .then(htmlContent => console.log(htmlContent))
        .catch(error => console.error(error));
}

Kedua opsi berhasil menangani rotasi agen pengguna, dan jika dirasa berguna, Anda dapat menggunakan dan memodifikasinya sesuai kebutuhan Anda.

Praktik dan tip terbaik

Untuk meningkatkan keberhasilan pengumpulan data, sebaiknya ikuti beberapa panduan yang dapat membantu mengurangi risiko pemblokiran. Meskipun tips ini tidak wajib, tips ini dapat meningkatkan skrip Anda

Perbarui agen pengguna secara teratur

Rotasi agen pengguna secara teratur membantu mencegah kebuntuan. Situs web lebih sulit mendeteksi dan memblokir bot yang terus-menerus mengubah agen penggunanya.

Selain itu, penting untuk selalu memperbarui agen pengguna Anda. Menggunakan agen pengguna yang tidak digunakan lagi (mis. Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/51.0.2704.103 Safari/537.36) juga dapat menyebabkan penyumbatan.

Pertahankan interval acak antar permintaan

Jangan lupa untuk tidak hanya selalu memperbarui agen pengguna, tetapi juga menerapkan penundaan acak antar permintaan. Pengguna sebenarnya tidak berinteraksi dengan situs web tanpa jeda atau penundaan tetap (misalnya 5 detik) di antara permintaan. Perilaku ini hanya umum terjadi pada bot dan mudah dikenali.

Penundaan acak antar permintaan membantu mensimulasikan perilaku pengguna manusia pada umumnya, sehingga membuat proses otomatis lebih sulit dideteksi. Selain itu, penundaan dapat mengurangi beban server dan membuat scraping tidak terlalu mencurigakan.

Putar agen pengguna

Seperti disebutkan, merotasi agen pengguna mengurangi risiko pemblokiran IP karena setiap permintaan tampaknya berasal dari pengguna yang berbeda. Hal ini sangat berguna ketika situs web membatasi frekuensi permintaan dari agen pengguna yang sama. Merotasi agen pengguna memungkinkan Anda melewati batasan ini dan terus mengakses situs web tanpa masalah apa pun.

Kesimpulan dan temuan

Artikel ini memberikan gambaran umum tentang agen pengguna dalam konteks web scraping. Kami telah memeriksa alasan penggunaan agen pengguna, memeriksa dasar-dasar sintaksis, dan memberikan daftar agen pengguna sebenarnya serta contoh kode untuk menyiapkan agen pengguna dalam dua bahasa pemrograman populer.

Kami juga menjelaskan cara meningkatkan efektivitas agen pengguna melalui rotasi dan menjelaskan pentingnya praktik ini. Terakhir, kami mengakhiri artikel dengan tips praktis untuk membantu Anda mengurangi risiko tergoresnya blok dan secara efektif meniru perilaku pengguna sebenarnya.

Pos terkait

Tinggalkan Komentar