ignoramous
ignoramous Thanks. I hope you don't mean "proxifier app" as an insult (:
Certainly not ;-) Thank you for making Rethink, I believe it's very useful for many people.
ignoramous Yeah, so we implemented this with VpnService.Builder.setHttpProxy API but we then implemented our own "proxy layer" because that settings does nothing! The apps have to basically read the set HTTP proxy, and redirect their queries through it. Most popular browsers (like Chrome and Firefox) do so, but that doesn't mean every other app does it.
You are correct of course, but this behavior happens to be what I want.
So to explain why I want this weird thing:
On my previous device without GrapheneOS, I ran a proxy server locally on the phone, and use adb to set my global http proxy to it. The proxy server has complex logic in it to decide whether to forward the request to a remote proxy, or to make the request locally, and crucially the DNS resolution must be in the same place as the request: that is, if the request is to be made locally, the its IP address must be resolved using the local DNS server. This means the proxy server must do the resolution itself, which in turn means the app must be actively using the proxy, instead of passively being hijacked to do so.
If I want to achieve the same effect with a proxifier app like Rethink, I will have to port all the upstream selection logic into the proxifier app.
As for some apps not respecting system proxy settings, I simply avoided those and found alternatives.
Now, with GrapheneOS, I use separate profiles, and only want to apply my proxy settings in certain profiles. This means I cannot use adb anymore, since that applies to the whole phone regardless of profile.
So far the only possible method I found is to use setHTTPProxy on a VPN. If you know any other methods, I'll highly appreciate it.