安卓模拟PC浏览器发送http请求

本文介绍了如何使用android-async-http和xutils3库来实现Android应用中的网络请求操作,并展示了如何设置UserAgent以模拟PC访问。

使用android-async-http设置Header解决不了就用xutils3,用xutils3不行就用android-async-http,反正哪个能用就用哪个。

compile 'com.loopj.android:android-async-http:1.4.9'

网址:
https://github.com/loopj/android-async-http

AsyncHttpClient client = new AsyncHttpClient();
        //设置USerAgent模拟PC访问
        client.setUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows 7)");
        client.get(url, new TextHttpResponseHandler() {
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
            }
        });
使用 Wireshark 抓取安卓模拟器中发出的网络请求,核心思路是:**将安卓模拟器的网络流量引导到主机网络接口上,然后用 Wireshark 捕获该接口的数据包**。 由于安卓模拟器(如 Android Studio 的 AVD、夜神、雷电、MuMu 等)通常运行在虚拟机或基于虚拟化技术构建,其网络通信会通过主机的虚拟网卡进行转发。我们可以通过抓取这些虚拟网卡上的流量来分析安卓应用发出的 HTTP/HTTPS 请求。 --- ### ✅ 步骤详解:以 **夜神模拟器(Nox) + Wireshark + Windows 主机** 为例 #### 1. 安装并配置工具 - 下载安装 [Wireshark](https://www.wireshark.org/) - 安装安卓模拟器(例如:夜神模拟器) - 确保模拟器可以正常联网 > 注意:某些模拟器(如夜神)默认使用自己的网络模式(如 NAT),需要确认其使用的虚拟网卡。 --- #### 2. 找出模拟器使用的网络接口 大多数安卓模拟器使用如下方式之一: - 使用 **VirtualBox** 虚拟机(如夜神、BlueStacks 旧版) - 使用 **Hyper-V / WHPX**(如雷电4+、Android Studio 的 AVD) ##### 方法一:查看 VirtualBox 的虚拟网卡(适用于基于 VirtualBox 的模拟器) 1. 打开“控制面板” → “网络和共享中心” → “更改适配器设置” 2. 查找名为类似: - `VirtualBox Host-Only Network` - `VirtualBox Bridged Networking Driver` - 或带有模拟器名称的网卡(如 NoxNet) > 夜神模拟器通常创建一个叫 `Nox Network (Intel AMT NIC Link)` 或类似的虚拟网卡。 ##### 方法二:使用命令行查找 IP 地址对应接口 在 CMD 中执行: ```bash ipconfig ``` 找到模拟器使用的虚拟网卡及其子网(比如 `192.168.57.x`)。 你也可以在模拟器中打开浏览器访问 [http://httpbin.org/ip](http://httpbin.org/ip),看返回的是哪个 IP 段。 --- #### 3. 配置 Wireshark 抓包 1. 打开 Wireshark 2. 在主界面选择刚才识别出的虚拟网卡(如 `Nox Network` 或 `VirtualBox Host-Only Ethernet Adapter`) 3. 双击开始抓包 --- #### 4. 过滤目标流量 抓包后,在顶部过滤栏输入以下过滤表达式: ##### 抓所有 HTTP 请求 ```text http.request ``` ##### 抓特定域名的请求 ```text http.host contains "example.com" ``` ##### 抓某个 IP 的流量 ```text ip.addr == 192.168.57.101 ``` (假设模拟器 IP 是 192.168.57.101) ##### 抓 HTTPS 流量(端口 443) ```text tcp.port == 443 ``` > ⚠️ HTTPS 内容加密,默认看不到明文内容。若需解密 HTTPS,见下文说明。 --- #### 5. 示例:获取模拟器中的 HTTP 请求 URL 和参数 当你在模拟器里打开一个网页或 App 发起请求时,Wireshark 会显示数据包。 右键点击一个 HTTP 包 → “Follow” → “HTTP Stream”,可以看到完整的请求头和路径,例如: ``` GET /api/user?id=123 HTTP/1.1 Host: api.example.com User-Agent: Dalvik/2.1.0 ... ``` --- ### 🔐 如何解密 HTTPS 流量?(高级) 要看到 HTTPS 明文内容,有几种方法: #### 方法 A:导出并配置预主密钥日志文件(推荐用于 Android 7+) 1. 设置环境变量: ```bash set SSLKEYLOGFILE=C:\temp\sslkey.log ``` 2. 启动 Chrome 或 Electron 应用(支持此功能的应用) 3. 在 Wireshark 中:`Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename` 设置为上述路径 4. 重启应用并抓包,Wireshark 就能自动解密 TLS 流量 ⚠️ 但注意:**安卓模拟器中的 App 默认不写这个日志**,除非你修改系统或使用 Xposed 模块注入。 #### 方法 B:使用代理中间人(MITM)——更实用! 推荐使用 **Fiddler / Charles Proxy / mitmproxy** ##### 推荐方案:使用 `mitmproxy` + 模拟器安装证书 ```bash # 安装 mitmproxy pip install mitmproxy # 启动代理 mitmproxy -p 8080 ``` 然后: 1. 在模拟器中设置代理: - WiFi 设置 → 长按当前网络 → 修改网络 → 高级 → 代理 → 手动 - 主机名:`10.0.2.2`(指向宿主机,如果是 AVD) 或你的电脑局域网 IP(如 `192.168.1.100`) - 端口:`8080` 2. 在模拟浏览器访问 `http://mitm.it` 下载并安装 mitmproxy 证书 3. 开启 App,所有 HTTP/HTTPS 请求都会出现在 mitmproxy 界面中(清晰可读) > 💡 优点:比 Wireshark 更容易查看结构化请求(JSON、Header、Body等) --- ### 🧪 补充:不同模拟器的特殊处理 | 模拟器 | 网络特点 | 建议 | |--------|----------|------| | Android Studio AVD | 使用 `10.0.2.2` 访问主机 | 抓 `Loopback` 或 `VirtualBox` 网卡 | | 夜神模拟器 | 自建虚拟网卡 | 抓 `Nox Network` 接口 | | 雷电模拟器 v3 | 基于 VirtualBox | 抓 VirtualBox 网卡 | | 雷电 v4/v5 | Hyper-V | 抓 `WSL` 或 `Hyper-V` 虚拟交换机 | --- ### ✅ 总结流程 1. 确定模拟器所用虚拟网卡(通过 ipconfig) 2. 使用 Wireshark 抓取该网卡流量 3. 使用显示过滤器定位 HTTP/HTTPS 请求 4. (可选)配合 mitmproxy 解密 HTTPS 并查看明文内容 --- ### 相关问题示例 ```text GET /login?user=admin HTTP/1.1 Host: myapp.local User-Agent: okhttp/4.9.3 ``` 这类请求都可以被成功捕获。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值