NEW! |Satu panggilan API menghasilkan data bersih. Tanpa perlu scraper.Dapatkan 10.000 token gratis →

Selenium Python (3). Cara Bypass Deteksi Selenium Menggunakan Python: User Agent dan Eksekusi Background

Pelajari cara bypass deteksi browsing otomatis menggunakan Python, user agent, dan eksekusi background. Tingkatkan keterampilan web scraping dan automation Anda.

Diterbitkan3 Juni 2024
Waktu baca3 mnt

Web scraping dan browser automation telah menjadi integral bagi banyak bisnis dan developer. Namun, banyak website sekarang mendeteksi dan memblokir browsing otomatis. Artikel ini akan mengeksplorasi cara bypass deteksi Selenium menggunakan Python dengan memanipulasi user agents dan menjalankan Selenium di background. Kami akan mendalami langkah-langkah detail, tools, dan best practices untuk memastikan web scraping yang berhasil.

Memahami Deteksi Selenium#

Sebelum kita mengabaikan deteksi, mari kita pahami cara kerjanya. Situs web dapat mendeteksi Selenium dengan memeriksa keberadaan tanda dan properti driver web tertentu. Ketika sebuah situs mengidentifikasi tanda-tanda ini, situs tersebut dapat memblokir akses atau menyajikan data yang menyesatkan. Misalnya, saat Anda membuka situs menggunakan browser Chrome standar, situs akan merespons seperti yang diharapkan. Namun, ketika Anda membuka situs yang sama menggunakan Selenium, situs web tersebut dapat mendeteksi otomatisasi dan memblokirnya. Deteksi ini terjadi karena Selenium menetapkan tanda spesifik yang dapat dicari situs web.

Mengubah Bendera WebDriver#

Untuk melewati deteksi Selenium, salah satu metode efektif adalah dengan memodifikasi flag WebDriver.

  1. Konfigurasi Firefox: Buka halaman konfigurasi Firefox dengan mengetik about:config di bilah alamat. Temukan bendera yang terkait dengan WebDriver dan setel ke false.
  2. Implementasi Kode:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

Script ini menonaktifkan flag deteksi WebDriver, membuat browser terlihat seperti instance yang dijalankan pengguna biasa.

Agen Pengguna#

User agent adalah string yang dikirim browser ke web server untuk mengidentifikasi dirinya. Mengubah string user agent dapat membuat request Selenium tidak terlihat berbeda dari request browser biasa.

Langkah-Langkah untuk Mengubah User Agent:

  1. Identifikasi string user agent yang umum: Contoh: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. Implementasikan Perubahan di Selenium:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

Dengan menetapkan agen pengguna khusus, kita dapat melewati banyak deteksi dasar.

Menjalankan Selenium di Latar Belakang#

Menjalankan browser di latar belakang adalah aspek penting lainnya untuk menghindari deteksi. Hal ini dapat dicapai dengan menjalankan browser dalam mode headless.

Implementasi:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

Menjalankan dalam mode headless berarti tidak ada antarmuka grafis yang ditampilkan, yang penting untuk menjalankan tugas otomatis di server.

Menonaktifkan Notifikasi dan Suara Browser#

Penelusuran otomatis sering kali melibatkan penanganan pop-up dan notifikasi yang tidak terduga. Menonaktifkan ini dapat menyederhanakan prosesnya.

Contoh Kode:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

Skrip ini menonaktifkan notifikasi dan membisukan audio, memastikan otomasi yang tidak terganggu.

Contoh Parsing Data#

Mari kita perhatikan contoh praktis penguraian nama panggilan dari situs yang menghasilkan nama pengguna acak.

Langkah-langkah:

  1. Muat situs dan berinteraksi dengan elemen:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

Kesimpulan#

Dengan memanipulasi WebDriver flags, mengubah user agents, menjalankan Selenium di background, dan menonaktifkan notifikasi browser, Anda dapat secara efektif bypass deteksi Selenium. Teknik-teknik ini sangat penting untuk web scraping dan automation yang seamless dan undetected. Menerapkan metode-metode ini memastikan bahwa tugas-tugas otomatis Anda tetap tanpa gangguan dan efisien. Ingat selalu untuk menggunakan web scraping dan automation secara etis, menghormati terms of service website dan undang-undang privasi data. Untuk teknik-teknik lebih lanjut dan update reguler, tetap ikuti blog kami di FineProxy.org. Jangan ragu untuk berbagi ide dan feedback Anda di komentar di bawah. Jika Anda menyukai artikel ini, jangan lupa subscribe ke channel kami dan berikan like. Selamat scraping!

Dengan menerapkan langkah-langkah ini dan menyesuaikan pengaturan sesuai kebutuhan, Anda dapat memastikan proyek otomasi Anda berjalan dengan lancar dan tidak terdeteksi.