Friday, February 03, 2012

Force Firefox to not create urlclassifier3.sqlite when Safebrowsing is disabled

I choose to disable Safebrowsing, mainly because I don't want to pay the bandwidth/disk space/processing overhead when I feel I can make a good judgement of the sites I visit. BTW, I have it enabled for my wife's profile. This is turned off by unticking both "Block reported attack sites" & "Block reported web forgeries" options under the Security tab of Firefox's options.

Guesswork & ideas

Until recently, urlclassifier3.sqlite could be deleted & wouldn't be recreated, but for some reason it now is, maybe since Firefox 8??. It comes in a 5MB, which I think is a pre-allocate strategy to avoid fragmentation of the SQLite database, I don't believe it downloads Safebrowsing data when the above 2 options are unticked. Probably need submit a bugzilla bug report to see if it can be resolved.
I actually thought urlclassifier3.sqlite was replaced by a new custom binary storage file designed to make it possible for Firefox Mobile to use Safebrowsing (due to limited storage/memory). Ideally the Safebrowsing datastore would be outside the Firefox profile, and accessible by the user account so multiple profiles could share it. Even better if there was one datastore for the whole computer, updated with the new Mozilla Update Service that is being developed to avoid UAC on Vista+ for silent updates.
There are many reasons to avoid creating unnecessary files (particularly large ones), the ones I can think of off the top of my head are:
  1. Takes up excess room on the HDD.
  2. Takes up extra space on capacity/speed limited Flash drives with portable Firefox profiles (and may slow down startup & browsing if the file is read in - hopefully not).
  3. Causes profile backups to be larger, therefore taking longer to backup/synchronise.

Solution

  1. Navigate to you Firefox profile (which can be opened from about:support).
  2. Make urlclassifier3.sqlite 0 bytes. Easiest way to do that in Windows is:
    1. delete urlclassifier3.sqlite
    2. create a blank text file, by right-clicking in folder, select New->Text Document
    3. rename New Text Document.txt to urlclassifier3.sqlite
  3. Make the urlclassifier3.sqlite file readonly
    ->Right-click on file, select Properties, tick Read-only & click OK
  4. Done!!!