
Size
11.24 MB
Android
5.0+
Downloads
86
Architecture
arm64-v8a, armeabi-v7a
Security Scan
Verified Safe
✓ Scanned with ClamAV, APKiD, and Quark-Engine
Screenshots

What's New
Changes:
- UI
- Save mechanism
- Rewrote the tun2proxy library loading architecture. Google's protection and my favorite "static analyzer" can sleep soundly now. It turned out to be an interesting case; I hope backward compatibility didn’t break after this.
- Thanks for the feedback.
Description
Unofficial Android client and graphical wrapper for the opera-proxy utility by Snawoot.
Old package name: com.example.operaproxy.
The app lets you use Opera VPN infrastructure as a local VPN or a local proxy on an Android device, without needing to install the Opera browser. All traffic, or traffic from selected apps, is routed through Opera’s servers. The app is designed for maximum simplicity with one-tap startup. You do not need a command-line shell, terminal emulators such as Termux, or complex configuration.
✨ Features
- This is NOT a VPN! The VPN wrapper is needed for selective app proxying without root access.
- It is not a 100% bypass tool for whitelists; results may vary.
- UI tooltips are implemented. To get help for a switch, press and hold it!
- No-root operation: uses the system VpnService API to intercept traffic. It also uses aggressive component-loading methods such as dlopen with RTLD_NOW.
- Region selection: quickly switch between Europe (EU), Asia (AS), and America (AM) servers.
- Split tunneling: choose specific apps to route through the proxy while leaving the rest on the direct network.
- Proxy Only mode: starts a local server (HTTP/SOCKS5) without creating a local VPN tunnel. You must manually open Wi-Fi settings and set the IP:PORT for the local proxy. Try 0.0.0.0:8080.
- Live logs: built-in console for viewing connection logs and debugging in real time.
- TCP only: only TCP traffic is supported. UDP is not supported by Opera’s servers. This means voice calls in messengers, online games that use UDP, and QUIC/HTTP3 traffic will not work through this proxy.
- Quick settings tile: you can configure a tile for fast app start and stop. The tile is not available on Android 6 and below.
- Start and Stop shortcuts for the VPN wrapper when long-pressing the shortcut.
- Uses aggressive direct permission requests, not intent-based ones, for background operation: android.permission.FOREGROUND_SERVICE, FOREGROUND_SERVICE_DATA_SYNC, and WAKE_LOCK. It also requests battery optimization exemption via REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. QUERY_ALL_PACKAGES is the main trigger for many dangerous signatures and is used to filter apps in the local VPN. It is not allowed in Google Play apps without justification. Manually entering package names is more fun anyway, isn’t it, instead of selecting from a UI list of all packages, including system ones?
- Displays tunnel speed in KB/s.
- Battery optimization and VPN permission requests can be accessed from the main screen via the menu in the top-right corner.
- More DNS servers — why limit yourself to 1 or 3?
- This manual is now always with you...
🚀 Advanced settings
For experienced users, an Advanced Settings mode is available for fine-tuning proxy behavior:
- Proxy Only Mode: if enabled, the VPN service is not started. Only the local proxy server is launched at the specified address.
- Bind Address: sets the local interface and port (default 127.0.0.1:1080). Port settings always apply in both VPN and proxy modes.
- SOCKS Mode: switches the local port protocol from HTTP to SOCKS5.
- Fake SNI: replaces the SNI (Server Name Indication) during the TLS handshake to bypass DPI blocks. You can enter the name of a site that still opens during blocks, without http, https, or www. See ByeByeDPI for more details.
- Upstream Proxy: routes Opera Proxy traffic through another proxy (chain proxy). Supported schemes: socks5://, http://. For example, you can run ByeByeDPI in Proxy mode with a different port than the wrapper uses. Most apps communicate over SOCKS5, so the address will usually look like socks5://127.0.0.1:1080. You can use any other tool that works in Proxy mode.
- Bootstrap DNS: a list of DoH/DoT resolvers for the initial connection to Opera servers. Example lists are available in the AdGuard KB.
- Test URL: the URL used for benchmarking and selecting the fastest server during connection. You can choose any URL that returns 200.
- Verbosity Level: sets the level of log detail. Wrapper and tun2proxy activity are grouped under Wrapper (App Only).
- LogCat TAG: slyf0xproxywrapper
💻 Manual mode (Manual CMD Mode)
- Enable manual mode: when this switch is enabled, the app ignores all graphical settings (region, SNI, DNS, and so on).
- CMD Preview / Override: a text field where you can enter any available startup arguments for the opera-proxy binary.
- Automation: the path to the binary is inserted automatically by the app and does not need to be entered manually.
Tun2Proxy DNS (DNS handling in the tunnel)
Configure how DNS requests passing through the VPN interface are handled:
- Virtual (Fake-IP): returns virtual IPs from the 198.18.x.x range. This is the fastest method, but it may be incompatible with some apps.
- Over TCP (Default): encapsulates DNS requests in TCP and sends them through the proxy. This provides maximum stability.
- Direct: DNS requests go directly, bypassing the proxy. This may cause DNS leaks, but it is useful if TCP DNS is blocked.
📖 How to use
1. Start: open the app.
2. Choose a region: select the desired region (Europe, Asia, or America).
3. Apps: tap "Select apps" if you want only specific apps to go through the VPN, such as Telegram or a browser. If the list is empty, the entire device is proxied.
4. Launch: tap the large "Start proxy" button.
5. Logs: monitor connection status in the log window at the bottom of the screen.
📜 Flags for the opera-proxy binary
- api-address: String — override the IP address of api2.sec-tunnel.com
- api-client-type: String — client type reported to the SurfEasy API (default "se0316")
- api-client-version: String — client version reported to the SurfEasy API (default "Stable 114.0.5282.21")
- api-login: String — SurfEasy API login (default "se0316")
- api-password: String — SurfEasy API password (default "SILrMEPBmJuhomxWkfm3JalqHX2Eheg1YhlEZiMh8II")
- api-proxy: String — additional proxy server used to access the SurfEasy API
- api-user-agent: String — user agent reported to the SurfEasy API (default "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0")
- bind-address: String — proxy listen address (default "127.0.0.1:18080")
- bootstrap-dns: String — comma-separated list of DNS/DoH/DoT resolvers for initial discovery of the SurfEasy API address; supported schemes: dns://, https://, tls://, tcp://. Examples: https://1.1.1.1/dns-query, tls://9.9.9.9:853
- cafile: String — use a custom CA certificate bundle file
- config: String — read configuration from file with space-separated keys and values
- country: String — desired proxy location (default "EU")
- dp-export: - — export configuration for dumbproxy
- fake-SNI: String — domain name to use as SNI in communications with servers
- init-retries: Number — number of attempts for initialization steps; zero means unlimited retry
- init-retry-interval: Duration — delay between initialization retries (default 5s)
- list-countries: - — list available countries and exit
- list-proxies: - — output the proxy list and exit
- override-proxy-address: String — use a fixed proxy address instead of the server address returned by the SurfEasy API
- proxy: String — sets the base proxy used for all dial-outs; format: <http|https|socks5|socks5h>://[login:password@]host[:port]. Examples: http://user:password@192.168.1.1:3128, socks5://10.0.0.1:1080
- refresh: Duration — login refresh interval (default 4h0m0s)
- refresh-retry: Duration — login refresh retry interval (default 5s)
- server-selection: Enum — server selection policy (first/random/fastest) (default fastest)
- server-selection-dl-limit: Number — restrict amount of downloaded data per connection by fastest server selection
- server-selection-test-url: String — URL used for the download benchmark by the fastest server selection policy (default https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js)
- server-selection-timeout: Duration — timeout given for the server selection function to produce result (default 30s)
- timeout: Duration — timeout for network operations (default 10s)
- verbosity: Number — logging verbosity (10 debug, 20 info, 30 warning, 40 error, 50 critical) (default 20)
- version: - — show program version and exit
- socks-mode: - — listen for SOCKS requests instead of HTTP
📜 For LogCat debugging
- Linux: adb logcat | grep -i -E "slyf0xproxywrapper|tun2proxy|com.slyf0x.proxywrapper|com."
- Windows: adb logcat | findstr /I /R "slyf0xproxywrapper tun2proxy com\\.slyf0x\\.proxywrapper com\\."
⚠️ Disclaimer
This app is a third-party development and is not affiliated with Opera Norway AS. Use it at your own risk. The app is a graphical wrapper with logic for loading and interacting with open-source tools. It uses “dangerous and obsolete component-loading methods” under Google’s rules for backward compatibility. You have been warned.
- AS IS distribution: the app is distributed "as is." The developer is not responsible for possible failures or consequences of use.
- Development: the wrapper is improved and maintained as far as possible.
- No commercial use: any use of this app, its source code, derivative works, or integrations for commercial purposes, profit, or paid services is strictly prohibited by the license.
- Open source and modifications: the app’s code is open. You may modify it, extend it, or create your own versions, subject to the following strict conditions:
- You must clearly preserve the attribution to SLY-F0X opera-proxy-android-wrapper, include a link to the original source repository, and credit the authors of the integrated components: Snawoot (opera-proxy) and the Tun2Proxy project.
- Any modified versions must be distributed under the same non-commercial terms. No in-app requests for donations to the project.
- If you deploy a modified version online for other users, even for free, you must provide them access to your modified source code.
CREDITS
- Original opera-proxy by Snawoot. Repository and source code removed. MIT license.
- Tun2Proxy: tun2proxy/tun2proxy, MIT license.
- opera-proxy-android-wrapper by SLY-F0X, CC BY-NC-SA 4.0 and modified MIT. Any commercial use for profit or paid services is forbidden.
Rate this app