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": [
""
],
"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: [""] }},
["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