题 列出来自android手机的HTTP请求


我想要的是能够看到我的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连接(我在属性中启用了此选项)。


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


11
2018-03-12 13:53


起源




答案:


我终于明白了,得到了我感兴趣的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- 查看你的 网络连接 然后右键单击它,选择属性。现在转到 共享标签,启用与他人共享您的连接。现在在手机上查找wifi网络并选择您的网络名称并输入密码。 (用手机连接到互联网):

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

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


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


8
2018-03-13 23:11



你会想要接受这个答案,以便将来的用户可以查看。这在技术上与我的答案相同,但使用不同的网络拓扑,这很好,你已经彻底解释了所以没有难过的感觉。 - ara.hayrabedian


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

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

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

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

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

对于大多数设备(我估计Android 4.0以上),代理可以设置如下:

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

8
2018-03-12 14:11



为什么选择downvote? - Ellis
只是为了确认。这仍然适用于2017年。谢谢。这应该是其易用性和最小设置的公认答案。 - rattanak


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

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

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

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


2
2018-03-12 16:14



很好的回应,但我似乎无法将手机连接到我的电脑。连接一直说明它正在识别东西.. - Nicky Smits


这将是最容易使用的 http://www.wireshark.org/ 和/或 http://www.tcpdump.org/ 在手机上捕获数据包(但需要手机根源)或手机连接到网络的点。

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

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

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

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

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

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

1
2018-03-12 14:56



Ellis建议的Charles Web调试代理看起来不错但是我不认为Android手机上有可以更改的WiFi代理设置吗?在那儿?我很可能错了,并欢迎被纠正。谢谢! (p.s.抱歉,我无法评论其他答案 - 没有声誉:-P) - gaoithe
我在WiFi中看到WiFi代理设置 - 长按连接 - 修改 - 高级BUT可能只适用于浏览器。 “对于您添加的每个Wi-Fi网络,您都可以通过代理连接。代理设置由Chrome使用,但其他应用可能无法使用。” support.google.com/nexus/answer/2819519?hl=en - gaoithe
我使用了Charles Proxy和Galaxy S4 - 它肯定代理了所有应用程序的流量(我使用它的原因是回归测试另一个应用程序)。事实上,如果代理仍然在手机上设置但Charles没有运行,您将收到“无法连接”消息。此外,是的,您应该在Wi-Fi代理设置中添加。 - Ellis
谢谢埃利斯。这非常清楚。我在手机上看到了那些确切的设置。很高兴知道你可以设置这样的代理。您还可以将其指向您在网络中的PC上运行的代理,并在此时监控URL。 - gaoithe
“你也可以将它指向你在网络中运行的代理服务器并在那时监控网址” - 这不是我在使用Charles时所建议的吗?或者您是在谈论使用双网卡的更多基于硬件的解决方案? - Ellis


得到一台带有两个网卡的计算机,一方面设置互联网,另一方面连接路由器的WAN(或只是局域网),如果你做得正确,启用互联网连接共享并使用名为wireshark的应用程序。我假设如果你想查看HTTP请求,你的技术足以设置它:)

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

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


0
2018-03-12 14:10



@NickySmits另外,我刚刚意识到,您不应该拥有一台带有2个NIC的计算机,您可以设置代理服务器并将手机设置为使用您网络上的计算机进行代理,并将其连线。但是,需要注意的是,我不知道(正如其他人指出的那样)Android应用程序有多强烈地遵守代理设置。 - ara.hayrabedian
嘿,谢谢你的评论。我找到了解决方案并回答了问题,以便其他人也可以使用它。我没有在我的手机上设置代理,我连接到我的电脑,它提出了所有的请求。这听起来像是代理,但手机将其视为无线网络。 - Nicky Smits