• 转: Android开发的网络抓包


    方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包记录到本地,再把抓到的.cap文件导到pc上面用wireshark来分析。这里步骤非常多,在和后台联调的时候,这个效率是非常低的。

    能不能在android上面启动抓包,然后直接在pc端看到实时抓包结果?

    有了adb调试桥,我们就可以做到这么便捷。

    一、准备工具:

    1、android 系统root
    
    2、android上安装tcpdump
    
    3、android上安装netcat,可以直接使用busybox的版本
    
    4、pc的wireshark的安装目录下需要有nc客户端
    
    5、把android手机和pc通过usb调试连接上

    二、命令:

    1、android上先执行:

    /data/tcpdump-arm -n -s 0 -w - | nc -l -p 11234

     * 11234是示例,端口可以自己定

    2、pc上启动adb forward:

    adb forward tcp:11234 tcp:11234 && nc64 127.0.0.1 11234 | wireshark -k -S -i -

     * 这里的11234要和前面启用11234要保持一致

    3、如果抓包成功,那么pc端的wireshark是自动启动的,并且可以看到网络包

    三、实现原理:

    关键的逻辑在adb forward这个命令,这个命令实现了端口映射的功能:

    Forwarding Ports
    You can use the forward command to set up arbitrary port forwarding — forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:
    
    adb forward tcp:6100 tcp:7100
    You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:
    
    adb forward tcp:6100 local:logd 
  • 相关阅读:
    Android 架构:Android Jetpack 架构组件的学习和分析
    Android 看源码学 Binder
    Android Okhttp 源码分析(待完成)
    Android Glide 源码分析系列(待完成)
    界面2
    使用spring 4.0 + maven 构建超简单的web项目
    maven中跳过单元测试
    Hibernate+maven+eclipse 实现自动建表
    android开发学习---开发一个简易的短信发送器
    java面试题--实现一个百亿的计算器
  • 原文地址:https://www.cnblogs.com/jhj117/p/5775314.html
Copyright © 2020-2023  润新知