Snowflake
Overview
Snowflake is a pluggable transport that proxies traffic through temporary proxies using WebRTC, a peer-to-peer protocol with built-in NAT punching. It aims to work kind of like flash proxy, but without flash proxy's problems with NAT.
Work in progress.
User graph: https://metrics.torproject.org/userstats-bridge-transport.html?transport=snowflake.
Evaluation at PluggableTransports/SnowFlakeEvaluation.
欢迎测试 Tor 浏览器的新网桥 (目前仅支持 Mac OS X 与 Linux) (#22782 (closed) has been fixed, it needs to be retested now)
How to run a Snowflake proxy
Option 1 (addon)
Firstly make sure you have WebRTC enabled. Then you can install this addon for Firefox or this one for Chrome which will let you become a Snowflake proxy. It can also inform you about how many people you have helped in the last 24 hours.
Option 2 (web browser)
In a browser where WebRTC is enabled:
- Go to https://snowflake.torproject.org/embed and toggle the button to opt in to being a proxy. You shouldn't close that page if you want to remain a snowflake bridge.
Option 3 (standalone)
- First you will need to install and configure Go to build the standalone proxy-go code. If you are running Ubuntu or Debian, you can install Go by executing
apt install golang
. Otherwise visit https://golang.org/dl/. Once it is installed, set up your workspace and environment variables (more detailed instructions here: https://golang.org/doc/code.html#Workspaces).
mkdir -p ~/go/src
echo "export GOPATH=$HOME/go" >> ~/.bash_profile
source ~/.bash_profile
- Clone the source code the
src/
directory of your workspace.
cd $GOPATH/src
git clone https://git.torproject.org/pluggable-transports/snowflake.git
- Get the dependencies and build the source code.
cd snowflake
cd proxy
go get
go build
- For our fallback proxy-go instances on snowflake-broker, we manage proxy-go instances using runit. However, a simpler nohup command will also allow you to run an instance in the background.
nohup ./proxy &
Source code
https://gitweb.torproject.org/pluggable-transports/snowflake.git
The following should result in a 100% bootstrap over WebRTC:
git clone https://git.torproject.org/pluggable-transports/snowflake.git
cd snowflake/client
go get
go build
tor -f torrc
Integration with Tor Browser
Snowflake is included in alpha releases of Tor Browser.
Integration of Snowflake into stable Tor Browser is being tracked at ticket #19001 (closed).
To build from source code, see doc/TorBrowser/Hacking. In the tor-browser-build directory, make alpha
or make testbuild
will result in browsers with included Snowflake.
WebRTC fingerprintability
Notes at Snowflake/Fingerprinting.
Reporting bugs
If you encounter problems with Snowflake as a client or a proxy, please file a ticket using our bug tracker. To do so, you will have to create an account or log in using the shared cypherpunks account with password writecode.
Please try to be as descriptive as possible with your ticket and if possible include log messages that will help us reproduce the bug. Consider adding keywords snowflake-webextension
or snowflake-client
to let us know how which part of the Snowflake system is experiencing problems.