如何修改Selenium WebDriver的DNS为自定义DNS以解决访问异常
解决Selenium Chrome驱动DNS_PROBE_FINISHED_NXDOMAIN错误的方案
方法1:正确配置DNS over HTTPS(DoH)
你之前的DoH模板配置有误,Chrome要求templates字段是完整的DoH查询URL,而非单纯的IP地址。CloudFlare的DoH模板地址是https://cloudflare-dns.com/dns-query,修正后的代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service chrome_options = Options() local_state = { "dns_over_https.mode": "secure", # 强制启用DoH,避免自动 fallback 到系统DNS "dns_over_https.templates": "https://cloudflare-dns.com/dns-query" } chrome_options.add_experimental_option('localState', local_state) driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
方法2:直接通过启动参数指定DNS服务器
如果DoH配置不生效,可以直接给Chrome传递DNS服务器参数,绕过系统默认DNS:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service chrome_options = Options() # 指定CloudFlare的主、备DNS服务器,多个用逗号分隔 chrome_options.add_argument('--dns-servers=1.1.1.1,1.0.0.1') driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
验证DNS配置生效
可以访问chrome://settings/security查看DoH状态,或者访问https://1.1.1.1/help确认当前使用的DNS服务器是否为CloudFlare。
内容的提问来源于stack exchange,提问作者Paz
相关产品推荐
相关产品推荐

