[tor-talk] Tor implementation in JavaScript / FirefoxOS

Nathan Freitas nathan at freitas.net
Thu Mar 20 12:54:33 UTC 2014

On 03/20/2014 08:33 AM, Aymeric Vitte wrote:
> As Andreas wrote, there is the node-Tor [1] project, it's implementing
> the OP and OR inside browsers, as well as on any js platform like node.
> It's fully working, it does implement some other protocols on top of the
> Tor protocol used for example for Peersm project [2], it is used too for
> the Peersm clients and Websocket bridges [3], it can of course connect
> to the Tor Websocket bridges (flash proxy), it implements whatever
> necessary Tor, SSL/TLS, ws, socks, etc in js, ORDB1 to 3 are live in the
> Tor network.

Impressive work!

> The target of Peersm is to have the peers (ie browsers) implement the
> Tor nodes using WebRTC.
> So the Onion proxy is inside the browser, then the question is: how can
> I browse things with the OR inside the browser? You can easily fetch
> things connecting to a Tor or Peersm bridge via Websosckets but how to
> browse?

If today, I wanted to build an HTML5/JS/REST app, say something like
Globaleaks or Crypto.cat, that had note-Tor built into it, that should
work fairly easily then? Both of these apps make single JSON-type HTTP
connections to a single server, so the need for general purpose
web-browsing is not necessary.

> The idea is of course to get rid of the traditional SOCKS proxy, whose
> configuration can be a bit painfull for some and depends on the
> platform, this was the concept of [4], but definitely too much
> complicate and not very user friendly for something that is implemented
> inside browsers, then supposedly easy to use.

Yes, agreed, and on mobile devices the option for proxying seems to be
never there by default, at least as part of the browser app.

> So the question remains, you should have a means to say "I am loading
> http://www.example.com, direct all the requests that this page is
> loading as you would do it using SOCKS to one of the x circuits I have
> established with the Tor network"
> This might look quite strange, but maybe something like
> createObjectURL('example.com html code', reference to the transport
> supporting my Tor circuits (ws, webrtc))

The issue will be (and I am sure there are many more) that when your
Gecko/WebView container loads up the page you request, all subsequent
requests for content for embedded images, js, etc will also need to be
routed over this new API, and all standard HTTP connections blocked.

It is pretty exciting to see that Tor now has viable implementations in
C, Java and Javascript.


More information about the tor-talk mailing list