MobileShadowSocks
Shadowsocks Client for Jailbroken iOS Devices
By Linus Yang
Features
- Fast: Light-weight proxy protocol by @clowwindy.
- Secure: Support plenty of ciphers, including AES, Blowfish and Camellia.
- Efficient: Proxy services are triggered on demand.
- User-friendly: Easy to set and use. Built-in auto-proxy feature.
- Per-App Proxy Support: Enable or disable proxy app by app. (Support by extra plugin)
- QR Code Support: Share your profiles easily via QR Code.
- Universal: System-wide proxy for either Wi-Fi or cellular network.
- All-in-one: No extra dependency. No Cydia Substrate stuff (except plugins :P).
- Compatibility: All iDevices with iOS 3.0 and above (Some features need iOS 5 or above).
Installation
- Open Cydia.app and refresh sources
- Search the package named ShadowSocks and install it
- That's it!
Note: Latest packages are also available here for manual installation.
Usage
- After installation, you will find a icon named Shadow on your device.
- Launch the app and set up server information and proxy settings.
- Tap to turn on the first "Enable Proxy" switch.
- That's all folks!
FAQ
1. Can I exit the Shadow app completely after turning on the switch?
Yes, you can. This app is only for setting proxy options. The real shadowsocks services will start up on demand in the background.
2. How can I disable the proxy?
Just open the Shadow app again and switch off "Enable Proxy".
3. Is the proxy still available when network status is changed, or even device is rebooted?
Yes, it is always available if the proxy settings are enabled. The icon badge of Shadow.app will also show "On" to indicate that proxy is available.
4. Is the shadowsocks daemon always running in the background and consuming my battery?
No. The daemon uses the "On Demand" mechanism of launchd
, which means it is battery-friendly. It starts up only when receiving proxy requests. So, don't worry for battery life, just leave it there. :)
5. I cannot find any proxy settings in Settings. Is the proxy actually enabled? And where are the proxy settings?
The proxy settings are indeed set successfully if you don't see any alert views when turning on the switch. Sometimes they just don't show in the Settings (or wrongly show in the proxy for VPN). For advanced users, try scutil --proxy
to check proxy status in terminal.
6. My device uses iOS 5.x and has installed the app from Cydia. But why does it show an earlier version in the about?
The version in Cydia has removed the support for iOS 5.x and fall back to a legacy version. Please try to find the iOS 5.x compatible builds with new functions in the Releases section.
Credits
- Shadowsocks project created by @clowwindy
- Based on Shadowsocks-libev from @madeye
- App icon by @madeye from Shadowsocks Android (Too lazy to draw one by myself :P)
- QR Code encoding and decoding by ZXingObjC
- Force proxying Chrome on iOS 8 via proxychains
Development
Prerequisites
- Xcode
Note: You need to first quit Xcode completely and disable force code-sign of iOS SDK as follows:
SDKFILE="$(xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist"
sudo /usr/libexec/PlistBuddy -c "Set :DefaultProperties:CODE_SIGNING_REQUIRED NO" "$SDKFILE"
sudo /usr/bin/plutil -convert binary1 "$SDKFILE"
- Code-signing certificate named iPhone Developer (either self-signed or official is OK)
Build
Use the following command to download the project and build the main app:
git clone --recursive https://github.com/linusyang/MobileShadowSocks.git
cd MobileShadowSocks
ln -s /opt/theos perapp-plugin/theos
make
All built Debian packages will be generated under release
folder in the project directory.
License
Licensed under GPLv3.