O arquivo hosts existe no iPhone? Como mudar isso? [fechadas]


104

Estou desenvolvendo um aplicativo que consulta ao servidor. No meu Mac, eu uso o arquivo hosts para alterar o dns para apontar para um servidor local dentro da minha rede local.

Agora preciso testá-lo com meu iPhone, o problema é que meu iPhone não reconhece aquele servidor devido à falta de configuração para dns.

No meu Mac ou Windows, simplesmente adiciono: 192.168.0.20 http://www.google.comao arquivo hosts.

Agora, como faço para que meu iPhone saiba a URL http://www.google.com:?


Faça o Jailbreak do seu iPhone, baixe o iFile, navegue /etc/e abra o arquivo chamado hostsno visualizador de texto. Agora você pode editá-lo.

Desenvolvimento local no iPhone com OSX e Charles Web Proxy deployfx.com/2011/08/…
jfroom

1
Simulador OSX iOS e atualize seu arquivo / etc / hosts.
dmarvasti de

Alternativamente: instale o Bonjour (sudo apt-get install avahi-daemon avahi-utils) e acesse via hostname.local no iphone / ipad
Saša Tomislav Mataić

Fiquei surpreso por não ver uma resposta como esta, que funcionou para mim: stackoverflow.com/a/41857012/470749
Ryan

Respostas:


37

Isso não responde diretamente à sua pergunta, mas resolve o seu problema ...

Qual é a sua marca de roteador? O firmware do roteador pode permitir que você defina registros DNS para sua rede local. Isso é o que eu faço com o firmware do Tomato


obrigado, foi isso que fiz para resolver o problema;)
Hoang Pham

Usei essa abordagem também, exceto que estou usando o pfsense.
cod também de

como vai funcionar, eu também tenho o mesmo problema, estou no roteador cisco wrt
Amitg2k12

82

Outra opção aqui é conectar seu iPhone por meio de um proxy. Aqui está um exemplo de como fazer isso com o Fiddler (é muito fácil):

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

Nesse caso, todas as pesquisas de dns que seu iPhone fizer usarão o arquivo hosts da máquina em que o Fiddler está sendo executado. Observe , porém, que você deve usar um nome que será resolvido via DNS. example.local, por exemplo, não funcionará. example.xyzou example.devvontade.


3
Esta é a solução mais simples. Eu deveria ter pensado nisso !!
Jimplode

1
Impressionante. Isso funcionou muito bem para mim!
Sniffer

1
A mesma coisa funciona muito bem no osx, configure um proxy HTTP nas configurações de rede i.imgur.com/h5zEm.png
antonj

2
Desenvolvimento local no iPhone com OSX e Charles Web Proxy deployfx.com/2011/08/…
jfroom

1
Esta é uma ótima ferramenta para ter no arsenal de qualquer desenvolvimento de aplicativo móvel - não apenas para pesquisas de DNS
JoshuaDavid

32

Não relacionado a programação, mas responderei de qualquer maneira. É no /etc/hosts.

Você pode alterá-lo com um editor de texto simples como nano.

(Obviamente, você precisaria de um iphone com jailbreak para isso)


3
Você não pode usar o nano em um iphone vanilla para acessar diretamente / etc / hosts. Eu diria que é sobre um aplicativo que seria distribuído, caso em que você não pode mexer com arquivos fora de sua sandbox.
Jaanus

@Jaanus: é claro que eu quis dizer com um iphone desbloqueado. E ele nunca disse nada sobre um aplicativo sendo redistribuído; ele simplesmente mencionou que precisava testá-lo em seu iphone, que tinha um problema de dns.
Thomas Bonini

16
Eu não entendo os votos negativos. A resposta é tecnicamente correta e bem escrita.
Thomas Bonini

2
Vou restaurar algum carma para a edição; se os votos negativos foram usados ​​por causa do 'para aplicativo distribuído' implícito , então, embora eu possa entendê-los, acho que os votos negativos deveriam ter deixado um comentário para explicar isso.
David diz para restabelecer Monica

2
Presumo que ele só precise alterar o arquivo hosts para testar seu aplicativo. Depois de testado, não deve ser necessário alterar o arquivo hosts. Perfeitamente aceitável para recomendar o jailbreak aqui!
Mongus Pong

