这是最近的问题,我想是三四天前开始的。它并没有与我自己的系统隔离,因为我也在远程服务器(Windows 10、Windows Server)上运行该软件。它也不是孤立于任何特定 URL,因为我现在无法通过任何具有此检查的 URL。
标题:“稍等……”“在访问 URL 之前检查您的浏览器”。“这个过程是自动的。你的浏览器很快就会重定向到你请求的内容。” “请允许最多 5 秒……”“Cloudflare 的 DDos 保护”“Ray Id:xxxxxxxxxxxxxxxxxx”
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('wwww.etherdelta.com')
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何解决这个问题;或者是时候放下可怜的提米(程序)了吗?
MrT*_*iny 11
我在 Firefox 上遇到了同样的问题。我能够通过切换到 Chrome 来解决它。
示例代码:
from selenium import webdriver
url = "<WEBSITE>"
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)
driver.get(url)
Run Code Online (Sandbox Code Playgroud)
“--disable-blink-features=AutomationControlled”隐藏“navigator.webdriver”标志。
请参阅Selenium webdriver:修改 navigator.webdriver 标志以防止 selenium 检测
编辑
您还必须更改 chromedriver 的一些默认变量。
perl 示例:
perl -pi -e 's/cdc_/dog_/g' /path/to/chromedriver
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看原始帖子。
请参阅网站能否检测到您在 chromedriver 中使用 selenium 的情况?
编辑 2
Cloudflare 不断调整他们的算法,因此您可以尝试使用未检测到的 chromedriver而不是手动更改 chromedriver。
undetected-chromedriver是一个优化的 Selenium Chromedriver 补丁,它不会触发反机器人服务。它会自动下载驱动程序二进制文件并修补它。
这是否可行取决于网站和当前的开发状态。Cloudflare 似乎在跟踪undetected-chromedriver的发展。
import undetected_chromedriver as uc
url = "<WEBSITE>"
driver= uc.Chrome()
driver.get(url)
Run Code Online (Sandbox Code Playgroud)
这是因为浏览器使用来cloudfare保护自己免受DDOS (Distributed Denial Of Service) Attacks. 有两种方法可以解决这个问题:
使用time.sleep- 如果网页加载需要 5 秒,则只需使用time.sleep(5)。
使用WebDriverWait-- 例如,button带有id“sample-btn”的 a 仅出现在该屏幕之后。那么你能做的是:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'sample-btn'))) #Web driver waits for 10 seconds until element is visible
Run Code Online (Sandbox Code Playgroud)
推荐第2个。但如果第二个不适合你,那就选择第一个。希望这有帮助!
| 归档时间: |
|
| 查看次数: |
13366 次 |
| 最近记录: |