爬蟲 無頭瀏覽器 規避監測

無頭瀏覽器

- phantomJs:無可視化界面的瀏覽器
- 谷歌無頭瀏覽器:
from selenium.webdriver.chrome.options import Options。
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)web

# 無頭瀏覽器舉例 from selenium import webdriver from selenium.webdriver.chrome.options import Options from time import sleep chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') bro = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options) bro.get('https://www.baidu.com') sleep(3) print(bro.page_source) bro.save_screenshot('1.png') bro.quit()

規避監測

如今很多大網站有對selenium採起了監測機制。好比正常狀況下咱們用瀏覽器訪問淘寶等網站的 window.navigator.webdriver的值爲 undefined。而使用selenium訪問則該值爲true。那麼如何解決這個問題呢? 只須要設置Chromedriver的啓動參數便可解決問題。在啓動Chromedriver以前,爲Chrome開啓實驗性功能參數excludeSwitches,它的值爲['enable-automation'],完整代碼以下: from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptions option = ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) driver = Chrome(options=option)

 

- 相關的網站會對selenium發起的請求進行監測 - 網站後臺能夠根據window.navigator.webdriver返回值進行selenium的監測
- undefinded:不是selenium進行的請求發送
- true:是selenium發起的請求
- 規避監測的方法:
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
bro = webdriver.Chrome(executable_path='chromedriver.exe',options=option)chrome

from selenium import webdriver from selenium.webdriver import ChromeOptions option = ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) #實現了規避監測 bro = webdriver.Chrome(executable_path='chromedriver.exe',options=option) bro.get('https://www.taobao.com/')
相關文章
相關標籤/搜索