我很好奇,如果 Android 应用程序(我安装的任何应用程序)对某些在线服务器(例如 RESTful 服务)进行 API 调用,我将如何找出它所使用的 API URL。我想我必须在设备上捕获数据包并可能在 Wireshark 或其他工具中分析它们以找到 URL?我在 Java/Android 开发方面相当有能力,但在涉及任何类型的网络分析业务时有点迷茫。
原文由 derpyderp 发布,翻译遵循 CC BY-SA 4.0 许可协议
我很好奇,如果 Android 应用程序(我安装的任何应用程序)对某些在线服务器(例如 RESTful 服务)进行 API 调用,我将如何找出它所使用的 API URL。我想我必须在设备上捕获数据包并可能在 Wireshark 或其他工具中分析它们以找到 URL?我在 Java/Android 开发方面相当有能力,但在涉及任何类型的网络分析业务时有点迷茫。
原文由 derpyderp 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个非常快速的方法。
转到 PlayStore,搜索 Packet Capture
下载、安装并运行。
简单快捷。它将为您提供有关 API、URL 和响应及其标头的详细信息。
此应用程序遵循 数据包嗅探 的概念。因此,这可能不适用于 WhatsApp、Facebook、Twitter 等许多安全应用程序。
更新 1:
Playstore 中不再提供Packet Capture ,请尝试 OS Monitor
更新 2:
数据包捕获 再次可用。
原文由 reverie_ss 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答798 阅读✓ 已解决
2 回答2.1k 阅读
2 回答929 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答697 阅读✓ 已解决
2 回答793 阅读
2 回答761 阅读
您可以在 WireShark 的帮助下完成此操作。我在这里列出步骤
在您的计算机上安装 WireShark
现在我们必须创建 Android 虚拟设备 (AVD),所以我们将从官方网站下载 Android SDK。 Android SDK 自带模拟器进行测试
设置 Android SDK 后,创建一个 Android 虚拟设备 (AVD),我们将在其上安装应用程序
启动该虚拟设备。您可以使用命令行启动(
emulator @<AVD name>
)使用 adb 命令创建虚拟设备安装应用后
adb install app_file_name.apk
现在我们可以开始捕获数据包,所以我建议关闭您计算机上正在使用网络的其他应用程序,以便我们捕获的数据包更相关。
现在以 root 访问权限启动 wireshark
选择要抓取的界面,点击start开始抓取。
现在开始使用该应用程序,以便数据包来回传输,wireshark 将捕获它。
如果您使用的应用程序涵盖了所有类型的活动,那么您可以停止 wireshark 来捕获数据包。
现在开始主要业务仔细分析数据包,但并非所有数据包都对我们的工作有用。因此,让我们过滤与您相关的数据包。让你的IP地址是192.168.0.32然后过滤所有IP是这个的数据包。所以过滤器表达式将是
ip.addr==192.168.0.32
应用这个过滤器。我们仍然应用另一个过滤器来仅列出相关数据包,以便该应用程序可能正在使用 HTTP 协议访问 API,因此应用 HTTP 过滤器。表达式将是http
。您可以同时应用两个过滤器ip.addr==192.168.0.32 and http
按回车键应用。仔细查看列出的数据包的信息,您会看到很多重要的细节、API 密钥、cookie 等