From 2edce1244ae9703950b9bb2a14b6d42c73bbd1a0 Mon Sep 17 00:00:00 2001 From: toofar Date: Sat, 14 Oct 2023 14:45:36 +1300 Subject: Make "new_chrome" UA quirk a bit clever We only want to be faking a newer chrome version, if we are already on a newer one, we don't want to be faking an older one! Another scenario is that we might want to fake a perpetually newer version for some site. But that seems like a very problematic scenario and I hope that never comes up. --- qutebrowser/browser/webengine/webenginesettings.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index fb5403ae2..07324538f 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -430,12 +430,21 @@ def _init_site_specific_quirks(): "AppleWebKit/{webkit_version} (KHTML, like Gecko) " "{upstream_browser_key}/{upstream_browser_version} " "Safari/{webkit_version}") - new_chrome_ua = ("Mozilla/5.0 ({os_info}) " - "AppleWebKit/537.36 (KHTML, like Gecko) " - "Chrome/99 " - "Safari/537.36") firefox_ua = "Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0" + def maybe_newer_chrome_ua(at_least_version): + """Return a new UA if our current chrome version isn't at least at_least_version.""" + current_chome_version = version.qtwebengine_versions().chromium_major + if current_chome_version >= at_least_version: + return None + + return ( + "Mozilla/5.0 ({os_info}) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + f"Chrome/{at_least_version} " + "Safari/537.36" + ) + user_agents = [ # Needed to avoid a ""WhatsApp works with Google Chrome 36+" error # page which doesn't allow to use WhatsApp Web at all. Also see the @@ -453,10 +462,12 @@ def _init_site_specific_quirks(): # September 2020: Qt 5.12 works, but Qt <= 5.11 shows the error. # FIXME:qt6 Still needed? # https://github.com/qutebrowser/qutebrowser/issues/4669 - ("ua-slack", 'https://*.slack.com/*', new_chrome_ua), + ("ua-slack", 'https://*.slack.com/*', maybe_newer_chrome_ua(99)), ] for name, pattern, ua in user_agents: + if not ua: + continue if name not in config.val.content.site_specific_quirks.skip: config.instance.set_obj('content.headers.user_agent', ua, pattern=urlmatch.UrlPattern(pattern), -- cgit v1.2.3-54-g00ecf From a7a2420f02661020bcdea8728a1f846a868f4d56 Mon Sep 17 00:00:00 2001 From: toofar Date: Sat, 14 Oct 2023 15:04:24 +1300 Subject: Bump slack UA quirk for latest update Slack now requires chrome 112+. At least one user says it still works with 108 based. Although they did just do a UI refresh so I wouldn't be surprised if something was broken with older versions. Note that I'm not 100% sure that slack is actually doing a strict check for 112, but based on their prior behaviour I assume so (they are definitely checking for >99 so our old quirk is unhelpful at this point). Since I've told people to add ua-slack to their disabled quirks, should I change the name of it now to make sure it gets re-enabled? Eh, they can manage their own quirks. --- doc/changelog.asciidoc | 2 ++ qutebrowser/browser/webengine/webenginesettings.py | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 8c305350d..cec2f2b84 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -56,6 +56,8 @@ Fixed canvas feature which defaults to enabled on affected Qt versions. (#7489) - The download dialog should no longer freeze when browsing to directories with many files. (#7925) +- The app.slack.com User-Agent quirk now targets chromium 112 on Qt versions + lower than 6.6.0 (previously it always targets chromium 99) (#7951) [[v3.0.0]] v3.0.0 (2023-08-18) diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 07324538f..d0b6b5beb 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -459,10 +459,9 @@ def _init_site_specific_quirks(): # Needed because Slack adds an error which prevents using it relatively # aggressively, despite things actually working fine. - # September 2020: Qt 5.12 works, but Qt <= 5.11 shows the error. - # FIXME:qt6 Still needed? - # https://github.com/qutebrowser/qutebrowser/issues/4669 - ("ua-slack", 'https://*.slack.com/*', maybe_newer_chrome_ua(99)), + # October 2023: Slack claims they only support 112+. On #7951 at least + # one user claims it still works fine on 108 based Qt versions. + ("ua-slack", 'https://*.slack.com/*', maybe_newer_chrome_ua(112)), ] for name, pattern, ua in user_agents: -- cgit v1.2.3-54-g00ecf