Torifies your iOS / macOS device running iOS 15 or macOS 11 and newer.
Find links to official releases, beta tests etc. here: https://orbot.app/download
Provides a "VPN" which tunnels all your device network traffic through Tor.
- Supports Obfs4 and Snowflake bridges, fully configurable.
- Supports Onion v3 service authentication.
- Supports Tor's
EntryNodes
,ExitNodes
,ExcludeNodes
andStrictNodes
options. - Tor 0.4.8.10
- OpenSSL 3.2.0
- Lyrebird 0.1.0 (Obfs4proxy)
- Snowflake 2.8.0
- MacOS Sonoma or later
- Xcode 15 or later
- Homebrew
brew install cocoapods bartycrouch fastlane rustup-init automake autoconf libtool gettext
rustup-init -y
rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios aarch64-apple-darwin x86_64-apple-darwin
cargo install cbindgen
git clone git@github.com:guardianproject/orbot-apple.git
cd orbot-apple
git submodule update --init --recursive
pod update
leaf-ffi-orbot/build-leaf.sh
open Orbot.xcworkspace
Configure your code signing credentials in Config.xcconfig
!
You will need to manually create App IDs, a group ID, and profiles.
Network Extensions can only run on real devices, not in the simulator.
Localization is done with BartyCrouch, licensed under MIT.
Just add new NSLocalizedStrings
calls to the code. After a build, they will
automatically show up in Localizable.strings
.
Don't use storyboard and xib file localization. That just messes up everything. Localize these by explicit calls in the code.
Orbot registers to handle the scheme orbot
and associates the domain https://orbot.app.
Using the associated domain is preferred, as it protects against other apps trying
to hijack the orbot
scheme and it provides a nice fallback for users who don't
have Orbot installed, yet.
The following URIs are available to interact with Orbot from other apps:
-
https://orbot.app/rc/show
ORorbot:show
Will just start the Orbot app. -
https://orbot.app/rc/start
ORorbot:start
Will start the Network Extension, if not already started. (NOTE: There's no "stop" for security reasons!) -
https://orbot.app/rc/show/settings
ORorbot:show/settings
Will show theSettingsViewController
, where users can edit their Tor configuration. -
https://orbot.app/rc/show/bridges
ORorbot:show/bridges
Will show theBridgeConfViewController
, where users can change their bridge configuration. -
https://orbot.app/rc/show/auth
ORorbot:show/auth
Will show theAuthViewController
, where users can edit their v3 onion service authentication tokens. -
https://orbot.app/rc/add/auth?url=http%3A%2F%2Fexample23472834zasd.onion&key=12345678examplekey12345678
ORorbot:add/auth?url=http%3A%2F%2Fexample23472834zasd.onion&key=12345678examplekey12345678
Will show theAuthViewController
, which will display a prefilled "Add" dialog. The user can then add that auth key. You don't need to provide all pieces. E.g. for the URL the second-level domain would be enough. Orbot will do its best to sanitize the arguments.
You can call these URIs like this:
UIApplication.shared.open(URL(string: "https://orbot.app/rc/start")!)
- leaf, licensed under Apache 2.0
- Tor.framework, licensed under MIT
- IPtProxyUI, licensed under MIT
- ReachabilitySwift, licensed under MIT
- Eureka, licensed under MIT
These people helped with translations. Thank you so much, folks!
-
French: yahoe.001, Guirlandia
-
Russian: ViktorOnlin, ktchr, Ifti, Pihjun, ZiPERR, anm, dianazryn, foxing29, keelzhanke, neocaching, sloncocs, userNameIsBoris, emedvedev, ktchr
-
Spanish: Fabiola.mauriceh, Aetheria, Fitoschido, Maria_Jose, NorwegianFox, cacu, kodachi, lenazun, m_rey, nosense, strel, supermigue2000, vareli, zakooch, Elos, antonela_, arielbarbosa, emmapeel
-
Ukrainian: Kataphan, Herenko, MykolaBubelich, Pihjun, gr3ttle, lyubomyr
-
Arabic: AboShanab, BNasr, Bild96, Hujairi, Israel.K, LU_er, MissPeace, Souffex, ahmedessamdev, nouribram, zer0x, mada19
-
Croatian: paranatox, tomislav.capan, milotype
-
Spanish (Cuba) raulitopatry, kata91
-
Portuguese (Brazil) Bk__13, CRCF, CypherZnnb, MarvinSilc, cauan_zorzenon, darkcrystal, eduaddadbr, leovasone, rdd15, shazaum, vic.toria, vmattos, Communia, nopum
Figma template used to create rounded MacOS icons: https://www.figma.com/community/file/857303226040719059
- Change the reference to Tor in the Podfile to
Tor/Onionmasq
and use the:git
master or download into another directory and reference that. Runpod update
after that. - Change the key
NSExtensionPrincipalClass
from$(PRODUCT_MODULE_NAME).LeafPTProvider
to$(PRODUCT_MODULE_NAME).OnionmasqPTProvider
inTorVPN/Info.plist
and/orTorVPN Mac/Info.plist
. - Configure your code signing credentials in
Config.xcconfig
.
=> You should be good to go.
Look out for USE_ONIONMASQ
references in the code: there you'll find the
special handling necessary for Onionmasq.
NOTE: No bridge support, yet! iOS 50 MB memory limit might crash Onionmasq. There's no limit on macOS.
https://tordev.guardianproject.info
Benjamin Erhart, Die Netzarchitekten e.U.
Under the authority of Guardian Project with friendly support from The Tor Project.
Licensed under MIT.
Artwork taken from Orbot Android, licensed under BSD-3.