1. 程式人生 > 實用技巧 >谷歌無頭瀏覽器+規避檢測

谷歌無頭瀏覽器+規避檢測

selenium 模組的基本使用
問題:selenium 模組和爬蟲之間具有怎樣的關聯?
- 便捷的獲取網站中動態載入的資料
- 便捷實現模擬登入

什麼是selenium模組?
- 基於瀏覽器自動化的一個模組。

selenium模組的使用流程:
- 環境安裝:pip install selenium
- 下載一個瀏覽器的驅動程式(谷歌,firefox等):
- chromedriver下載路徑:http://chromedriver.storage.googleapis.com/index.html
- 根據對應的chrome版本下載對應的chromedriver版本
- 例項化一個瀏覽器物件
- bro = webdriver.Chrome(executable_path='./chromedriver.exe')
- 編寫基於瀏覽器自動化的操作程式碼
- 發起請求:get(url)
- 標籤定位:find系列的方法
- 標籤互動:send_keys('xxxxxxxx')
- 執行js程式:execute_script('xxxxxxxxx')
- 前進、後退:back()、forward()
- 關閉瀏覽器:close()
- selenium 處理iframe:
- 如果定位的標籤位於iframe標籤之中,則必須使用switch_to.frame(iframe的id)
- 動作鏈(拖動):from selenium.webdriver import ActionChains
- 例項化一個動作鏈物件:action = ActionChains(bro)
- click_and_hold(div):長按點選操作
- move_by_offset(x,y)
- perform():讓動作鏈立即執行
- action.release()釋放動作鏈物件
谷歌無頭瀏覽器+規避檢測
例:
from selenium import webdriver
# 實現無視覺化介面
from selenium.webdriver.chrome.options import Options
# 實現規避檢測
from selenium.webdriver import ChromeOptions


def main():
    # 實現無視覺化介面的操作
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')

    # 實現規避檢測
    option = ChromeOptions()
    option.add_experimental_option('excludeSwitches', ['enable-automation'])

    bro = webdriver.Chrome(executable_path='./chromedriver.exe', chrome_options=chrome_options, options=option)

    bro.get('https://www.baidu.com/')
    print(bro.page_source)


if __name__ == '__main__':
    main()