欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python selenium如何防止被瀏覽器檢測

 更新時間:2025年05月22日 10:37:29   作者:小白的大數(shù)據(jù)之旅 0 LV.4  
隨著瀏覽器安全策略的不斷完善,如何有效地防止Selenium在自動化測試過程中被瀏覽器檢測到,成為了開發(fā)者們面臨的一個新的挑戰(zhàn),下面小編來和大家探討一下Selenium在防止被瀏覽器檢測方面的技巧吧

一、簡介

在網(wǎng)絡(luò)技術(shù)飛速發(fā)展的今天,自動化測試作為軟件質(zhì)量保證的重要手段,已經(jīng)越來越受到開發(fā)者和運維人員的重視。其中,Selenium以其強大的功能和靈活的跨平臺特性,成為了許多開發(fā)者進行Web應(yīng)用自動化測試的首選工具。然而,隨著瀏覽器安全策略的不斷完善,如何有效地防止Selenium在自動化測試過程中被瀏覽器檢測到,成為了開發(fā)者們面臨的一個新的挑戰(zhàn)。本文將詳細探討Selenium在防止被瀏覽器檢測方面的技巧,幫助開發(fā)者更好地應(yīng)對這一問題。

1、瀏覽器指紋識別

瀏覽器指紋識別技術(shù)(Browser Fingerprinting)是一種通過分析用戶的瀏覽器行為、配置和功能來識別用戶的在線身份和行為的技術(shù)。它利用瀏覽器中的一些特性,如操作系統(tǒng)、瀏覽器版本、設(shè)備類型、插件和用戶活動等,構(gòu)建一個唯一的“指紋”信息。這些信息可以被網(wǎng)站和服務(wù)器用來追蹤、定位和分析用戶的訪問行為,從而實現(xiàn)廣告定向、個性化推薦、用戶細分等目的。

瀏覽器指紋識別技術(shù)具有以下特點:

  • 用戶隱私性較低:由于瀏覽器指紋識別技術(shù)可以通過分析用戶的瀏覽器行為來獲取用戶信息,因此用戶的隱私性較低。
  • 難以防范:由于瀏覽器指紋識別技術(shù)依賴于瀏覽器特性,很難完全防范。部分瀏覽器已經(jīng)針對這種技術(shù)提供了保護措施,但并不能完全消除風(fēng)險。
  • 用戶體驗影響較?。弘m然瀏覽器指紋識別技術(shù)可能會影響用戶的隱私和體驗,但通常情況下,它不會對用戶造成顯著的影響。

2、行為分析

瀏覽行為分析(Behavioral Analysis,BA):這是一種分析用戶在瀏覽器中的行為模式的方法,包括用戶的瀏覽歷史、訪問的網(wǎng)站類型、停留時間等。通過對這些信息的分析,可以判斷操作者是否為真人。

在使用自動化過程中盡量避免快速操作,在進行每個步驟的操作中最好停留一下,最好使用模擬鼠標(biāo)和鍵盤來操作

3、為什么會被瀏覽器檢測呢

  • 安全性原因:瀏覽器通常會對一些惡意行為進行監(jiān)控和防范,Selenium 模擬瀏覽器操作的行為可能會被認為是惡意行為。
  • 用戶體驗原因:瀏覽器的目的是為用戶提供一個良好的用戶體驗,而 Selenium 模擬瀏覽器操作可能會影響用戶的正常使用體驗。
  • 性能問題:Selenium 模擬瀏覽器操作可能會導(dǎo)致瀏覽器性能下降,影響其他用戶的正常使用。
  • 競爭問題:瀏覽器廠商通常會限制第三方工具的使用,以避免用戶過度依賴這些工具,影響瀏覽器的穩(wěn)定性和性能。

二、如何知道自己已經(jīng)被檢測到

1、使用window.navigator.webdriver屬性

`window.navigator.webdriver` 是一個屬性,它返回一個布爾值,表示當(dāng)前瀏覽器是否支持 WebDriver 技術(shù)。WebDriver 是一種自動化測試技術(shù),允許開發(fā)人員使用類似于操作瀏覽器的 API 來測試網(wǎng)頁應(yīng)用程序。

