Firefox中使用Selenium遭遇认证弹窗问题求助
解决方案
针对你遇到的浏览器认证弹窗问题,以下是几种可行的Selenium处理方案:
1. Chrome浏览器:通过ChromeOptions配置NTLM认证
这种方式适配NTLM/Windows身份验证场景,直接在启动浏览器时注入凭据:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 信任目标域名,避免拦截认证请求 chrome_options.add_argument('--auth-server-whitelist=ecms.network.lan') chrome_options.add_argument('--auth-negotiate-delegate-whitelist=ecms.network.lan') # 注入凭据,域环境下需带域前缀,格式为 域\用户名 chrome_options.add_argument(f'--auth-user=DOMAIN\\your_username') chrome_options.add_argument(f'--auth-password=your_password') driver = webdriver.Chrome(options=chrome_options) driver.get('https://ecms.network.lan/otcs/llisapi.dll?func=ll&objId=120499404&objAction=browse&viewType=1')
2. Firefox浏览器:配置信任站点自动认证
通过Firefox偏好设置添加信任域名,让浏览器自动处理NTLM认证:
from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() # 添加信任域名,支持多个域名用逗号分隔 firefox_options.set_preference('network.automatic-ntlm-auth.trusted-uris', 'ecms.network.lan') firefox_options.set_preference('network.negotiate-auth.trusted-uris', 'ecms.network.lan') firefox_options.set_preference('network.auth.use-sspi', True) driver = webdriver.Firefox(options=firefox_options) driver.get('https://ecms.network.lan/otcs/llisapi.dll?func=ll&objId=120499404&objAction=browse&viewType=1')
如果自动认证无效,可提前创建保存了目标站点凭据的Firefox配置文件,启动时加载该配置文件。
3. 模拟键盘输入处理系统弹窗
如果浏览器原生配置失效,可借助pyautogui模拟手动输入凭据:
import pyautogui from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://ecms.network.lan/otcs/llisapi.dll?func=ll&objId=120499404&objAction=browse&viewType=1') time.sleep(2) # 等待认证弹窗加载完成 pyautogui.typewrite('your_username') pyautogui.press('tab') pyautogui.typewrite('your_password') pyautogui.press('enter')
注意:这种方式对弹窗出现时机依赖较强,需根据实际情况调整等待时长,且运行时不能遮挡弹窗窗口。
内容的提问来源于stack exchange,提问作者Eugene Paulia
相关产品推荐
相关产品推荐

