Создание и зарузка exentsion в Remote WebDriver Firefox - Selenium

import zipfile, os, json, base64, io import random from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.firefox_profile import FirefoxProfile import selenium from selenium.webdriver.common.by import By from selenium import webdriver def create_referer_extension(referer: str, path="/home/ak/set_referer.xpi") -> str: manifest = { "manifest_version": 3, "name": "Set Referer", "version": "1.0", "permissions": [ "webRequest", "webRequestBlocking" ], "host_permissions": [ "<all_urls>" ], "background": { "scripts": ["background.js"] } } background_js = f""" browser.webRequest.onBeforeSendHeaders.addListener( function(details) {{ var headers = details.requestHeaders.filter(function(h) {{ return h.name.toLowerCase() !== "referer"; }}); if (!details.originUrl) {{ console.dir("{referer}") headers.push({{ name: "Referer", value: "{referer}" }}); }} return {{ requestHeaders: headers }}; }}, {{ urls: ["<all_urls>"] }}, ["blocking", "requestHeaders"] ); """ with zipfile.ZipFile(path, "w", zipfile.ZIP_DEFLATED) as zf: zf.writestr("manifest.json", json.dumps(manifest, indent=2)) zf.writestr("background.js", background_js) print("STORE XPI as ", path) return path ext_path = create_referer_extension(ref) # вызов функции, и сохранение полученного extension в файл /home/ak/set_referer.xpi opt=Options() opt.set_preference("extensions.experiments.enabled", True) opt.set_preference("xpinstall.signatures.required", False) driver = webdriver.Remote("http://10.10.10.4:4445", options=opt) # приконнектились к Remote WebDriver ext_id=webdriver.Firefox.install_addon(driver, ext_path, temporary=True) # загружаю xpi ... webdriver.Firefox.uninstall_addon(driver, ext_id) # выгружаю extension Это акульно на 2026-04 с Selenum 4.40.0 и Firefox 150