如何用Python+Selenium自动填充代理认证弹窗的账号密码?
自动填充Firefox代理认证弹窗的解决方案
嘿,这个代理认证弹窗自动填充的问题我之前也踩过坑,给你两个靠谱的解决办法,亲测有效:
方法1:直接在代码中配置代理认证信息(最简单高效)
你之前的代码里已经设置了signon.autologin.proxy,但还缺了直接指定代理用户名和密码的核心配置项。Firefox的Profile支持直接设置network.proxy.http_username和network.proxy.http_password,配合自动登录的偏好,就能跳过弹窗自动完成认证。修改后的代码如下:
proxy = {'host': "XXXXXXXXXXXXXXXXXXX", 'port': 12345, 'usr': "AAAAAAA", 'pwd': "BBBBBBB"} fp = webdriver.FirefoxProfile() fp.set_preference('network.proxy.type', 1) fp.set_preference('network.proxy.http', proxy['host']) fp.set_preference('network.proxy.http_port', int(proxy['port'])) # 新增:设置代理的用户名和密码 fp.set_preference('network.proxy.http_username', proxy['usr']) fp.set_preference('network.proxy.http_password', proxy['pwd']) fp.set_preference('network.proxy.no_proxies_on', 'localhost, 127.0.0.1') fp.set_preference('signon.autologin.proxy', 'true') # 额外添加:将代理主机加入信任列表,避免认证拦截 fp.set_preference('network.automatic-ntlm-auth.trusted-uris', proxy['host']) fp.set_preference('network.negotiate-auth.trusted-uris', proxy['host']) driver = webdriver.Firefox(fp) driver.get("http://www.whatsmyip.com")
修改后,Firefox启动时会直接调用你配置的认证信息完成代理验证,不会再弹出手动输入的窗口。
方法2:使用预配置的Firefox Profile(适合长期复用)
如果不想把用户名密码明文写在代码里,或者需要多个脚本共用同一个代理配置,可以提前手动配置好Firefox的Profile:
- 手动打开Firefox,访问需要代理的网站,输入一次代理用户名和密码,勾选「记住密码」
- 在Firefox地址栏输入
about:profiles,找到已保存认证信息的Profile文件夹路径 - 在脚本中直接加载这个预配置的Profile
示例代码:
# 替换成你自己的Firefox Profile实际路径 custom_profile_path = "/Users/yourname/Library/Application Support/Firefox/Profiles/xxxxxx.default-release" fp = webdriver.FirefoxProfile(custom_profile_path) # 确保自动登录代理的偏好开启 fp.set_preference('signon.autologin.proxy', 'true') driver = webdriver.Firefox(fp) driver.get("http://www.whatsmyip.com")
这种方法的好处是密码不会暴露在代码里,配置一次后,所有使用该Profile的脚本都能自动跳过认证弹窗。
内容的提问来源于stack exchange,提问作者Pizzaboy




