【大前端】【Android】whistle配置Android手机代理脚本

devtools/2025/3/12 1:51:46/

Android配置whistle手机代理,为了避免频繁自己手动去WiFi代理输入私有IP地址,特地建了一个Python脚本来帮助一键配置好代理,解除代理。

原始配置流程手续:

  1. 需要打开http://127.0.0.1:8899/ 查看whistle的IP和端口号
  2. 需要打开手机WiFi代理,输入上述的IP和端口号
  3. 如果清除代理,需要再次打开WiFi代理,取消代理

现在的配置流程手续:

  1. 直接输入下述命令即可设置代理
    python proxy.py set
  2. 直接输入下述命令即可清除代理
python proxy.py clear

proxy.py文件代码如下,主要核心也就是用Python模拟发送adb命令去控制代理。省掉了自己打开WiFi输入IP地址的过程。 

python hljs">import subprocess
import re
import sysdef get_whistle_ip_port():try:# 获取 whistle 的状态输出result = subprocess.run(['w2', 'status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)output = result.stdout.decode('utf-8').strip()# 打印原始输出以便调试print("Whistle output:", output)# 使用正则表达式从输出中提取非127.0.0.1的IP地址和端口号ip_match = re.search(r'http://(?!127\.0\.0\.1)([\d.]+):(\d+)/', output)if ip_match:ip = ip_match.group(1)port = ip_match.group(2)return ip, portelse:print("Could not parse external IP and port from whistle output.")except Exception as e:print(f"Failed to get whistle config: {e}")return None, Nonedef set_android_wifi_proxy(ip, port):try:# 通过ADB连接设备并设置WiFi代理subprocess.run(['adb', 'shell', 'settings', 'put', 'global', 'http_proxy', f"{ip}:{port}"])print(f"Proxy set to {ip}:{port} successfully.")except Exception as e:print(f"Failed to set proxy on Android device: {e}")def clear_android_wifi_proxy():try:# 通过ADB连接设备并清除WiFi代理设置subprocess.run(['adb', 'shell', 'settings', 'put', 'global', 'http_proxy', ':0'])print("Proxy cleared successfully.")except Exception as e:print(f"Failed to clear proxy on Android device: {e}")def main(action):if action == 'set':ip, port = get_whistle_ip_port()if ip and port:set_android_wifi_proxy(ip, port)else:print("Could not retrieve whistle IP and port.")elif action == 'clear':clear_android_wifi_proxy()else:print("Invalid action. Use 'set' to set proxy or 'clear' to clear proxy.")if __name__ == "__main__":if len(sys.argv) != 2:print("Usage: python script.py [set|clear]")else:main(sys.argv[1])

python proxy.py set

运行之后,如下所示: 

python proxy.py clear

 


http://www.ppmy.cn/devtools/166425.html

相关文章

【由技及道】量子跃迁部署术:docker+jenkins+Harbor+SSH的十一维交付矩阵【人工智障AI2077的开发日志011】

摘要: SSH密钥对构建的十一维安全通道 Harbor镜像星门 错误吞噬者语法糖 在CI/CD的量子观测中实现熵减永动机,使容器在部署前保持开发与生产维度的叠加态 量子纠缠现状(技术背景) 在完成镜像构建的量子折叠后(构建过程详见前…

【GPT入门】第5课 思维链的提出与案例

【GPT入门】第5课 思维链的提出与案例 1. 思维链的提出2.思维链的应用3.思维链代码4. 增加请一步步思考的思维链提示 1. 思维链的提出 2.思维链的应用 针对复杂场景,AI回直接给出答案,可能是错误的 例如,题: **题一:…

MySQL数据库操作

目录 SQL语句 1、SQL的背景 2、SQL的概念 SQL的分类 SQL的书写规范 MySQL数据库 1、MySQL数据库的编码 (1)utf8和utf8mb4的区别 (2)MySQL的字符集 (3)MySQL默认编码为 latin1 ,如何更改…

Django 初始化导入数据详解

Django 初始化导入数据详解 在 Django 项目中,初始化数据导入是一个常见的需求,特别是在开发阶段或者部署新环境时,通常需要一些预置的数据来确保应用能够正常运行。Django 提供了一种高效的方法来加载初始化数据,即通过 fixture…

【GPT入门】第12课 FunctionCall 生成数据库sql代码

【GPT入门】第12课 FunctionCall 生成数据库sql代码 1.概述2. 代码3.执行结果 1.概述 如下代码的任务:自然语言问ai,自动生成sql并回答用户 实现思路: 步骤1. ai会把用户的问题,转为sql 步骤2. 程序执行sql 步骤3.把执行的sql结果&#xff…

p5.js:sound(音乐)可视化,动画显示音频高低变化

本文通过4个案例介绍了使用 p5.js 进行音乐可视化的实践,包括将音频振幅转化为图形、生成波形图。 承上一篇:vite:初学 p5.js demo 画圆圈 cd p5-demo copy .\node_modules\p5\lib\p5.min.js . copy .\node_modules\p5\lib\addons\p5.soun…

基于动态学习因子调整的改进粒子群算法在电动汽车充电站规划中的应用研究,附完整代码

Ⅰ、改进动态学习因子的粒子群算法 (1)速度更新公式 粒子群的速度更新遵循以下公式: V ( t 1 ) w ( t ) ⋅ V ( t ) c 1 ⋅ r 1 ⋅ ( P B e s t − X ( t ) ) c 2 ⋅ r 2 ⋅ ( G B e s t − X ( t ) ) V(t1) w(t) \cdot V(t) c_1 \cd…

Process-based Self-Rewarding Language Models 论文简介

基于过程的自奖励语言模型:LLM优化的新范式 引言 大型语言模型(LLM)在多种任务中展现出了强大的能力,尤其是在使用人工标注的偏好数据进行训练时。然而,传统的自奖励范式在数学推理任务中存在局限性,甚至…