iPhone上是否存在主机文件?怎么改变呢?[关闭]


104

我正在开发查询服务器的应用程序。在我的Mac中,我使用hosts文件将dns更改为指向局域网中的本地服务器。

现在,我需要使用iPhone对其进行测试,问题是由于缺少dns配置,我的iPhone无法识别该服务器。

在Mac或Windows上,我只需192.168.0.20 http://www.google.com在主机文件中添加:。

现在如何让我的iPhone知道URL :http://www.google.com


越狱您的iPhone,下载iFile,浏览/etc/并打开hosts在文本查看器中调用的文件。现在您可以对其进行编辑。

使用OSX和Charles Web代理在iPhone上进行本地开发deployfx.com/2011/08/…– jfroom
2012年

1
OSX iOS模拟器并更新/ etc / hosts文件。
dmarvasti

或者:安装Bonjour(命令和apt-get安装的avahi守护进程的avahi-utils的),并通过访问hostname.local用iPhone / iPad
SASA托米斯拉夫Mataić

我很惊讶地没有看到这样的答案对我
Ryan

Answers:


37

这不会直接回答您的问题,但确实可以解决您的问题...

您有什么品牌的路由器?您的路由器固件可能允许您为本地网络设置DNS记录。这就是我对Tomato固件所做的


谢谢,这就是我为解决问题所要做的;)
Hoang Pham

除了使用pfsense之外,我也使用了这种方法。
2013年

它将如何工作,我也有同样的问题,我在Cisco
WRT

82

这里的另一个选择是通过代理连接您的iPhone。这是一个如何使用Fiddler进行操作的示例(非常简单):

http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

在这种情况下,iPhone进行的任何dns查找都将使用Fiddler正在运行的计算机的hosts文件。但是请注意,您必须使用将通过DNS解析的名称。example.local,例如,将不起作用。example.xyzexample.dev将会。


3
这是最简单的解决方案。我应该想到这个!
jimplode

1
太棒了 这为我工作了!
嗅探器

1
相同的东西在osx中​​效果很好,请在网络设置中设置HTTP代理i.imgur.com/h5zEm.png
antonj 2012年

2
使用OSX和Charles Web Proxy在iPhone上进行本地开发 deployfx.com/2011/08/...
jfroom

1
对于任何移动应用程序开发来说,这都是一个不错的工具-不仅仅用于DNS查找
JoshuaDavid 2012年

32

与编程无关,但我还是会回答。在/etc/hosts

您可以使用简单的文本编辑器(如)进行更改nano

(显然,您需要为此使用越狱的iphone)


3
您不能在普通iphone上使用nano来直接访问/ etc / hosts。我认为这是关于将要分发的应用程序,在这种情况下,您不会弄乱沙箱外部的文件。
Jaanus 2010年

@Jaanus:我当然是指越狱的iphone。他从来没有说过关于重新分发应用程序的任何事情。他只是提到他需要在有dns问题的iphone上对其进行测试。
Thomas Bonini 2010年

16
我不明白反对票。答案在技术上是正确的,并且写得很好。
Thomas Bonini 2010年

2
我将还原一些业力以进行编辑;如果使用否决票是因为隐含的 “用于分布式应用程序”,那么尽管我能理解它们,但我认为应该拒绝评论。
大卫说恢复莫妮卡(Monica)2010年

2
我认为他只需要更改hosts文件即可测试他的应用。一旦测试,就不需要更改主机文件。完全可以建议在这里越狱!
蒙格斯·庞

14

我刚刚成功编辑了iPhone的“主机”文件(在Jailbroken iOS 4.0上)。

  • 已安装的OpenSSH通过Cydia将到iPhone上
  • 使用SFTP客户端,例如FileZilla在计算机上,我已连接到iPhone
    • 地址:[使用您手机的IP地址或主机名,例如 simophone.local]
    • 用户名: root
    • 密码: alpine
  • 找到/etc/hosts文件
  • 在计算机上进行了备份(以防日后要还原所做的更改)
  • 在体面的文本编辑器(例如Notepad ++)中编辑了hosts文件。有关主机文件的说明,请参见此处
  • 上载更改,覆盖iPhone上的hosts文件

手机确实会缓存一些网页和DNS查询,因此重新启动或清除缓存可能会有所帮助。希望能对某人有所帮助。

西蒙


1
@Simon我遵循相同的步骤,但是没有用。然后,我尝试更改编码设置,并得到它!在保存之前,必须先在Notepad ++中将主机文件转换为ANSI。对于谁无法使主机文件工作;在“ 编码 ”菜单下,单击“ 转换为ANSI ” 。
trkaplan 2010年

2
您也可以使用Cydia的iFile应用程序来编辑设备上的主机文件,而无需使用计算机。Ad @ m
kirb 2011年

2
..并将默认密码从alpine更改为其他密码!
Tieme,2012年

7

它可能存在,但您不能在未越狱的iPhone上进行更改。

假设您的开发Web服务器在Mac上,为什么不简单使用其Bonjour名称(例如MyMac.local.)代替myrealwebserverontheinternet.com


所有的Web服务都存在于我的LAN网络中的服务器中。我有一个域名,我也想将我的域名映射到该服务器。想象某人为您提供了所有Web服务的地址,他要求您使用该地址查询这些服务,他可以向您展示如何将主机文件添加到Mac,Windows,而不是iphone:-s
Hoang Pham

6

如果其他人落入该页面,您也可以通过使用URL请求中的IP地址而不是域来解决此问题:

NSURL *myURL = [NSURL URLWithString:@"http://10.0.0.2/mypage.php"];

然后,您手动指定主机:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL];
[request setAllHTTPHeaderFields:[NSDictionary dictionaryWithObjectAndKeys:@"myserver",@"Host"]];

就服务器而言,它的行为与您使用过的服务器完全相同 http://myserver/mypage.php,只是iPhone不必进行DNS查找。

100%公开API。


2
但是,这仅适用于第一个请求,如果mypage.php对myserver进行了其他任何请求,则该应用程序将不会进行转换。
htafoya 2014年

如果您不打算使用cookie,则此方法很好。
DUzun 2014年

没事 这也不起作用。我们正在使用SSL固定,因此域不匹配将其弄乱了:'017-07-13 10:21:42.244723-0400 ApperName [1015:449748] libMobileGestalt MobileGestaltSupport.m:153:pid 1015(ApperName)没有沙箱访问权限frZQaeyWLUvLjeuEK43hmg,并且未正确命名为2017-07-13 10:21:42.244886-0400 UnionBank [1015:449748] libMobileGestalt MobileGestalt.c:550:无法访问InverseDeviceID(请参阅<rdar:// problem / 11744455>)”
代码slapper

5

不要在电话上更改DNS。而是使用wifi连接到本地网络,一切就绪。

在我的办公室,我们有内部DNS不公开的内部服务器。我只是用iPhone连接到办公室wifi,然后可以正常访问它们。

YMMV,但我没有配置电话DNS,而是觉得只设置本地内部DNS和wifi是一种更干净,更轻松的解决方案。


1

不,iPhone应用程序只能在自己的小沙箱中更改内容。(甚至有些事情是您无法即时更改的。)

最好的选择可能是使用服务器的IP地址而不是主机名。如果您只需要解析一个地址,则要难一些,但要难一些,就是在Mac上放置一个DNS服务器并配置iPhone以使用该地址。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.