打開瀏覽器,按F12打開控制臺,在控制臺中輸入window.navigator.webdriver

可以看到返回結(jié)果是一個false

描述
true表示當(dāng)前瀏覽器支持 WebDriver
false表示當(dāng)前瀏覽器不支持 WebDriver
undefined表示當(dāng)前瀏覽器沒有提供關(guān)于是否支持 WebDriver 的信息

這個屬性的值對于使用 WebDriver 進行自動化測試非常重要,因為它可以幫助開發(fā)人員確定是否能夠在瀏覽器中使用 WebDriver 進行測試。

當(dāng)手動打開網(wǎng)站的時候返回結(jié)果正常都是false or undefined 因為我們是真人進行操作,但是當(dāng)使用selenium等其他自動化工具打開網(wǎng)站的時候,很有可能會被瀏覽器檢測到是測試機器人在操作,返回true

通俗來講就是手動操作打開瀏覽器會返回false 或者 undefined,使用自動化機器人打開瀏覽器很大幾率會出現(xiàn)true,部分高級網(wǎng)站當(dāng)識別到你的返回值是true就會返回給你一些錯誤的網(wǎng)站信息來阻止你的自動化行為

2、使用在線網(wǎng)站測試工具查看

這個網(wǎng)站提供了一個在線工具,可以用于測試你的瀏覽器指紋。具體來說,它可以收集你的瀏覽器信息,并生成一個獨特的瀏覽器指紋,用于識別你的瀏覽器。

一些網(wǎng)站和服務(wù)利用瀏覽器指紋識別技術(shù)來跟蹤用戶、進行用戶分析、識別欺詐行為等。通過檢測你的瀏覽器指紋,它們可以識別你的設(shè)備和瀏覽器,即使你更換了IP地址或刪除了Cookie也能追蹤你的活動。

這個在線工具可以幫助用戶了解他們的瀏覽器指紋是什么樣的,以及它可能暴露了什么樣的信息。對于普通用戶來說,這有助于增強對個人隱私的認識,促使他們采取一些措施來降低被跟蹤的風(fēng)險。對于開發(fā)者和安全專家來說,這個工具也可以用于測試網(wǎng)站的防御措施,以及評估不同瀏覽器或代理工具對瀏覽器指紋的影響。

2.1、手動打開該網(wǎng)頁返回

2.2、使用自動化測試工具打開

使用selenium打開

from selenium import webdriver
import time
#打開谷歌瀏覽器
driver = webdriver.Chrome()
#頁面最大化
driver.maximize_window()
#打開網(wǎng)頁
driver.get('https://bot.sannysoft.com/')
time.sleep(10)
driver.save_screenshot('ceshi.png')
#關(guān)閉瀏覽器
driver.quit()

返回結(jié)果

當(dāng)網(wǎng)站上的WebDriver(New)部分顯示為紅色時,通常表示該網(wǎng)站正在檢測到你正在使用的瀏覽器是通過WebDriver控制的,而不是一個真實的人類用戶在操作。WebDriver是一種自動化測試工具,通常被用于自動化測試和網(wǎng)頁爬取等任務(wù)。然而,一些網(wǎng)站會檢測到WebDriver的存在,并將其視為不受歡迎的自動化行為,可能會采取一些措施來阻止這種訪問,比如彈出驗證碼、重定向到其他頁面,或者直接拒絕服務(wù)。

這個時候就需要我們采取一些措施來規(guī)避這種檢測

三、規(guī)避檢測解決方案

現(xiàn)在各個瀏覽器和網(wǎng)站的反爬機制都在不斷升級改造,以下方法不一定完全有效,希望對大家的當(dāng)前困境有所幫助

1、使用無頭瀏覽器

使用無頭瀏覽器是一種常見的方法來規(guī)避網(wǎng)站的檢測。下面是一個使用Selenium和無頭瀏覽器的Python示例代碼:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 創(chuàng)建ChromeOptions對象,配置無頭模式
chrome_options = Options()
chrome_options.add_argument('--headless')  # 啟用無頭模式

