Opened 12 months ago

Last modified 12 months ago

#23888 new enhancement

Creating a Snowflake WebExtension addon

Reported by: oarel Owned by:
Priority: Medium Milestone:
Component: Obfuscation/Snowflake Version:
Severity: Normal Keywords:
Cc: oarel@…, dcf, arlolra Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

The idea is to create a WebExtension that allows one to become a Snowflake bridge by just installing it. That way it only suffices to install an extension and forget about it, unlike the approach of keeping a tab always open with the snowflake JS code.

Since it's based on WebExtensions it can be easily deployed for other browsers in their addon store.

I did try to make one myself but I don't have the expertise and time to debug all the problems that resulted. One of the important take aways that I learned in that process was that automatically loading scripts from external sites is prohibited and will result in the addon not passing the review in the addon store, so the snowflake.js and modernizr.js should be embedded with the addon. However, this would require modifying snowflake.js since when it's loaded locally it throws some typeError and doesn't show that there's some connection to snowflake.bamsoftware.com in the browser console. For debugging, to verify that the addon works as intended one may load it from about:debug and check about:networking in the DNS and WebSockets part.

For the implementation these resources should be loaded in the background to ensure a permanent state with this in the manifest.json,

"background": {
                "page": "pages/Snowflake.html"
        },

Child Tickets

Change History (1)

comment:1 Changed 12 months ago by arlolra

Cc: dcf arlolra added; dcf@… arlo@… removed

Thanks for your effort here. We've been discussing something like this in #20813

There's a fairly successful browser extension that's in the process (hopefully) of being converted to use snowflake in,
https://github.com/glamrock/cupcake/issues/24

Note: See TracTickets for help on using tickets.