Xndroid

Project Url: XndroidDev/Xndroid
Introduction: A proxy software for Android based on XX-Net and fqrouter.
More: Author   ReportBugs   
Tags:
Auto-Proxy-

A proxy tool for Android based on XX-Net and fqrouter.

最新测试版

稳定版 1.3.2

稳定版 1.2.6

Android 端代工具, 基于 fqrouter.

默认集成 XX-Net, 安装后无需额外配置即可使用. XX-Net 需要使用 ipv6, Xndroid 已内置 teredo 客户端, 默认使用 teredo 访问 ipv6, 无需额外配置. 如果你的网络支持原生 ipv6, 可尝试在启动设置中勾选ipv6 可用时禁用 teredo. 需要注意是许多地区原生 ipv6 封锁较严重, 此时使用 teredo 隧道效果可能更好. 另外不同网络环境, 封锁情况差别很大, 通常来说, 手机网络环境比宽带网络环境好.

鉴于目前网络环境, 如果内置 XX-Net 无法正常使用, 请在 fqrouter 管理页中添加个人代理(如 Shadowsocks).

默认集成的 XX-Net 不是使用 socket 转发, 会存在证书问题, 一些 APP 中可能会无法正常联网. 要解决此问题, 请在 fqrouter 管理页中添加个人代理(如 Shadowsocks)并删除默认的 XX-Net 代理HTTP 127.0.0.1:8087.

特性

  • 集成 XX-Net 3.13.1(版本号可自动更新)
  • 集成 fqrouter, 实现全局代理及指定应用代理
  • 为 fqrouter 添加 teredo 支持
  • 自动调用证书安装器安装证书(如果已经设置过图案解锁,却要求输入凭证,先清除屏幕锁即可), root 后可导入为系统证书
  • 监听电量, 网络, 休眠状态, 自动调整 XX-Net 最大扫描线程数
  • 集成 LightningBrowser 4.5.1, 关闭证书警告

兼容性与局限性

  • 目前不支持 X86 架构.
  • Android 4.0 以下系统不支持 VpnService, 暂不能使用本应用.
  • Android 7.0 及以上可能出现导入证书后仍然不被信任的情况. 建议在 chrome, firefox(须在浏览器中导入证书), 或可忽略证书警告的浏览器(如:内置 LightningBrowser, X 浏览器)中使用. 如果 root 了, 就可以导入为系统证书, 默认被信任.
  • 注意一些 APP(如 Twitter, Facebook 等)由于不信任 GAE 的证书,可能无法正常访问网络, 建议在浏览器中使用.

共享代理网络

fqrouter 提供了多种网络共享功能, root 后可使用更多功能. 注意如果用到了 GAE 代理, 则目标设备上也需安装证书

  • HTTP 代理, 如果目标设备支持 http 代理且在同一局域网下, 就可使用此项功能共享代理网络. 可使用 fqrouter 的 2516 端口(需先在 fqrouter 开启HTTP 代理)
  • 如果以 root 模式启动, 可使用 Android 的网络共享功能, 如: 便携式热点, USB 共享网络(一些手机上可能导致死机), 蓝牙共享网络
  • 如果以 root 模式启动, 可使用 fqrouter 的 Pick&Play 功能 , 通过类似于 中间人攻击 的手法时局域网中其他设备走 fqrouter 的代理
  • 如果以 root 模式启动, 部分手机可以使用 fqrouter 的 wifi-repeat(无线中继) 功能, 其它设备连上即可自由浏览. 注意 fqrouter 早已停止维护此功能, 无法保证此功能在所有手机上都可以, 并且不会尝试增强此功能的兼容性

直连白名单

fqrouter 已内置大量国内域名列表和国内 ip 段, 对绝大部分国内网站的访问会直连. 你也可以在/sdcard/domain_whitelist.txt(若不存在新建即可)中添加自定义的需要直连的域名, 每行一个, 如:

github.com
githubusercontent.com
githubapp.com
ftchinese.com
ted.com
tedcdn.com
howcast.com

注意 Android6.0 及以上必须授予存储空间(访问媒体文件)的权限. 如果仍然不能满足需求, 可以在 fqrouter 的配置代理中关闭优先使用个人代理, 并开启直连可以直连的服务器

更新 XX-NET

在 XX-Net 管理页中点击相应更新按钮即可. Xndroid 更新时也会更新自带的 XX-Net.

修改 XX-NET 配置

一般无需也不建议手动修改 XX-NET 配置文件. 如特殊情况需要修改, root 用户可直接修改相关文件, 其位于/data/data/net.xndroid/files/xndroid_files/xxnet/; 非 root 用户可以下载 XX-NET zip 压缩包, 将其解压, 并修改或添加相应文件再压缩回 zip, 点击菜单中的离线更新 XX-NET, 选择修改的 zip 文件即可.

关于编译

编译使用 AndroidStudio, 并在 AndroidStudio 中安装相应 SDK, 如 API Level 23. 由于 VPN 模式下需使用 JNI, 故还需在 AndroidStuio 中安装 NDK. NDK 版本不要太高, 否则不支持 armeabi 指令集. 此外, LightningBrowser 编译还需要在 AndroidStudio 中安装 API Level 26 及 Kotlin 插件. 编译前,在源码顶层目录(Unix 环境)下执行./fqrouter_prebulid.sh. 其会将 fqrouter 使用 gz 压缩到app/src/main/res/raw/fqrouter. 下载 XX-Net 源码, 将android_start.py复制到 XX-Net 源码顶级目录, 然后使用 gz 压缩到app/src/main/res/raw/xxnet.

# 编译器前进行以下操作
# 进入源码目录
cd "Xndroid_source_path"
# 压缩 fqrouter
./fqrouter_prebulid.sh
# 下载 XX-Net 到临时目录
mkdir xxnet_tmp
version=3.12.2
wget -O xxnet_tmp/xxnet.zip https://github.com/XX-net/XX-Net/archive/${version}.zip
unzip xxnet_tmp/xxnet.zip -d xxnet_tmp
cp android_start.py xxnet_tmp/XX-Net-${version}
# 移除不必要的文件
rm -r xxnet_tmp/XX-Net-${version}/code/default/gae_proxy/server
mv xxnet_tmp/XX-Net-${version}/code/default/python27/1.0 xxnet_tmp/XX-Net-${version}/code/default/python27/0
mkdir -p xxnet_tmp/XX-Net-${version}/code/default/python27/1.0/lib
cp -r xxnet_tmp/XX-Net-${version}/code/default/python27/0/lib/noarch xxnet_tmp/XX-Net-${version}/code/default/python27/1.0/lib/
rm -r xxnet_tmp/XX-Net-${version}/code/default/python27/0
# 更改版本号
mv xxnet_tmp/XX-Net-${version}/code/default xxnet_tmp/XX-Net-${version}/code/${version}
echo ${version} > xxnet_tmp/XX-Net-${version}/code/version.txt
# 压缩 XX-Net
mv xxnet_tmp/XX-Net-${version} xxnet_tmp/xxnet
tar -czf app/src/main/res/raw/xxnet xxnet_tmp/xxnet
rm -r xxnet_tmp

感谢以下开源项目

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools