Open Source Privacy Enhancing iOS Web Browser: Onion Browser

ID N0WHERE:140837
Type n0where
Reporter N0where
Modified 2016-12-08T01:57:21


Open Source Privacy Enhancing iOS Web Browser

Onion Browser is a free web browser for iPhone and iPad that encrypts and tunnels web traffic through the Tor network , with extra features to help you browse the internet privately.

Features & Benefits

  • Internet access is tunneled through the Tor network
    • Websites do not see your real IP address.
    • ISPs and insecure wireless networks cannot see your browsing.
    • Access websites, even behind some types of internet filters and censors.
    • View .onion websites: the “ dark net ” of hidden sites only accessible using Tor.
  • Fight online tracking: use a new IP address and clear your cookies/history/cache by pressing one button.
  • Block third party cookies or all cookies.
  • Ability to change cookie storage policy (Allow All / Block Third Party / Block All)
  • Disable scripts and multimedia content that can be used to track you.
  • Can send the “Do Not Track” HTTP header (DNT: 1) to websites.

The app, when compiled, contains static library versions of Tor and it’s dependencies, libevent and openssl .

The build scripts for Tor and other dependencies are based on from x2on/OpenSSL-for-iPhone . The scripts are configured to compile universal binaries for armv7 and i386 (for the iOS Simulator).

Because iOS applications cannot launch subprocesses or otherwise execute other binaries, the tor client is run in-process in a NSThread subclass which executes the tor_main() function (as an external tor executable would) and attempts to safely wrap Tor within the app. ( libor.a and libtor.a , intermediate binaries created when compiling Tor, are used to provide Tor.) Side-effects of this method have not yet been fully evaluated. Management of most tor functionality (status checks, reloading tor on connection changes) is handled by accessing the Tor control port in an internal, telnet-like session from the AppDelegate .

The app uses a NSURLProtocol subclass ( ProxyURLProtocol ), registered to handle HTTP/HTTPS requests. That protocol uses the CKHTTPConnection class which nearly matches the NSURLConnection class, providing wrappers and access to the underlying CFHTTP Core Framework connection bits. This connection class is where SOCKS5 connectivity is enabled. (Because we are using SOCKS5, DNS requests are sent over the Tor network, as well.)

Open Source Privacy Enhancing iOS Web Browser: Onion Browser Download