iCepa / Tor.framework

Tor framework for the iCepa project
Other
245 stars 53 forks source link

How to Integrate Tor with WKWebView #87

Open tobitech opened 10 months ago

tobitech commented 10 months ago

Hello, can someone please point me to documentation/code samples or reference on how to route all WKWebView requests through Tor Network. I have experience building iOS Applications but I'm new to Tor network and framework.

The example provided in the ReadMe file shows how to integrate Tor with URLSession but I'm not sure how to integrate Tor with WKWebView requests.

tladesignz commented 10 months ago

You are sooo lucky! Fresh out of the oven: https://github.com/OnionBrowser/OnionBrowser/blob/3.X/OnionBrowser/Browsing/Tab.swift#L479-L490

tobitech commented 10 months ago

@tladesignz Thanks for sharing. Seems this is only supported on iOS 17. I'm targeting iOS 14.

tladesignz commented 10 months ago

You've got 3 options:

  1. Target iOS 17, use the provided proxy interface.

Be aware: Audio/video won't be tunnelled through Tor, because that is traditionally handled with another library in its own process. Users will also leak their real IP address through WebRTC. (Check browserleaks.com)

  1. Use a Network Extension (aka. "VPN" in the UI) like Orbot does.

This will route the whole device traffic, unless you find a means to tag your packets. (Which I couldn't think of, because you don't have access to the WKWebView networking stack.)

On top, going into Network Extensions will open a whole new world of pain for you: Shitty debugging possibilities, 50 MB memory limit (only from iOS 15, iOS 14 has 15 MB, which surely isn't enough to run Tor), an awful process to get this pushed past Apple etc, etc.

  1. Find an awesome, new, clever, undocumented and unhindered (by Apple's code analysis) way to do it.

(Please, please tell me, when you found that!)