14

Acabei de editar o arquivo 'hosts' do meu iPhone com sucesso (no Jailbroken iOS 4.0).

  • OpenSSH instalado no iPhone via Cydia
  • Usando um cliente SFTP como FileZilla no meu computador, eu conectei ao meu iPhone
    • Endereço: [use o endereço IP ou nome do host do seu telefone, por exemplo. simophone.local]
    • Nome do usuário: root
    • Senha: alpine
  • Localizou o /etc/hostsarquivo
  • Fiz um backup no meu computador (caso eu queira reverter minhas alterações mais tarde)
  • Editou o arquivo hosts em um editor de texto decente (como o Notepad ++ ). Veja aqui uma explicação do arquivo hosts.
  • Carregou as alterações , sobrescrevendo o arquivo hosts no iPhone

O telefone armazena em cache algumas páginas da web e consultas DNS, portanto, reiniciar ou limpar o cache pode ajudar. Espero que ajude alguém.

Simon.


1
@Simon Segui os mesmos passos, mas não funcionou. Então tentei alterar as configurações de codificação e consegui! Você deve converter seu arquivo host para ANSI no Notepad ++ antes de salvá-lo. Para quem não conseguiu fazer o arquivo host funcionar; clique em “ Converter para ANSI ” no menu “ Codificação ”.
trkaplan

2
Você também pode usar o aplicativo iFile do Cydia para editar o arquivo hosts no seu dispositivo sem ter que usar um computador. Ad @ m
kirb

2
.. E mude a senha padrão de alpine para outra coisa!
Tieme

7

Pode existir, mas você não pode mudá-lo em um iPhone sem jailbreak.

Supondo que seu servidor de desenvolvimento esteja em um Mac, por que você simplesmente não usa o nome Bonjour (por exemplo MyMac.local.) em vez de myrealwebserverontheinternet.com?


todos os serviços da web existem em um servidor dentro da minha rede LAN. Eu tenho um nome de domínio e gostaria de mapear meu nome de domínio para este servidor também. e imagine que alguém dá a você um endereço para todos os seus serviços da web, ele pede para você consultar esses serviços usando este endereço, ele pode mostrar a você como adicionar arquivos hosts ao mac, windows, mas não iphone: -s
Hoang Pham

6

Caso mais alguém caia nesta página, você também pode resolver isso usando o endereço IP na solicitação de URL em vez do domínio:

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

Em seguida, você especifica o Host manualmente:

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

No que diz respeito ao servidor, ele se comportará exatamente da mesma maneira como se você o tivesse usado http://myserver/mypage.php, exceto que o iPhone não terá que fazer uma pesquisa de DNS.

API 100% pública.


2
No entanto, isso só funcionará para a primeira solicitação, se mypage.php fizer qualquer outra solicitação para myserver, o aplicativo não fará a conversão.
htafoya de

Essa abordagem é boa se você não pretende usar cookies.
DUzun

Nah. Isso também não funcionou. Estamos usando SSL Pinning, portanto a incompatibilidade de domínio bagunçou tudo: '017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) não tem acesso sandbox para frZQaeyWLUvLjeuEK43hmg e NÃO ESTÁ apropriadamente intitulado 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: sem acesso a InverseDeviceID (consulte <rdar: // problem / 11744455>) '
codeslapper

5

Não mude o DNS no telefone. Em vez disso, conecte-se com wi-fi à rede local e está tudo pronto.

No meu escritório, temos servidores internos com DNS interno que não estão expostos à Internet. Acabei de conectar o iPhone ao wi-fi do escritório e posso acessá-los sem problemas.

YMMV, mas em vez de configurar o DNS do telefone, parece-me que apenas configurar o DNS interno local e o wi-fi é uma solução mais limpa e fácil.


1

Não, um aplicativo para iPhone só pode mudar coisas dentro de sua própria pequena caixa de areia. (E mesmo há coisas que você não pode mudar na hora.)

Sua melhor aposta é provavelmente usar o endereço IP do servidor em vez do nome do host. Um pouco mais difícil, mas não tão difícil se você só precisa resolver um único endereço, seria colocar um servidor DNS em seu Mac e configurar seu iPhone para usá-lo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.