在 python3 中使用 Selenium 打開頁面。它不會在 selenium 下打開,但會在 Firefox 私人頁面下打開。
有什么區別以及如何解決?
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get('https://google.com') # creating a google cookie
driver.get_cookies() # check google gets cookies
sleep(3.0)
url='https://www.realestate.com.au/buy/in-sydney cbd, nsw/list-1'
driver.get(url)
不需要創建 google cookie。它也不存在于 Firefox 私人頁面下,但沒有它也可以作業。但是,在 Selenium 下,行為是不同的。
我還看到網站回傳[HTTP/2 429 Too Many Requests 173ms]狀態,頁面是空白的。它不會在 Firefox 私有模式下發生。
更新:
我打開了持久日志。私人模式下的 Firefox 也會收到 429 回應,但似乎 javascript 將從另一個 url 恢復。它只是第一次發生。
然而,在 selenium 上,請求無法在 429 回應中存活。它確實向 cdndex 網站報告了一些內容。我已經封鎖了那個網站,所以你看不到請求通過那里。這仍然是 firefox 和 selenium 之間的不同行為。
具有持久日志的 Selenium:

具有持久日志的 Firefox:

uj5u.com熱心網友回復:
這只是我在使用 selenium 和 webdriver 一段時間后的結果;我懷疑這是由于默認情況下 selenium 的默認用戶代理設定為蹩腳的東西,并且服務器端認識到這一點并因此為您提供了一個愚蠢的 HTTP 代碼和一個空白頁面。
嘗試將用戶代理設定為合理的值和/或禁用 selenium 對默認值的干擾。
另一個技巧是使用 wireshark 或類似工具查看請求,以準確了解通過網路發送的內容。
uj5u.com熱心網友回復:
429 請求過多
HTTP 429 Too Many Requests回應狀態碼表示用戶在短時間內發送了太多請求。429 狀態代碼旨在與速率限制方案一起使用。
根本原因
當您的服務器檢測到用戶代理在短時間內過于頻繁地嘗試訪問特定頁面時,它會觸發速率限制功能。最常見的示例是用戶(或攻擊者)反復嘗試登錄 Web 應用程式。
服務器還可以識別 機器人使用 cookie,而不是通過他們的登錄憑據。請求也可以基于每個請求、跨您的服務器或跨多個服務器計算。因此,有多種情況會導致您看到如下錯誤之一:
- 429 請求過多
- 429 錯誤
- HTTP 429
- 錯誤 429(請求過多)
這個用例
這個用例似乎是Selenium驅動的GeckoDriver發起的經典案例火狐 由于以下事實,瀏覽背景關系被檢測為機器人:
Selenium 標識自己
參考
您可以在以下位置找到一些相關的詳細討論:
- 如何從 Java 中的 BotD 中隱藏 Geckodriver 中的 WebDriver?
- 如何通過 Python 使用 GeckoDriver 和 Firefox 使 Selenium 腳本無法檢測?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407265.html
標籤:
