Scraping anti deteksi Bot

By | February 13, 2026
153 Views

Apakah kalian pernah melakukan scraping website dan server tersebut menolak karena terdeteksi sebuah bot. Bahkan kalian sudah banyak modifikasi User Agent agar mirip browser, namun tetap saja ketahuan bahwa itu adalah bot. Saya pernah menggunakan mechanize, playwright, cloudscraper

dengan pesan khas dari server: HTTP Error 403: Forbidden

Modifikasi seperti

import mechanize

def scraping(url):
    br = mechanize.Browser()
    br.set_handle_robots(False)
    br.set_handle_refresh(False)

    br.addheaders = [
        ('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'),
        ('Accept',
         'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
        ('Accept-Language', 'en-US,en;q=0.5'),
        ('Connection', 'keep-alive'),
    ]

    response = br.open(url)
    html = response.read()
    return html.decode("utf-8")

atau menggunakan playwright

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto(url_master)
    html = page.content()
    browser.close()

atau menggunakan cloudscraper

import cloudscraper

scraper = cloudscraper.create_scraper(
    browser={
        "browser": "chrome",
        "platform": "mac",
        "desktop": True
    }
)

html = scraper.get(url).text

 

Semuanya akan gagal!

Kenapa server tahu itu bot?

Karena mechanize itu “telanjang” secara fingerprint. Bahkan kalau kamu ganti User-Agent, server tetap bisa tahu dari banyak sinyal lain. Yang dicek server (Cloudflare / WAF modern)

Mechanize gagal di hampir semua poin ini:

  1. Tidak ada JavaScript execution

  2. Tidak ada browser fingerprint

  3. Header HTTP tidak lengkap

  4. TLS fingerprint berbeda dari browser asli

  5. Cookie challenge tidak dieksekusi

  6. Behavior tidak manusiawi (langsung GET halaman target)

Solusinya pakai selenium

Berbasis chromium sehingga kita memerintah kan chrome mengikuti apa yang kita mau, kalau kalian menggunakan OS ubuntu bisa menggunakan perintah beriktu

sudo apt install chromium-chromedriver

terus kita bisa pakai script berikut

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(url_master)

# misalkan kita membuka website yang mengembalikan JSON
pre = driver.find_element(By.TAG_NAME, "pre")
json_data = json.loads(pre.text)
final = pd.DataFrame(json_data["data"])

dengan cara diatas, maka chrome akan terbuka dan langsung menuju URL yang kita maksud tanpa terdeteksi sebagai bot!

See also  Push File dari Server ke Client dengan teknik reverse SSH tunnel