目录
引言
- frpc的核心作用:轻量级反向代理工具,实现内网穿透,解决无公网IP的访问难题。
- 文章目标:提供安卓远程安卓技术方案
- 俩部安卓手机(被控端和控制端)
- frp for android(开源地址):用于提供frp服务,也可以使用frp原生的
frp_0.62.1_android_arm64.tar.gz - Scrcpy安卓客户端(魇.无界投屏、易控):用于连接被控手机,与adb开放指定端口
- 乐青映射 LoCyanFrp:提供免费的frp服务
frpc基础概念与原理
- 内网穿透的定义:通过公网服务器中转,将内网服务暴露给外网访问。
- frp架构解析:
- frps(服务端):部署在公网服务器,负责流量转发。
- frpc(客户端):运行在内网设备(如安卓手机),注册服务到frps。
- 协议支持:TCP/UDP/HTTP/HTTPS,适用不同场景。
LoCyanFrp(可以使用任意frp服务)
-
进行注册与二级实名认证
-
开通隧道:这里使用stcp模式

-
复制配置

- 由于乐青面板是自动生成老版的int格式的配置文件,我们需要转换成最新的toml格式
-
原格式(int)
XML[common] server_addr = sg-1.lcf.im server_port = 2333 tcp_mux = true protocol = tcp user = ******** token = LoCyanToken dns_server = 223.6.6.6 tls_enable = false [adbStcpTTT] privilege_mode = true type = stcp local_ip = 127.0.0.1 local_port = 5555 secret_key = ******** -
转换后格式(int)
XMLloginFailExit = false serverAddr = "sg-1.lcf.im" serverPort = 2333 dnsServer = "223.6.6.6" user = "********" [auth] method = "token" token = "LoCyanToken" [transport] protocol = "tcp" tcpMux = true [transport.tls] enable = false [log] level = "debug" disablePrintColor = true [[proxies]] name = "adbStcpDome" type = "stcp" localIP = "127.0.0.1" localPort = 3389 secretKey = "********"
-
- 由于乐青面板是自动生成老版的int格式的配置文件,我们需要转换成最新的toml格式
被控安卓端部署步骤
1. 环境准备
- 安卓设备要求:开启USB调试(需处理后台保活,小米手机需要额外开启USB安全设置才可以模拟点击)。
- 下载frp for android
- 后台保活安卓系统限制处理:关闭电池优化、锁定后台任务。
2. 在控制机上使用adb远程连接被控安卓机器后使用:adb tcpip 5555 开启指定端口,由于我之前已经开启我就指定6666端口测试,下面附上截图
- 先使用adb connect 连接无线调试
- 连接成功后使用adb tcpip 5555开放5555端口或者任意你想指定的端口
3.被控机上开启frpc服务,使用我们之前转换的配置文件


4.开启服务:看到start proxy success字段就代表开启成功了

控制安卓端部署步骤
-
环境准备
- 安装:魇-无界.apk、frp for android.apk
-
进行frp配置,具体流程与被控端一致,配置文件内用不同而已
XMLloginFailExit = false serverAddr = 'sg-1.lcf.im' #frps服务器,与被控端一致 serverPort = 2333 #frps服务器端口,与被控端一致 dnsServer = "223.6.6.6" #dns服务器,与被控端一致 user = "********" #指定用户(拼接为user.name,name为使用的代理方式中的name,这里的是visitors中的name),与被控端一致 [auth] method = 'token' #与被控端一致 token = 'LoCyanToken' #与被控端一致 [transport] protocol = 'tcp' #与被控端一致 tcpMux = true #与被控端一致 [transport.tls] enable = false #与被控端一致 [log] level = 'info' disablePrintColor = true [[visitors]] bindAddr = '127.0.0.1' #绑定到本地上 bindPort = 5500 #绑定到本地那个端口,后面就使用哪个端口连接 name = 'H2dczikP' #随机名称即可 secretKey = '********' #与被控端的secretKey一致 serverName = 'adbStcpDome' #与被控端的name一致,我们之前使用的是adbStcpDome type = 'stcp' #连接模式,与被控端一致 -
使用魇-无界进行控制,或者使用易连(官方打包的apk需要激活,可以自己手动打包,我这边就偷懒使用一下无界进行控制,github上面有很多基于 Scrcpy开源项目魔改的安卓项目,也可以自行查找)


4.连接成功

注意事项
- user和secretKey注意保存
- 被控机注意s密码
- 连接方式最好选择stcp,端到端模式,使用普通tcp有概率被扫端口哦
