mstremante wrote: ↑2025-03-17, 10:52
I'm sorry but I never received information on how to consistently identify Pale Moon browsers.
I sent it to the mailing list (which e-mails each member individually, and your e-mail address is clearly the same as what was used individually) on the 11th of March 00:26 CET. If you received any notification from the mailing list, as you say, then you should also have received this, as well as the other discussions that happened; but I'll repeat it here, just in case, since you indicated to want to use the forum instead anyway.
> Q: Is there a way to consistently identify the Pale Moon browser?
There is, and it's outlined in
viewtopic.php?f=24&t=28233 as a general pointer, if you are using user-agent strings. In short, official builds of Pale Moon will always include a substring identifier "PaleMoon/nn.nn.nn" where nn.nn.nn is the browser version as well as "Goanna/*" where * is either the build ID or rendering engine version depending on which compatibility mode is chosen in the browser's options (should be common for all browsers building on UXP). It is, however, important to note that other browsers on the same platform (particularly Basilisk, the dev of which is also on this list) uses a different browser identifier instead of Pale Moon and the same would be true for other rebranded browsers and also for unbranded ones.
There were no bounces or delivery issues to your e-mail address from the mailing list. If there had been, I would have immediately noticed.
About the NDA:
mstremante wrote: ↑2025-03-17, 10:52
I myself stated that I hope we won't need it. The team sent the generic NDA as writing anything custom, although doable, does require more time. For now we still don’t need it.
I'm sorry but
if it's not needed, why was it sent to me for my signature? It was clearly intended to be a binding agreement if I went through the document signing process when I received it. It was clearly sent to me for signing. There was zero indication that this was a draft, merely a proposal, or anything else non-final. The document received was already signed by CloudFlare just needing my signature to complete.
You do understand, I hope, how this looks from our end, right?
Image1.png
mstremante wrote: ↑2025-03-17, 10:52
We don’t participate in browser related engagements to date.
While that may be true, as stated back in 2022 and in our previous discussion here, it is imperative that you do engage with browsers as they are the very clients you need to work with for accurate block/pass behaviour of your "bot detection". I shouldn't have to remind you of this as that would literally be the core description of your bot detection dev team.
mstremante wrote: ↑2025-03-17, 10:52
We don't have logic in our systems that specifically target the major browser vendors. We rely on well known browser standards to implement our checks.
I'm sorry but it seems you do. Community members have tested various things, among which using a "supported" browser with a Pale Moon user-agent string and got promptly blocked. We've also seen varying behaviours of the captcha based on user-agents, so it's absolutely clear that you aren't solely using JS features for your bot detection. The "well-known" browser standards are also not well-known to anyone outside of CF (in part because the scripting is highly obfuscated; presumably to make reverse-engineering harder). In addition, you are also relying on very complex and convoluted checks that are exquisitely implementation-dependent (underlined by the fact something as simple as hardware acceleration being unavailable in otherwise "supported" browser engines
will fail the bot check). Ultimately it all combines to a checking suite that is implementation-dependent to such a degree that it would, necessarily, have to be catered to each individual browser implementation and version, as seems to be the case. While I understand, from that point of view, that you short-list what your challenges "support", the problem is, as I have already explained before, that you are effectively gatekeeping websites that have no issue being rendered in all affected browsers by having this arbitrary, very narrow access gate.
CSP:
As a critical overarching note, relying on CSP to do bot-detection is IMHO very bad practice, as any bot could simply not respond to CSP headers and allow whichever response you're attempting to specifically restrict. It is much more likely that clients responding to CSP are legitimate browsers rather than bots.
mstremante wrote: ↑2025-03-17, 10:52
script-src 'unsafe-eval';
We do support this. However, there may be implementation-specific differences you rely on. Your dev team will have to provide specific details about this.
mstremante wrote: ↑2025-03-17, 10:52
worker-src blob:;
frame-src 'self' blob:;
child-src 'self' blob:;
Note: child-src has been officially deprecated by the W3C in 2022.
mstremante wrote: ↑2025-03-17, 10:52
At this moment, it's not possible for us to remove checks for these for Pale Moon. We continue to explore options, but if Pale Moon implements these, we can take care of the lack of JS function support listed above.
Pardon my French, but it is
absolutely bloody possible for you to remove checks for these for Pale Moon. You just are deciding not to. It
worked before Jan 31st, you
know which checks are the problem, so please find a way to make it work.
We can look into implementing blob: for workers (which is what seems to be missing) but that will not be a short-term or immediate thing. I do hope you can find a short-term solution to give us the necessary time to work on our CSP implementation. Note that the CSP spec is very complex and wrought with spec changes, implementation differences and this particular use of it really falls outside of the design scope for CSP (which is primarily meant as an active XSS protection measure!). We have always approached CSP from the XSS attack surface stand-point and have often been
more strict in what we allow than mainstream implementations like Blink. Once again, it seems quite counter what a bot would do...
mstremante wrote: ↑2025-03-17, 10:52
With the team we agreed we can be more specific with the issues identified as it does not pose a security risk. Pale Moon lacks support for these two functions:
canvas fillText()
DomRect.toJSON()
Once again this can be prioritized on our end but it won't be an immediate thing, and in the meanwhile our inability to access sites is harmful to us.
It does seem that especially canvas fillText() would be used to rely on specific features of graphic representations that fall immediately in the realm of browser fingerprinting. Please be aware that this is in conflict with people valuing browser privacy who may explicitly disable canvas features or poison the results and should not be considered a reliable check for bots.
As I already hinted at before I feel this is a much too convoluted and complex way of checking, which instead should be handled by investigating the actual traffic instead of offloading it to a very narrow selection of browser features that must be matched perfectly to pass. IMHO the focus should be on legitimacy of traffic, not client, but if you do want to check legitimacy of clients, then your legitimacy check should include every and all actively developed browsers, not just "whichever has the biggest market share".
You do not have the required permissions to view the files attached to this post.