Fix snap chromium path collapsing to /usr/bin/snap
readlink/realpath of /snap/bin/chromium becomes /usr/bin/snap, which is not a browser and breaks DrissionPage launch. Keep the snap wrapper path, reject snap host basenames, and prefer real deb chromium binaries.
This commit is contained in:
1 parent
a790a371a8
commit
767516745e
5 files changed
+289
-70
No files matched your search
+22
-2
@@ -69,16 +69,36 @@ def _patched_create_browser_options():
|
||||
except Exception:
|
||||
browser_path = None
|
||||
if not browser_path:
|
||||
normalize = getattr(reg, "_normalize_browser_path", None)
|
||||
for cand in (
|
||||
"/usr/bin/chromium",
|
||||
"/usr/bin/chromium-browser",
|
||||
"/snap/bin/chromium",
|
||||
"/usr/lib/chromium/chromium",
|
||||
"/snap/bin/chromium", # keep wrapper path; never /usr/bin/snap
|
||||
"/usr/bin/google-chrome-stable",
|
||||
"/usr/bin/google-chrome",
|
||||
):
|
||||
if os.path.isfile(cand) or os.path.islink(cand):
|
||||
if callable(normalize):
|
||||
norm = normalize(cand)
|
||||
if norm:
|
||||
browser_path = norm
|
||||
break
|
||||
elif os.path.isfile(cand) or os.path.islink(cand):
|
||||
# refuse snap host binary
|
||||
if os.path.basename(cand) == "snap":
|
||||
continue
|
||||
browser_path = cand
|
||||
break
|
||||
# Final sanitize: never pass /usr/bin/snap to DrissionPage
|
||||
if browser_path and os.path.basename(str(browser_path)) in ("snap", "snap-confine", "snapd"):
|
||||
print(f"[browser] reject invalid path={browser_path!r}, re-resolve", flush=True)
|
||||
browser_path = None
|
||||
resolve = getattr(reg, "resolve_browser_path", None)
|
||||
if callable(resolve):
|
||||
try:
|
||||
browser_path = resolve()
|
||||
except Exception:
|
||||
browser_path = None
|
||||
if browser_path:
|
||||
try:
|
||||
opts.set_browser_path(browser_path)
|
||||
|
||||
Reference in new issue
Block a user