列出来自android手机的HTTP请求

时间:2014-03-12 13:53:22

标签: android http url proxy request

我想要的是能够看到我的Galaxy S4产生的HTTP请求。我想构建一个Web应用程序,并希望使用某些应用程序中使用的API。我确信有一个HTTP请求,我想尽可能多地捕获,但至少是URL。

到目前为止,我尝试过几件事:

  1. Look for Android apps that capture HTTP requests。到目前为止,我发现了一些应该可以做我需要的东西的应用程序。但它们都需要root访问权限,我不想根我的手机。

  2. Look for Windows applications that tether my wifi signal, which means every request is ported through my computer.到目前为止,我已尝试过1个应用MyPublicWIFI,并尝试使用netsh start hostednetwork。该应用程序没有显示任何URL,现在它甚至没有共享我的wifi信号。我尝试在CMD中设置的托管网络不共享wifi连接(我在属性中启用了此选项)。


  3. 我需要一种方法来做到这一点。有没有办法通过我的计算机移植请求来获取URL?

5 个答案:

答案 0 :(得分:8)

Charles Web Debugging Proxy可以让你做你想做的事。它是一个在Windows,OS X和Linux上运行的HTTP代理应用程序。

您需要将手机和计算机连接到同一个LAN,并调整手机的Wi-Fi设置以使用代理,使用端口8888将其指向计算机的IP地址。然后,将所有网络流量转至/从您的手机将通过您的计算机旅行,并在查尔斯可见。

您将能够看到任何HTTP请求和响应(URL,标题,正文等)的完整详细信息,唯一的限制是加密流量,但通过在手机上安装Charles SSL certificate,您可以访问这也是。

由于这只是一个HTTP代理,因此不需要root设备。

我能看到的唯一缺点是它是许可软件(单个用户许可证为50美元),但“免费试用版”不会过期 - 应用程序在打开30分钟后关闭,如果我记得的话正确。

对于大多数设备(我猜测的是Android 4.0以上),代理可以像这样设置:

  1. 转到Wi-Fi设置
  2. 长按所需的网络
  3. 选择“修改网络”
  4. 选中“显示高级选项”
  5. 设置
    • 代理:手动
    • 代理主机名:{您计算机的IP地址}
    • 代理端口:8888
  6. 保存

答案 1 :(得分:8)

我终于明白了,并获得了我感兴趣的API。只需几个简单的步骤即可完成:将您的互联网连接到手机上将手机连接到新创建的无线ad-hoc网络使wireshark捕获您的请求

对于网络共享,您必须设置无线网络,以便手机可以连接到它。您可以使用CMD执行此操作,并在Windows中查看网络连接。您可能还必须打开设备管理器才能进行故障排除。我会一步一步地指导你完成它


1- 在管理员模式下启动CMD,以便它具有所需的所有权限。然后键入以下代码(尝试启动我们的托管网络):

netsh wlan set hostednetwork mode=allow ssid=networkname key=networkpass
netsh wlan start hostednetwork

如果有效,请继续执行第2步。否则,您需要进行一些故障排除。可悲的是,没有一种简单的方法可以做到这一点。首先查看您的网络连接,找到您的wifi,右键单击并禁用它。然后转到设备管理器,转到网络适配器,并卸载其中包含虚拟的所有内容,这些是虚拟主机,这些都是您的CMD请求失败。你可以再次启用你的wifi。现在等几分钟,然后再尝试第一部分。如果仍然无法正常工作,请重新启动电脑,然后重复此步骤。这似乎很麻烦,而且确实是这样,但这是我发现它的唯一方法。

2- 查看您的网络连接并右键单击它,选择属性。现在转到共享标签,启用与他人共享您的连接。现在在手机上查找无线网络并选择您的网络名称并输入您的密码。(使用手机连接到互联网):

您现在应该可以使用手机浏览互联网了。如果没有,我不知道该怎么办。首先尝试使用浏览器检查您的互联网连接,因为某些应用在此设置中被阻止。这是出于安全原因(您不希望有人突袭您的银行应用程序)。

3- 下载wireshark,安装它,开始捕获。现在,在手机上创建要跟踪的请求。然后停止捕捉。您现在可以单击协议,安排所有请求,您只需要检查HTTP协议。您可以在右侧看到网址。(检查HTTP请求)


摘要:我们将手机连接到PC以使用互联网。 PC向外部服务器发出所有请求,并将结果发送回手机。电脑的请求(因此无论是电脑本身还是电话)都可以通过wireshark查看。

答案 2 :(得分:2)

实际上。 。 。 使用USB 反向网络共享为手机提供网络和在PC上运行wireshark可能是最简单的方法。 看这里: http://foldingair.blogspot.ie/2013/11/debug-your-android-applications-by.html

  • 禁用手机上的移动和wifi网络。
  • 将手机连接到USB上的电脑。
  • 在电脑上启用互联网传递。
  • 在手机网络设置中启用USB网络共享。

我添加了一个单独的答案,因为我认为这是对这个问题最简单,也可能是最直接的答案。无需root电话/路由器或安装代理。

请注意我没有尝试过这个(因为我有root权限的组合或访问从网络路由器捕获),但它看起来像一个好方法。下次我发现自己root / router-less时我会尝试一下。 Windows的说明看起来比linux的说明容易。

答案 3 :(得分:1)

最简单的方法是使用http://www.wireshark.org/和/或http://www.tcpdump.org/来捕获手机上的数据包(但需要手机根源)或手机连接到网络的位置。

  1. 使用代理捕获 按照答案&#34中的建议设置代理;获取具有两个NIC的计算机"如果您的PC有两个NIC。使PC成为手机连接的互联网和无线之间的代理。运行wireshark。

  2. 在路由器上捕获 您还可以直接在wifi路由器上捕获数据包。你有控制路由器吗?路由器是否已具备任何记录/监控功能?你可以安装openwrt并在那时使用tcpdump进行数据包捕获吗?可能与支持电话的工作量相同。

  3. 在手机上捕捉 有根电话可以运行tcpdump。使用root电话,您还可以通过在/ etc / hosts中添加hosts条目或通过使iptables重写IP地址和/或端口来重定向请求。

  4. 您是否可以访问朋友的网络,他们已经捕获了流量并允许您获取捕获文件?

    以前的解决方案都是最干净的。如果您不能使用root电话/路由器并且没有备用NIC和无线路由器,您可以使用DNS服务器代理和http代理做一些hacky。我不建议去做这件事,但我认为有可能:

    • 安装DNS服务器。 将所有请求转发到常规DNS服务器。
    • 在DNS服务器上指定电话。 您应该能够看到查找DNS服务器的主机。
    • 安装一个http代理,用于记录和转发http请求(可能是apache)
    • 让您的DNS服务器转发您希望拦截到您的http代理的请求。
    • 捕获http代理上的网址

答案 4 :(得分:0)

获得一台带有两个网卡的计算机,一方面设置互联网,另一方面连接路由器的WAN(或只是LAN),如果你这样做,启用互联网连接共享和使用名为wireshark的应用程序。我假设如果你想查看HTTP请求,你就具备足够的技术来设置它:)

这将有助于HTTP,但不是HTTPS。

对于HTTPS,您必须设置透明代理并进行一些证书操作,我自己从未成功完成,但我知道这是可能的。