# 可選:為了進一步模擬真實用戶行為,可以添加一些其他的配置
chrome_options.add_argument('--disable-gpu')  # 禁用GPU加速
chrome_options.add_argument('--no-sandbox')  # 在Linux系統(tǒng)上使用時可能需要添加此選項

# 創(chuàng)建WebDriver對象,指定Chrome瀏覽器和ChromeOptions
driver = webdriver.Chrome(options=chrome_options)

# 訪問網(wǎng)頁
driver.get("www.baidu.com")

# 執(zhí)行其他操作,例如查找元素、點擊按鈕等

# 關(guān)閉瀏覽器
driver.quit()

這段代碼使用了Chrome瀏覽器的無頭模式,在創(chuàng)建WebDriver對象時傳遞了chrome_options參數(shù),這樣就可以在無頭模式下啟動Chrome瀏覽器。通過這種方式,Selenium腳本在后臺運行,不會彈出瀏覽器窗口,從而減少被檢測的風(fēng)險。

請注意,在某些情況下,網(wǎng)站可能會檢測到無頭瀏覽器的使用。

1.1、--headless

  • 這個選項告訴Chrome瀏覽器在無頭模式下運行,即不顯示圖形用戶界面(GUI),而是在后臺執(zhí)行。無頭模式的瀏覽器會在沒有顯示的情況下執(zhí)行JavaScript、渲染頁面等操作,通常用于自動化測試和數(shù)據(jù)爬取等任務(wù)。
  • 使用無頭瀏覽器可以提高運行效率、節(jié)省資源,并且不會打擾用戶。

1.2、--disable-gpu

  • 這個選項禁用了Chrome瀏覽器的GPU加速功能。GPU加速可以加快頁面渲染速度,但在一些情況下可能會導(dǎo)致問題,尤其是在無頭模式下運行時。
  • 禁用GPU加速通常用于解決一些在無頭模式下出現(xiàn)的渲染問題或性能問題。

1.3、--no-sandbox

  • 這個選項禁用了Chrome瀏覽器的沙箱模式。沙箱模式是Chrome瀏覽器的一個安全特性,用于隔離瀏覽器進程和系統(tǒng),以防止惡意軟件對系統(tǒng)的攻擊。
  • 在一些特殊的情況下,比如在Linux環(huán)境下以root權(quán)限運行Chrome瀏覽器時,沙箱模式可能會導(dǎo)致一些問題,例如啟動失敗或權(quán)限錯誤。因此,禁用沙箱模式可以解決這些問題。

2、模擬用戶行為

在實際操作中,如果操作過快也很容易別檢測到是非真人操作,所以我們在自動化操作過程中應(yīng)當(dāng)盡量模仿出人為操作痕跡

2.1、模擬鼠標(biāo)和鍵盤操作

如移動到元素、點擊元素、雙擊元素等,需要輸入時通過使用模擬鍵盤來進行數(shù)據(jù)最好不使用send_keys()直接輸入,可以采用pyautogui庫來進行模擬鼠標(biāo)鍵盤的操作

2.2、隨機化操作

在進行每次操作的過程中可以適當(dāng)隨機停頓一下,這樣可以盡量接近真實用戶的操作習(xí)慣,避免出現(xiàn)規(guī)律性的行為被網(wǎng)站檢測到

#隨機等待1-15秒
time.sleep(random.randint(1,15))

.....還有很多,待補充

總的來說,通過模擬用戶行為并盡量模仿真實用戶的操作,可以降低被網(wǎng)站檢測到的風(fēng)險。但需要注意的是,即使采取了以上措施,仍然無法保證完全不被檢測到,因此在使用Selenium進行自動化任務(wù)時,始終需要保持警惕并做好應(yīng)對各種情況的準(zhǔn)備。

3、設(shè)置瀏覽器的用戶代理(User-Agent)

設(shè)置瀏覽器的用戶代理(User-Agent)字符串為指定的值。用戶代理字符串是瀏覽器發(fā)送給網(wǎng)站的一段文本,用于告訴網(wǎng)站它所使用的瀏覽器類型和版本等信息,從而進行偽裝成真實用戶操作

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 設(shè)置用戶代理字符串為指定的值
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
chrome_options.add_argument(f'user-agent={user_agent}')
# 創(chuàng)建WebDriver對象,指定Chrome瀏覽器和ChromeOptions
driver = webdriver.Chrome(options=chrome_options)

