Android 手机使用 PC 代理上网的方法
本文最后更新于 2024年2月29日 凌晨
在一些特殊的情况下,可能需要使用 Android 手机或者 PC 的线路访问外部网络资源,同时没有条件连接 wifi 网络,这时候可以使用 Android Platform Tools 的 adb 工具来达到目的。
Android Platform Tools 的下载地址为:
https://developer.android.com/tools/releases/platform-tools#downloads
Android 手机使用 PC 的代理上网的方法
用 USB 数据线连接 Android 手机和 PC,在 PC 中执行下面的命令
adb shell settings put global http_proxy 127.0.0.1:7890
adb reverse tcp:7890 tcp:7890
首先设置 Android 手机 http 全局代理为 127.0.0.1:7890,然后将手机的 127.0.0.1:7890 转发到 PC 127.0.0.1:7890 (没有找到设置 Android 系统全局使用 socks5 代理的方法)
设置 Android 全局代理需要 android.permission.WRITE_SECURE_SETTINGS 权限,ColorOS 需要在开发者选项中开启 「禁止权限监控」具体方法可以参考:在 ColorOS 上免 root 玩机,请先打开这个开关,如果是小米手机可能需要在开发者选项中打开 「USB调试(安全设置)」,我没有小米手机未测试。
如果需要恢复Android 无代理状态,需要使用下面的命令,一定要记得执行这条恢复命令,否则手机可能无法联网。
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
执行 adb reverse
命令后,可以使用 adb reverse --list
查看连接建立情况:
UsbFfs tcp:7890 tcp:7890
不需要使用时,可以使用 adb reverse --remove
移除转发
adb reverse --remove tcp:7890
参考 adb 的帮助,执行命令 adb help
reverse --list list all reverse socket connections from device
reverse [--no-rebind] REMOTE LOCAL
reverse socket connection using:
tcp:<port> (<remote> may be "tcp:0" to pick any open port)
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
reverse --remove REMOTE remove specific reverse socket connection
reverse --remove-all remove all reverse socket connections from device
PC 使用 Android 手机代理上网的方法
首先在手机上开启 socks5 代理 127.0.0.1:9999, 然后用 USB 数据线连接 Android 手机和 PC,在 PC 中执行下面的命令
adb forward tcp:7890 tcp:9999
这样会把 PC 127.0.0.1:7890 转发到手机 127.0.0.1:9999
使用 adb forward --list
查看连接建立情况
94e22910 tcp:7890 tcp:9999
不需要使用时,可以使用 adb forward --remove
移除转发
adb forward --remove tcp:7890
参考 adb 的帮助,执行命令 adb help
forward --list list all forward socket connections
forward [--no-rebind] LOCAL REMOTE
forward socket connection using:
tcp:<port> (<local> may be "tcp:0" to pick any open port)
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
vsock:<CID>:<port> (remote only)
acceptfd:<fd> (listen only)
forward --remove LOCAL remove specific forward socket connection
forward --remove-all remove all forward socket connections
参考资料
[1] 在 ColorOS 上免 root 玩机,请先打开这个开关 - 克莱德 2021.06.08
https://sspai.com/post/67110
[2] 在 Android 手机上的使用 stunnel - zz 2021.2.24
https://www.usmacd.com/cn/android_stunnel/