Драматург Python: `NS_ERROR_UNKNOWN` при запуске Firefox с `firefox_user_prefs` и `security.enterprise_roots.enabled`Python

Программы на Python
Anonymous
Драматург Python: `NS_ERROR_UNKNOWN` при запуске Firefox с `firefox_user_prefs` и `security.enterprise_roots.enabled`

Сообщение Anonymous »

Я пытаюсь использовать драматург на Python, чтобы очистить портал во внутренней сети моей компании, и получаю бесполезное сообщение об ошибке (

Код: Выделить всё

NS_ERROR_UNKNOWN
), когда я пытаюсь установить некоторые настройки в Firefox (согласно документации драматурга)
Я использую Ubuntu 22.04.4 LTS с WSL и Python 3.10 .12. Портал корректно работает только в Firefox и обслуживается только через HTTPS. Компания MITM контролирует все SSL-соединения (включая подключения к внутренней сети), но у меня в WSL установлен корневой центр сертификации компании.
Вот пример кода:

Код: Выделить всё

from playwright.sync_api import sync_playwright

with sync_playwright() as pwobj:
browser = pwobj.firefox.launch(
headless = False,
firefox_user_prefs = {
"security.enterprise_roots.enabled": "true"
}
)

# page with untrusted certificate for testing purposes
page = browser.new_page().goto("https://untrusted-root.badssl.com/")
Когда я запускаю этот код, я получаю следующее сообщение об ошибке:

Код: Выделить всё

Traceback (most recent call last):
File "/home/lmnice/sw/projects/mapebot/Rascunhos/playwright_error.py", line 4, in 
browser = pwobj.firefox.launch(
File "/home/lmnice/.venvs/mapebot/lib/python3.10/site-packages/playwright/sync_api/_generated.py", line 13991, in launch
self._sync(
File "/home/lmnice/.venvs/mapebot/lib/python3.10/site-packages/playwright/_impl/_sync_base.py", line 115, in _sync
return task.result()
File "/home/lmnice/.venvs/mapebot/lib/python3.10/site-packages/playwright/_impl/_browser_type.py", line 94, in launch
Browser, from_channel(await self._channel.send("launch", params))
File "/home/lmnice/.venvs/mapebot/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 59, in send
return await self._connection.wrap_api_call(
File "/home/lmnice/.venvs/mapebot/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 514, in wrap_api_call
raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None
playwright._impl._errors.Error: BrowserType.launch: Protocol error (Browser.enable): Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.setStringPref]
Call log:
 /home/lmnice/.cache/ms-playwright/firefox-1449/firefox/firefox -no-remote -wait-for-browser -foreground -profile /tmp/playwright_firefoxdev_profile-XXXXXXFpc6uf -juggler-pipe -silent
-  pid=24470
- [pid=24470][err] JavaScript warning: resource://services-settings/Utils.sys.mjs, line 114: unreachable code after return statement
- [pid=24470][out] console.warn: services.settings: Ignoring preference override of remote settings server
- [pid=24470][out] console.warn: services.settings: Allow by setting MOZ_REMOTE_SETTINGS_DEVTOOLS=1 in the environment
- [pid=24470][out] console.error: ({})
- [pid=24470][out]
- [pid=24470][out] Juggler listening to the pipe
- [pid=24470][out] console.error: "Warning: unrecognized command line flag"  "-wait-for-browser"
- [pid=24470][out]
- [pid=24470][out]         ERROR: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.setStringPref] Browser.enable@chrome://juggler/content/protocol/BrowserHandler.js:40:24
- [pid=24470][out]
Если я запускаю тот же код без настройки firefox_user_prefs, я получаю следующее сообщение об ошибке:

Код: Выделить всё

Traceback (most recent call last):
File "/home/lmnice/sw/projects/mapebot/Rascunhos/playwright_error.py", line 15, in 
page = browser.new_page().goto("https://untrusted-root.badssl.com/")
File "/home/lmnice/.venvs/error_playwright/lib/python3.10/site-packages/playwright/sync_api/_generated.py", line 8686, in goto
self._sync(
File "/home/lmnice/.venvs/error_playwright/lib/python3.10/site-packages/playwright/_impl/_sync_base.py", line 115, in _sync
return task.result()
File "/home/lmnice/.venvs/error_playwright/lib/python3.10/site-packages/playwright/_impl/_page.py", line 519, in goto
return await self._main_frame.goto(**locals_to_params(locals()))
File "/home/lmnice/.venvs/error_playwright/lib/python3.10/site-packages/playwright/_impl/_frame.py", line 145, in goto
await self._channel.send("goto", locals_to_params(locals()))
File "/home/lmnice/.venvs/error_playwright/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 59, in send
return await self._connection.wrap_api_call(
File "/home/lmnice/.venvs/error_playwright/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 514, in wrap_api_call
raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None
playwright._impl._errors.Error: Page.goto: SEC_ERROR_UNKNOWN_ISSUER
Call log:
navigating to "https://untrusted-root.badssl.com/", waiting until "load"
Я получаю то же сообщение об ошибке, что и выше (

Код: Выделить всё

SEC_ERROR_UNKOWN_ISSUER
), если я запускаю код с какой-либо другой случайной настройкой Firefox, скажем:

Код: Выделить всё

from playwright.sync_api import sync_playwright

with sync_playwright() as pwobj:
browser = pwobj.firefox.launch(
headless = False,
firefox_user_prefs = {
# random option just to check if other options also cause this error
"browser.backspace_action": 0
}
)

# page with broken certificate for testing purposes
page = browser.new_page().goto("https://untrusted-root.badssl.com/")
Похоже, что ошибка связана с конкретным параметром Security.enterprise_roots.enabled, но в остальном я зашел в тупик.
Я был бы очень признателен, если бы кто-нибудь помог мне заставить версию Firefox для драматурга работать с пользовательскими центрами сертификации.

Подробнее здесь: https://stackoverflow.com/questions/786 ... refox-user

Вернуться в «Python»