當前位置: 妍妍網 > 碼農

一篇文章學會Python所有反爬機制及解決方法

2024-03-12碼農

Python,學霸

閱讀指南

  • 簡介

  • 機制

  • 簡介

    大家好!今天給你們帶來了幾個簡單眼爬機制。

    1. 封IP:

  • 詳細介紹: 網站會檢測存取頻率高且來自同一IP地址的請求,如果懷疑是爬蟲,可能會封鎖該IP地址。

  • 解決方法: 使用代理IP,輪換IP地址進行存取。

  • Python範例:

    import requests
    url = 'https://www.example.com'
    proxies = {
    'http''http://your_proxy_ip:port',
    'https''https://your_proxy_ip:port'
    }
    response = requests.get(url, proxies=proxies)
    print(response.text)

  • 2. 封User-Agent:

  • 詳細介紹: 網站根據請求中的User-Agent資訊來判斷是否是爬蟲,特定的User-Agent可能會被封鎖。

  • 解決方法: 設定隨機的User-Agent頭部,模擬真實使用者的請求。

  • Python範例:

    import requests
    from fake_useragent import UserAgent
    ua = UserAgent()
    headers = {'User-Agent': ua.random}
    url = 'https://www.example.com'
    response = requests.get(url, headers=headers)
    print(response.text)

  • 3. 封Cookie:

  • 詳細介紹: 網站根據請求中攜帶的Cookie資訊來判斷是否是爬蟲,異常或缺失的Cookie可能導致封鎖。

  • 解決方法: 合理管理Cookie資訊,確保請求中攜帶正確的Cookie。

  • Python範例:

    import requests
    url = 'https://www.example.com'
    cookies = {'cookie_name''cookie_value'}
    response = requests.get(url, cookies=cookies)
    print(response.text)

  • 當然,接下來我會繼續為你提供剩余的反爬機制的詳細介紹、解決方法和簡單範例。

    4. JavaScript渲染:

  • 詳細介紹: 網站使用JavaScript動態生成內容,爬蟲無法直接獲取頁面內容。

  • 解決方法: 使用無頭瀏覽器如Selenium等工具模擬瀏覽器行為進行內容提取。

  • Python範例:

    from selenium import webdriver
    url = 'https://www.example.com'
    driver = webdriver.Chrome()
    driver.get(url)
    page_source = driver.page_source
    print(page_source)
    driver.quit()

  • 5. 驗證碼驗證:

  • 詳細介紹: 網站透過驗證碼驗證來區分真實使用者和爬蟲,需要使用者手動輸入驗證碼。

  • 解決方法: 使用第三方打碼平台或者影像辨識技術自動辨識並輸入驗證碼。

  • 6. Ajax異步傳輸:

  • 詳細介紹: 網站使用Ajax異步載入數據,爬蟲需要處理異步請求才能完整獲取頁面內容。

  • 解決方法: 模擬Ajax請求,獲取異步載入的數據。

  • 7. 圖片偽裝:

  • 詳細介紹: 網站將內容以圖片形式呈現,爬蟲需要處理圖片辨識轉換為文本。

  • 解決方法: 使用OCR技術或者第三方工具進行圖片內容辨識。

  • 8. CSS偏移:

  • 詳細介紹: 網站使用CSS樣式對內容進行偏移顯示,使得爬蟲難以準確提取內容。

  • 解決方法: 分析CSS樣式,逆向計算內容的真實位置。

  • 9. SVG對映:

  • 詳細介紹: 網站使用SVG影像來呈現內容,爬蟲需要解析SVG檔才能獲取內容。

  • 解決方法: 解析SVG檔,提取其中的文本內容。