# 訪問網(wǎng)頁
driver.get("https://bot.sannysoft.com/")

# 執(zhí)行其他操作,例如查找元素、點擊按鈕等
driver.save_screenshot('ceshi.png')
# 關(guān)閉瀏覽器
driver.quit()

這段代碼的關(guān)鍵是使用add_argument()方法將指定的用戶代理字符串作為參數(shù)傳遞給ChromeOptions對象的user-agent選項。然后,將ChromeOptions對象傳遞給webdriver.Chrome()方法來啟動Chrome瀏覽器,并且在瀏覽器中設(shè)置了指定的用戶代理字符串。這樣就可以模擬特定瀏覽器和操作系統(tǒng)的訪問行為,以達到模擬用戶行為的目的。

4、undetected_chromedriver庫(推薦)

undetected_chromedriver 旨在通過使用未被檢測到的ChromeDriver來提高Selenium自動化腳本的穩(wěn)定性和可靠性。當(dāng)你使用普通的ChromeDriver時,有些網(wǎng)站可能會檢測到你的腳本正在使用自動化工具,從而采取一些防御措施,比如彈出驗證碼、拒絕服務(wù)等。

undetected_chromedriver庫的作用在于通過一些技巧和方法,使得你的Selenium腳本更難被網(wǎng)站檢測到。它的主要特點和作用包括:

  • 隨機化配置: undetected_chromedriver會隨機化一些配置,比如窗口大小、Chrome版本、ChromeDriver版本等,使得每次啟動的瀏覽器都有些微的差異,從而減少被檢測到的風(fēng)險。
  • 隱藏WebDriver特征: undetected_chromedriver會嘗試隱藏WebDriver特征,比如修改一些JavaScript變量、刪除一些WebDriver的特有標(biāo)志等,以模擬真實用戶的行為。
  • 定期更新: undetected_chromedriver庫會定期更新其代碼,以適應(yīng)網(wǎng)站對自動化工具的新檢測和防御措施。
  • 易于使用: 使用undetected_chromedriver庫只需要簡單地替換你原來的ChromeDriver,無需對現(xiàn)有的Selenium代碼做任何修改。

總的來說,undetected_chromedriver庫的作用是幫助你編寫更穩(wěn)定、更可靠的Selenium自動化腳本,減少被網(wǎng)站檢測到的風(fēng)險,從而提高自動化任務(wù)的成功率。

import undetected_chromedriver as uc
#創(chuàng)建谷歌瀏覽器
browser = uc.Chrome()
#打開網(wǎng)頁
browser.get(url="https://bot.sannysoft.com/")

# 執(zhí)行其他操作,例如查找元素、點擊按鈕等

browser.save_screenshot('ceshi.png')
# 關(guān)閉瀏覽器
browser.quit()

得到的結(jié)果就是已經(jīng)避開了網(wǎng)站的檢測

5、excludeSwitches參數(shù)關(guān)閉自動化檢測

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
#關(guān)閉自動化檢測
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 創(chuàng)建WebDriver對象,指定Chrome瀏覽器和ChromeOptions
driver = webdriver.Chrome(options=chrome_options)

# 訪問網(wǎng)頁
driver.get("https://bot.sannysoft.com/")

# 執(zhí)行其他操作,例如查找元素、點擊按鈕等
driver.save_screenshot('ceshi.png')
# 關(guān)閉瀏覽器
driver.quit()

options.add_experimental_option("excludeSwitches", ["enable-automation"]) 這行代碼的功能和作用是為ChromeOptions對象添加一個實驗性選項,該選項用于排除特定的開關(guān),其中 "enable-automation" 是要排除的開關(guān)名稱。

