Subject: Re: bug#44678: Set a Firefox user agent for our Icecat build
From: Maxim Cournoyer <[email-masked]>
To: Efraim Flashner <[email-masked]>
Cc: [email-masked], Arun Isaac <[email-masked]>
Date: Thu, 05 Aug 2021 12:48:12 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Efraim Flashner <[email-masked]> writes:

> On Wed, Aug 04, 2021 at 11:22:58PM -0400, Maxim Cournoyer wrote:
>> Hi Arun,
>> 
>> Arun Isaac <[email-masked]> writes:
>> 
>> > Hi,
>> >
>> > Many sites---jitsi among many others---don't work properly when they see
>> > an Icecat user agent. Instead, when the user agent is set to a Firefox
>> > user agent, these sites work as expected. Users can do this manually by
>> > installing user agent switching extensions such as uaswitcher, but it
>> > would be much better if our Icecat package, by default, came with a
>> > Firefox user agent, and everything worked normally without any user
>> > intervention.
>> >
>> > This bug report arose out of a discussion on help-guix. See
>> > https://lists.gnu.org/archive/html/help-guix/2020-11/msg00082.html
>> >
>> > I would normally volunteer a patch, but building Icecat takes too long
>> > (> 24 hours) on my slow computer. It would be nice if someone with a
>> > faster build machine handled this.
>> 
>> I thought the default user agent was already that of Firefox for Windows
>> (!), purportedly to make it less unique (thus making fingerprinting of
>> browsers/users more difficult).
>> 
>> Isn't it the case?  I changed mine long ago so I don't remember (to
>> please some broken site).
>> 
>> Thank you,
>> 
>> Maxim
>
> I remember a discussion forever ago about making the User-Agent Guix
> specific but we ended up not going that way in order to try to provide
> more anonymity. I don't believe I've changed my user agent ever, and
> here's what I'm told mine is:
>
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
>
> If you want to experiment with it you can send a patch (and tag me) and
> I'll build icecat locally and check it out and let you know how it goes.
> Icecat builds fairly quickly for me.

Thanks for the information.  I got curious and did some archeology in
the gnuzilla repository [0] and found the commit that made Windows NT user
agent string go away:

--8<---------------cut here---------------start------------->8---
a25c630a21d78be6515648d8d65cf13fb633c3b5
Author:     Ruben Rodriguez <[email-masked]>
AuthorDate: Thu Sep 13 20:47:06 2018 -0400
Commit:     Ruben Rodriguez <[email-masked]>
CommitDate: Thu Sep 13 21:02:13 2018 -0400

Parent:     f70c9f0 Some customizations to the UI
Contained:  master
Follows:    v52.1.0 (21)
Precedes:   v60.2.0 (3)

Preserve Firefox as UserAgent

1 file changed, 8 insertions(+), 2 deletions(-)
makeicecat | 10 ++++++++--

modified   makeicecat
@@ -405,6 +405,11 @@ sed 's/mozilla-bin/icecat-bin/' -i build/unix/run-mozilla.sh
 
 find -type f | grep run-mozilla | xargs prename s/mozilla/icecat/
 
+# do not alter useragent/platform/oscpu/etc with fingerprinting countermeasure, it makes things worse
+sed '/ShouldResistFingerprinting/,/}/s/^/\/\//' -i ./netwerk/protocol/http/nsHttpHandler.cpp
+sed '/If fingerprinting resistance is on/,/}/s/^/\/\//' -i ./dom/base/Navigator.cpp
+
+# Leave user agent as Firefox
 sed "/MOZILLA_UAVERSION/ s:IceCat/:Firefox/:" -i netwerk/protocol/http/nsHttpHandler.cpp
 
 find . -name region.properties |xargs -i /bin/sed 's_https://www.mibbit.*__' -i {}
@@ -421,9 +426,9 @@ cat << EOF >> browser/app/profile/icecat.js
 // Set useragent to Firefox compatible
 //pref("general.useragent.compatMode.firefox",true);
 // Spoof the useragent to a generic one
-pref("general.useragent.compatMode.firefox",true);
+//pref("general.useragent.compatMode.icecat",true);
 // Spoof the useragent to a generic one
-pref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:${FFMAJOR}.0) Gecko/20100101 Firefox/${FFMAJOR}.0");
+//pref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:${FFMAJOR}.0) Gecko/20100101 Firefox/${FFMAJOR}.0");
 pref("general.appname.override", "Netscape");
 pref("general.appversion.override", "${FFMAJOR}.0");
 pref("general.buildID.override", "Gecko/20100101");
@@ -433,6 +438,7 @@ EOF
 
 cat << EOF >> browser/confvars.sh
 # IceCat settings
+MOZ_APP_UA_NAME=IceCat
 MOZ_APP_VENDOR=GNU
 MOZ_APP_VERSION=$FFVERSION
 MOZ_APP_PROFILE=mozilla/icecat
--8<---------------cut here---------------end--------------->8---

Closing.

Thanks,

Maxim

[0]  git://git.savannah.gnu.org/gnuzilla.git