概述

有时候要抓取手机 APP 内的数据包,但是手机配置过于麻烦,所以选择使用安卓模拟器来进行调试。

开始

ADB 下载

蓝叠官网下载

蓝叠离线版下载

配置Adb环境

  • 下载并解压ADB工具包到任意位置。

  • 将ADB工具包的路径添加到系统环境变量 Path 中,方便在任意位置使用ADB命令。

启用蓝叠 ABD

  • 打开蓝叠模拟器,进入设置。

  • 在 设置——高级 中启用ADB开关,记下显示的地址(如127.0.0.1:5555)。

蓝叠开启 Android 调试

保存好后重启模拟器。

连接ADB到蓝叠

启动模拟器后,在命令提示符(cmd)中输入以下命令连接ADB:

adb connect localhost:[port]

替换 [port] 为前面记下的端口号。

连接成功后,使用以下命令查看连接状态:

adb devices

使用以下命令进入设备的ADB环境:

adb -s localhost:[port] shell

配置网络代理

连接成功后,可以通过ADB命令配置网络代理。注意,错误配置可能导致无法联网。

修改为指定代理

使用以下命令配置代理

settings put global http_proxy [ip]:[port]

特别注意

这里的ip既不是127.0.0.1也不是ifconfig查得的任何一个ip,但与10.0.2.15有关

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:253 errors:0 dropped:0 overruns:0 frame:0
          TX packets:253 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14092 TX bytes:14092

dummy0    Link encap:Ethernet  HWaddr d2:01:84:61:82:e9
          inet6 addr: fe80::1869:4000:1e65:82e9/64 Scope: Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:5538

eth0      Link encap:Ethernet  HWaddr 08:00:27:0e:38:b3  Driver virtio_net
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::1869:4000:1e65:4f4c/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:343 errors:0 dropped:0 overruns:0 frame:0
          TX packets:913 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:42997 TX bytes:74632

ip分析

1. lo(本地回环接口)
  • 作用:本地回环接口,用于本机内部通信。

  • 关键信息

    • IPv4 地址:127.0.0.1(标准回环地址)。

    • IPv6 地址:::1/128(IPv6 回环地址)。

    • 状态:UP(已启用)、RUNNING(活动状态)。

  • 用途:用于模拟器内部的进程间通信(如 App 访问本地服务)。

2. eth0(主网络接口)
  • 作用:虚拟以太网接口,模拟器与主机通信的主要通道。

  • 关键信息

    • IPv4 地址10.0.2.15(子网掩码 255.255.255.0)。

    • IPv6 地址fe80::...(链路本地地址)。

    • 驱动virtio_net(虚拟化网络驱动)。

    • 状态UPBROADCASTRUNNINGMULTICAST

    • 数据统计:接收(RX)和发送(TX)包数量正常,无丢包。

  • 用途

    • 模拟器通过 NAT 模式连接到主机网络。

    • 10.0.2.15 是 Android 模拟器的经典私有 IP(类似 VirtualBox/QEMU 的默认 NAT 网络配置)。

    • 主机通过虚拟路由器(通常 10.0.2.2)与模拟器通信。

3. dummy0(虚拟以太网接口)
  • 作用:用于测试或占位的虚拟接口。

  • 关键信息

    • IPv6 地址:fe80::...(链路本地地址)。

    • 状态:UPBROADCASTRUNNINGNOARP

    • 数据统计:少量发送包(TX packets:29)。

  • 用途:可能是系统或应用创建的占位接口,无实际外部通信功能。

网络配置总结
  1. NAT 模式

    • 模拟器通过 eth0 使用 NAT 模式与主机通信。

    • 外部网络访问需通过端口转发(如 adb forward 或模拟器设置)。

    • 主机可通过 10.0.2.2 访问模拟器网关。

  2. IPv6 支持

    • 所有接口均配置了 IPv6 链路本地地址,但未启用全局 IPv6。

  3. 虚拟化网络架构

    • 使用 virtio_net 驱动,表明基于虚拟化技术(如 KVM/QEMU)的网络栈。

真正能访问主机的ip

蓝叠模拟器 中访问主机(Host)上的端口 8080,需使用主机的 NAT 网关 IP
10.0.2.2(模拟器内部默认路由到主机的地址)。

详细说明
  1. 为何是 10.0.2.2

    • 蓝叠模拟器默认使用 NAT 模式 的网络架构,其虚拟子网为 10.0.2.0/24

      • 模拟器自身 IP:10.0.2.15(通过 eth0)。

      • 主机(Host)的网关 IP:10.0.2.2(模拟器访问主机的固定地址)。

      • 虚拟路由器:10.0.2.1(模拟器的默认网关)。

  2. 访问方式

    • 在模拟器内,通过 10.0.2.2:8080 访问主机上的服务(如 HTTP 代理、本地开发服务器等)。

    • 例如:在浏览器输入 http://10.0.2.2:8080

验证与注意事项
  1. 确保主机服务已监听端口

    • 主机需运行服务并绑定 0.0.0.0:8080(允许外部访问),而非 127.0.0.1:8080(仅限本机)。

    • 检查命令(Windows/Linux/macOS 通用):

      netstat -an | grep 8080  # Linux/macOS
      netstat -ano | findstr 8080  # Windows
  2. 关闭主机防火墙或开放端口

    • 若主机防火墙拦截连接,需放行 8080 端口的入站流量。

  3. 特殊情况:桥接模式

    • 若蓝叠配置为桥接网络(直接使用主机局域网 IP),则需用主机实际局域网 IP(如 192.168.x.x)。

    • 但默认情况下蓝叠为 NAT 模式,优先使用 10.0.2.2

常见场景
  • 代理工具(Charles/Fiddler):在模拟器中配置代理服务器地址为 10.0.2.2:8080

  • 本地开发调试:运行在主机 8080 端口的后端 API,模拟器通过 10.0.2.2:8080 调用。

如果仍无法访问,请检查主机服务日志或使用 telnet 10.0.2.2 8080(模拟器内执行)测试连通性。

恢复默认代理

如果需要恢复默认代理,使用以下命令

settings put global http_proxy :0

确认代理IP地址

代理的IP地址应为本机IP。可以通过以下命令查看本机IP

ipconfig /all

找到对应的IPv4地址,即为本机IP

测试网络连接

在模拟器内置浏览器中打开任意网页,确认网络连接是否正常。如有问题,可尝试切换不同的代理IP地址。

退出ADB

exit

代理匹配规则

使用PROCESS-PATH-REGEX匹配路径C:\Program Files\BlueStacks_nxt_cn下的所有.exe

^C:\\Program Files\\BlueStacks_nxt_cn\\[^\\]+\.exe$

包含子目录的.exe

^C:\\Program Files\\BlueStacks_nxt_cn\\.*\.exe$

参考

蓝叠adb连接并配置网络代理 | 个人笔记