具體來說,這行代碼的作用是將 Chrome 瀏覽器的自動化標(biāo)志 "enable-automation" 從請求頭中排除掉。在正常情況下,Chrome 瀏覽器會將 "enable-automation" 添加到請求頭中,以標(biāo)識瀏覽器正在被自動化控制,通常是由Selenium等工具控制。這可能會導(dǎo)致一些網(wǎng)站檢測到自動化行為并采取相應(yīng)的防御措施,比如彈出驗證碼或拒絕服務(wù)。

通過排除 "enable-automation" 這個開關(guān),我們可以讓瀏覽器在請求頭中不再顯示自動化標(biāo)志,從而使得自動化行為更難被網(wǎng)站檢測到。這有助于提高自動化測試、數(shù)據(jù)采集等任務(wù)的成功率和穩(wěn)定性。

總之,這行代碼的作用是為了規(guī)避網(wǎng)站對瀏覽器自動化的檢測,提高自動化腳本的穩(wěn)定性和可靠性。

以上就是python selenium如何防止被瀏覽器檢測的詳細內(nèi)容,更多關(guān)于selenium防檢測的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中selenium庫的用法詳解

    Python中selenium庫的用法詳解

    這篇文章主要介紹了Python中selenium庫的用法詳解,需要的朋友可以參考下
    2021-05-05
  • 100行Python代碼實現(xiàn)自動搶火車票(附源碼)

    100行Python代碼實現(xiàn)自動搶火車票(附源碼)

    又到年底了,相信對于在外地的朋友們來說,火車票是到年底最頭痛的一件事了,但作為程序員的你怎么能一樣呢?快發(fā)揮你的特長,下面這篇文章主要給大家介紹了如果通過100行Python代碼實現(xiàn)自動搶火車票的相關(guān)資料,需要的朋友可以參考下。
    2018-01-01
  • python使用minimax算法實現(xiàn)五子棋

    python使用minimax算法實現(xiàn)五子棋

    這篇文章主要為大家詳細介紹了python使用minimax算法實現(xiàn)五子棋,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 完美解決torch.cuda.is_available()一直返回False的玄學(xué)方法

    完美解決torch.cuda.is_available()一直返回False的玄學(xué)方法

    這篇文章主要介紹了完美解決torch.cuda.is_available()一直返回False的玄學(xué)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • python中關(guān)于os.path.pardir的一些坑

    python中關(guān)于os.path.pardir的一些坑

    這篇文章主要介紹了python中關(guān)于os.path.pardir的一些坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • pytorch下tensorboard的使用程序示例

    pytorch下tensorboard的使用程序示例

    我們都知道tensorflow框架可以使用tensorboard這一高級的可視化的工具,這篇文章主要介紹了pytorch下tensorboard的使用,需要的朋友可以參考下
    2021-10-10
  • 一篇超級全面的Python功能圖譜(推薦)

    一篇超級全面的Python功能圖譜(推薦)

    Python作為一種廣受歡迎的高級編程語言,不僅在基本語法上易于學(xué)習(xí),還擁有強大的標(biāo)準(zhǔn)庫和活躍的開發(fā)社區(qū),本文詳細介紹了Python從基礎(chǔ)語法到高級應(yīng)用的全面功能,并通過實際案例和代碼示例展示了其在科學(xué)計算、Web開發(fā)、機器學(xué)習(xí)等多個領(lǐng)域的應(yīng)用,需要的朋友可以參考下
    2024-09-09
  • tensorflow獲取變量維度信息

    tensorflow獲取變量維度信息

    這篇文章主要為大家詳細介紹了tensorflow獲取變量維度信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python?xpath,JsonPath,bs4的基本使用

    Python?xpath,JsonPath,bs4的基本使用

    這篇文章主要介紹了Python?xpath,JsonPath,bs4的基本使用,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-07-07
  • GitHub?AI編程工具copilot在Pycharm的應(yīng)用

    GitHub?AI編程工具copilot在Pycharm的應(yīng)用

    最近聽說github出了一種最新的插件叫做copilot,這篇文章主要給大家介紹了關(guān)于GitHub?AI編程工具copilot在Pycharm的應(yīng)用,目前感覺確實不錯,建議大家也去使用,需要的朋友可以參考下
    2022-04-04

最新評論