可以编辑iPad的Host文件吗?

99

我觉得除非进行大量越狱,否则这似乎是不可能的,但编辑iPad(或任何iOS设备)的hosts文件是否有可能呢?


1
不经过越狱是无法实现的。一旦越狱成功,它将与任何其他的Unix/BSD系统一样。这只是我的假设,我之前还没有尝试过。 - Jasarien
1
想象一下,如果任何应用程序都可以更改主机名和其合法IP之间的关联。 - Jano
2
@jano 可能现在Mac App Store上的应用程序也存在这个问题。这是通过OSX要求输入密码才能编辑hosts文件来解决的,同时也可能是通过苹果的应用程序审核程序来解决的。 - Danyal Aytekin
4
@Jano:微软Windows现在允许这样做,而且不会出现任何问题。你只需要具有管理员权限即可。修改hosts文件的合法理由主要是为了在没有DNS服务器或处理VPN问题时访问特定内容。 - Josh Mouch
14个回答

57

之前的回答是正确的,但如果你想要实现将一个域名的HTTP流量重定向到另一个IP地址,有一种方法。

虽然这不是直接回答你的问题,但我已经在这里提出并回答了这个问题:

如何重定向iPad发起的HTTP请求?


52

不,你不能更改iPad的主机文件(未越狱),但可以通过解决方法达成目的。

这是我的情景:

  • Mac OS X,IP地址为192.168.2.1,运行一个Web应用程序
  • iPad,您想要测试Web应用程序的设备
  • Charles (适用于Mac),使您的iPad启用HTTP代理

我将通过iPad测试在Mac上运行的Web应用程序,但我无法直接访问它。

以下是解决方案:

  • 首先,请确保您的服务器和iPad在同一个本地网络中。
  • 然后,设置Charles代理,在菜单“Proxy > Proxy Settings...”中填写Port(通常是8888)并切换Enable transparent HTTP proxying开关。

enter image description here


  • 在iPad中设置代理设置。

enter image description here

现在您可以在iPad上访问您的Web应用程序。

当然,您也可以使用其他代理工具,如Linux中的SquidVarnish,或在Windows中使用fiddler


2
它并没有回答问题...但这是一个非常出色、易于实现、易于切换的解决方案,适用于大多数人想要编辑hosts文件的目的。 - Matt Kenefick
太棒了!干净易于实现的解决方案。我在工作站上使用Linux作为操作系统,所以我使用了Tinyproxy,代理与我的iPhone完美配合。谢谢你! - Edenshaw
由于安全问题,它在较新版本的iOS上无法正常工作,也许使用NodeJs模块filternet会更容易。 - vanduc1102
2
现在您可以在iPad上访问您的Web应用程序了 - 但是如何实现呢?如果我的应用程序只能在“myapp.dev.domain.com”上运行,那么iPad如何解析该名称呢?这就是主机文件发挥作用的地方,我猜这就是问题的关键所在。 - Greg Woods
@GregWoods 我有类似的配置,通过访问“myapp.env.domain.com”,这对我起作用了,但只是在我尝试了几次之后。 - RenaissanceProgrammer
@GregWoods 在 Mac 机器上会出现一个弹窗询问是否允许连接,选择允许,然后再次刷新移动设备,现在应该可以连接了。 - RenaissanceProgrammer

49

没有应用程序可以修改其自己沙盒内文档目录以外的文件。这是为了安全和方便安装/卸载而设计的。因此,只有越狱设备才能这样做。


1
仅在沙盒中,而不仅限于文档目录(参见iOS应用程序编程指南>应用程序运行时>文件系统)。 - Jano

7

我需要同样的功能,但越狱不行。一个解决方案是自己托管DNS服务器(MaraDNS),在iPad/手机的WiFi设置中添加自定义DNS服务器。

整个过程只花了我10分钟,而且它很有效!

1) 下载MaraDNS

2) 以管理员身份运行mkSecretTxt.exe

