Re: Anubis challenge on texlive.info pretest mirror breaks TeX Live Utility
Bruno Voisin via tex-live <[email protected]> Fri, 20 Feb 2026 10:59:13 +0100
| Newsgroups | gmane.comp.tex.live |
|---|---|
| Message-ID | <[email protected]> |
> On 20 Feb 2026, at 04:42, Adam R. Maxwell <[email protected]> wrote: > >> On Feb 19, 2026, at 16:16 , Bruno Voisin <[email protected]> wrote: >> >> Indeed, based on the math.utah.edu <http://math.utah.edu/> log above, TLU does the year check before calling tlmgr. > > Yes, it's a consistency check so I can tell the user if there's a local/remote version mismatch. The alternatives are trying to parse tlmgr's output (which can change), or just throwing up a generic "Update listing failed" alert. > > No idea how tlmgr bypasses the bot checker. I suppose I'll have to learn, as the enshittification of the internet continues apace. > On 20 Feb 2026, at 08:12, Max Chernoff <[email protected]> wrote: > > On Thu, 2026-02-19 at 19:42 -0800, Adam R. Maxwell via tex-live wrote >> No idea how tlmgr bypasses the bot checker. I suppose I'll have to >> learn, as the enshittification of the internet continues apace. > > The default configuration of Anubis only blocks requests with > "Mozilla/5.0" in their user-agent [1], so tlmgr doesn't need to do > anything specific to bypass it. But perhaps Norbert has adjusted the > configuration for texlive.info, in which case he might have to explictly > whitelist TLU. > > [1]: Which covers not just Firefox, but _all_ browsers due to weird > historical reasons > > https://en.wikipedia.org/wiki/User-Agent_header#Format_for_human-operated_web_browsers For TeX Live Utility, TLMDatabase.m lines 90 ff say // get a user-agent for the default URL, to avoid hardcoding any framework versions WebView *wv = [[WebView alloc] initWithFrame:NSMakeRect(0, 0, 1, 1)]; _userAgent = [[wv userAgentForURL:[[TLMEnvironment currentEnvironment] defaultServerURL]] copy]; [wv release]; so I imagine Mozilla/5.0 comes from WebKit's userAgentForURL: https://developer.apple.com/documentation/webkit/webview-swift.class/useragent(for:)?language=objc As for tlmgr, trying to dig into the code: tlmgr does a year check too, lines 7549 ff # we allow a range of years to be specified by the remote tlpdb # for which it might work. # the lower limit is TLPDB->config_minrelease # the upper limit is TLPDB->config_release [...] my $texlive_release = $remotetlpdb->config_release; my $texlive_minrelease = $remotetlpdb->config_minrelease; [...] where config_release and config_minrelease are defined in tlpkg/TeXLive/TLPDB.pm lines 1346 ff. How exactly remotetlpdb is obtained I couldn't figure out. curl, wget or Perl's LWP depending on what the user has? I think this involves init_tlmedia (tlmgr.pl lines 7285 ff) and repository_to_array (TLUtils.pm lines 5249 ff), but that's as far as I went. When the local and remote TL years don't match, tlmgr's output reflects that. The following with 2026 as the local year: % tlmgr --repository https://texlive.info/tlpretest/ repository status tlmgr: package repository https://texlive.info/tlpretest/ (verified) main https://texlive.info/tlpretest//tlpkg/texlive.tlpdb verified % tlmgr --repository https://mirrors.ircam.fr/pub/CTAN/systems/texlive/tlnet repository status tlmgr: The TeX Live versions supported by the repository https://mirrors.ircam.fr/pub/CTAN/systems/texlive/tlnet (2016--2025) do not include the version of the local installation (2026). Same with --machine-readable (which TLU uses): % tlmgr --repository https://texlive.info/tlpretest/ --machine-readable repository status tlmgr: --machine-readable output not supported for repository start load https://texlive.info/tlpretest/ finish load https://texlive.info/tlpretest/ location-url https://texlive.info/tlpretest/ main https://texlive.info/tlpretest//tlpkg/texlive.tlpdb 0 verified % tlmgr --repository https://mirrors.ircam.fr/pub/CTAN/systems/texlive/tlnet --machine-readable repository status tlmgr: --machine-readable output not supported for repository start load https://mirrors.ircam.fr/pub/CTAN/systems/texlive/tlnet fail load https://mirrors.ircam.fr/pub/CTAN/systems/texlive/tlnet tlmgr: The TeX Live versions supported by the repository https://mirrors.ircam.fr/pub/CTAN/systems/texlive/tlnet (2016--2025) do not include the version of the local installation (2026). Unclear what could be parsed. "finish load" vs "fail load"? Not sure this helps at all, but here we are. Bruno