3) 修改mararc文件,我的是:

ipv4_bind_addresses = "put your public IP Here"
timestamp_type = 2
random_seed_file = "secret.txt"

csv2 = {}
csv2["Simple.Example.com."] = "example.configuration"

在与run_maradns.bat相同的文件夹中添加名为"example.configuration"的文件。

4) 编辑你的example.configuration文件:

Simple.Example.com. 10.10.13.13 ~

5) 禁用所有防火墙(方便起见)

6) 运行文件“run_maradns.bat

7) 不应该有任何错误。

8) 将您的DNS服务器添加到列表中,如此处所示:http://www.iphonehacks.com/2014/08/change-dns-iphone-ipad.html

9) 成功!


1
这里的每个答案都假设OP想要嗅探HTTP流量,而这是唯一一个真正关注欺骗DNS解析(如修改hosts文件)的答案。 - Filipe Pina

7
最简单的方法是使用XCode运行iPad模拟器,然后在主机系统的hosts文件(/etc/hosts)中添加一个条目,指向您的测试站点。

6
问题涉及设备而非模拟器。 - Janak Nirmal
5
尽管如此,@JanakNirmal的回答仍然很有帮助。 - Simon

6

是的,您可以编辑iPad的hosts文件,但需要获取越狱权限。一旦完成这个操作,下载Cydia(应用市场)并获取iFile。hosts文件位于“/etc/hosts”中。


4
我想你可以通过设置透明代理来实现,使用像Charles这样的工具并以此方式重定向流量。

4

我用于开发目的的解决方法:

  1. 创建你自己的代理服务器(一个选项是:Linux 上的 Squid)。
  2. 在 hosts 文件中设置你的域名。
  3. 在 IPAD/IPHONE 上设置代理服务器并使用你的 hosts。

不错的简单解决方案! - Adam Freeman

4

我知道这篇文章已经发布有一段时间了,但是在iOS 7.1中,有些事情发生了改变。

到目前为止,如果你正在开发一个应用程序,你必须拥有一个被苹果认可的有效SSL证书,否则你的iDevice上会出现错误信息。不能再使用自签名证书了。请看以下列表:

http://support.apple.com/kb/ht5012

此外,如果你在这里,这意味着你正在尝试使你的 iDevice(通过HTTPS服务器)解析名称,在测试或开发环境中。

除了使用 squid(很好的应用程序),你可以简单地运行一个非常基本的DNS服务器,如dnsmasq。它将使用你的hosts文件作为名称解析的第一行,所以,你基本上可以欺骗你的iDevice,在那里说www.blah.com是192.168.10.10。

配置文件只需要3到4行,甚至可以配置它的内部DHCP服务器。

以下是我的配置:

listen-address=192.168.10.35

domain-needed

bogus-priv

no-dhcp-interface=eth0

local=/localnet/

当然,你必须在你的iDevice上配置网络,以使用该DNS(在我的情况下是192.168.10.35),或者只需正确配置后就从该服务器开始使用DHCP。

此外,如果dnsmasq无法内部解析名称,则会使用你的常规DNS服务器(如8.8.8.8)来为你解析。非常简单、优雅,解决了我的iDevice应用程序内部安装问题。

顺便说一句,也解决了与普通macs(OS X)的许多名称解析问题。

现在,我的抱怨:该死的苹果。使设备变得安全不应该包括阉割操作系统或开发人员。


谢谢Carlos。我们使用Pulse Secure的移动VPN产品来连接测试服务器,但这些服务器在外部不可用。因此,如果我们想要测试新的PROD证书,我们需要使用iPad连接到安装了该证书的测试服务器,但同时使用www.prod......com的URL。目前为止,还没有找到解决这种情况的方法。 :0( - codeslapper

3
如果你可以自由选择主机名,那么你可以将你的主机添加到像dyndns.org这样的动态DNS服务中。然后你就可以依赖iPad的正常解析机制来解析地址。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接