¿Existe el archivo hosts en el iPhone? ¿Cómo cambiarlo? [cerrado]

104

Estoy desarrollando una aplicación que consulta al servidor. En mi Mac, uso el archivo de hosts para cambiar el dns para que apunte a un servidor local dentro de mi red de área local.

Ahora necesito probarlo con mi iPhone, el problema es que mi iPhone no reconoce ese servidor debido a la falta de configuración para dns.

En mi Mac o Windows, simplemente agrego: 192.168.0.20 http://www.google.comal archivo de hosts.

Ahora, ¿cómo le hago saber a mi iPhone la URL http://www.google.com:?

Hoang Pham
fuente
Haga jailbreak a su iPhone, descargue iFile, navegue /etc/y abra el archivo llamado hostsen el visor de texto. Ahora puedes editarlo.
Desarrollo local en iPhone con OSX y Charles Web Proxy deployfx.com/2011/08/…
jfroom
1
OSX iOS Simulator y actualice su archivo / etc / hosts.
dmarvasti
Alternativamente: instale Bonjour (sudo apt-get install avahi-daemon avahi-utils) y acceda a través de hostname.local en iphone / ipad
Saša Tomislav Mataić
Me sorprendió no ver una respuesta como esta, que funcionó para mí: stackoverflow.com/a/41857012/470749
Ryan

Respuestas:

37

Esto no responde directamente a su pregunta, pero resuelve su problema ...

¿Qué marca de enrutador tienes? El firmware de su enrutador puede permitirle establecer registros DNS para su red local. Esto es lo que hago con el firmware de Tomato

Andrew Bullock
fuente
gracias, esto es lo que hice para resolver el problema;)
Hoang Pham
También utilicé este enfoque, excepto que estoy usando pfsense.
Codewise
cómo funcionará, yo también tengo el mismo problema, estoy en el enrutador cisco wrt
Amitg2k12
82

Otra opción aquí es hacer que su iPhone se conecte a través de un proxy. Aquí tienes un ejemplo de cómo hacerlo con Fiddler (es muy fácil):

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

En ese caso, cualquier búsqueda de dns que haga su iPhone utilizará el archivo de hosts de la máquina en la que se está ejecutando Fiddler. Sin embargo, tenga en cuenta que debe utilizar un nombre que se resolverá mediante DNS. example.local, por ejemplo, no funcionará. example.xyzo example.devvoluntad.

stubotnik
fuente
3
Ésta es la solución más sencilla. ¡Debería haber pensado en esto!
jimplode
1
Increíble. ¡Esto funcionó de maravilla para mí!
Sniffer
1
Lo mismo funciona muy bien en osx, configure un proxy HTTP en la configuración de red i.imgur.com/h5zEm.png
antonj
2
Desarrollo local en iPhone con OSX y Charles Web Proxy deployfx.com/2011/08/…
jfroom
1
Esta es una gran herramienta para tener en el arsenal para cualquier desarrollo de aplicaciones móviles, no solo para búsquedas de DNS
JoshuaDavid
32

No relacionado con la programación, pero responderé de todos modos. Está en /etc/hosts.

Puede cambiarlo con un editor de texto simple como nano.

(Obviamente, necesitarías un iPhone con jailbreak para esto)

Thomas Bonini
fuente
3
No puede usar nano en un iPhone de vainilla para acceder directamente a / etc / hosts. Supongo que se trata de una aplicación que se distribuiría, en cuyo caso no puede meterse con archivos fuera de su caja de arena.
Jaanus
@Jaanus: por supuesto que me refiero a un iPhone con jailbreak. Y nunca dijo nada sobre la redistribución de una aplicación; simplemente mencionó que necesitaba probarlo en su iphone que tenía un problema de dns.
Thomas Bonini
16
No entiendo los votos negativos. La respuesta es técnicamente correcta y está bien escrita.
Thomas Bonini
2
Restauraré algo de karma para la edición; Si los votos negativos se usaron debido al implícito 'para la aplicación distribuida', entonces, aunque puedo entenderlos, creo que los votantes negativos deberían haber dejado un comentario para explicar eso.
David dice reinstalar a Monica
2
Supongo que solo necesita cambiar el archivo de hosts para poder probar su aplicación. Una vez probado, no debería necesitar cambiar el archivo de hosts. ¡Perfectamente aceptable recomendar el jailbreak aquí!
Mongus Pong
14

Acabo de editar correctamente el archivo 'hosts' de mi iPhone (en iOS 4.0 con Jailbreak).

  • OpenSSH instalado en iPhone a través de Cydia
  • Usando un cliente SFTP como FileZilla en mi computadora, me conecté a mi iPhone
    • Dirección: [use la dirección IP de su teléfono o el nombre de host, por ejemplo. simophone.local]
    • Nombre de usuario: root
    • Contraseña: alpine
  • Ubicado el /etc/hostsarchivo
  • Hice una copia de seguridad en mi computadora (en caso de que quiera revertir mis cambios más adelante)
  • Editó el archivo de hosts en un editor de texto decente (como Notepad ++ ). Consulte aquí para obtener una explicación del archivo hosts.
  • Cargó los cambios , sobrescribiendo el archivo de hosts en el iPhone

El teléfono almacena en caché algunas páginas web y consultas de DNS, por lo que reiniciar o borrar la memoria caché puede ayudar. Espero que ayude a alguien.

Simón.

Simon East
fuente
1
@Simon Seguí los mismos pasos, pero no funcionó. Luego intenté cambiar la configuración de codificación, ¡y lo conseguí! Debe convertir su archivo de host a ANSI en Notepad ++ antes de guardarlo. Para quién no pudo hacer funcionar el archivo host; haga clic en " Convertir a ANSI " en el menú " Codificación ".
trkaplan
2
También puede usar la aplicación iFile de Cydia para editar el archivo de hosts en su dispositivo sin tener que usar una computadora. Ad @ m
kirb
2
.. ¡Y cambie la contraseña predeterminada de alpine a otra!
Tieme
7

Puede existir, pero no puede cambiarlo en un iPhone sin jailbreak.

Suponiendo que su servidor web de desarrollo está en una Mac, ¿por qué no usa simplemente su nombre Bonjour (por ejemplo MyMac.local.) en lugar de myrealwebserverontheinternet.com?

oefe
fuente
todos los servicios web existen en un servidor dentro de mi red LAN. Tengo un nombre de dominio y también me gustaría asignar mi nombre de dominio a este servidor. e imagina que alguien te da una dirección para todos sus servicios web, te pide que consultes estos servicios usando esta dirección, puede mostrarte cómo agregar archivos de hosts a mac, windows, pero no a iphone: -s
Hoang Pham
6

En caso de que alguien más acceda a esta página, también puede resolver esto utilizando la dirección IP en la solicitud de URL en lugar del dominio:

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

Luego, especifica el Host manualmente:

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

En lo que respecta al servidor, se comportará exactamente de la misma manera que si lo hubiera usado http://myserver/mypage.php, excepto que el iPhone no tendrá que hacer una búsqueda de DNS.

API 100% pública.

ekscrypto
fuente
2
Sin embargo, esto solo funcionará para la primera solicitud, si mypage.php realiza cualquier otra solicitud a myserver, la aplicación no realizará la conversión.
htafoya
Este enfoque es bueno si no tiene la intención de utilizar cookies.
DUzun
Nah. Esto tampoco funcionó. Estamos usando SSL Pinning, por lo que la discrepancia de dominio lo estropeó: '017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) no tiene acceso a sandbox para frZQaeyWLUvLjeuEK43hmg y NO ESTÁ debidamente titulado 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: no hay acceso a InverseDeviceID (ver <rdar: // problem / 11744455>) '
codeslapper
5

No cambie el DNS en el teléfono. En su lugar, conéctese con wifi a la red local y estará listo.

En mi oficina, tenemos servidores internos con DNS internos que no están expuestos a Internet. Simplemente me conecto con el iPhone al wifi de la oficina y luego puedo acceder a ellos sin problemas.

YMMV, pero en lugar de configurar el DNS del teléfono, me parece que simplemente configurar el DNS y el wifi internos locales es una solución más limpia y sencilla.

Jaanus
fuente
1

No, una aplicación de iPhone solo puede cambiar cosas dentro de su propia pequeña caja de arena. (E incluso hay cosas que no se pueden cambiar sobre la marcha).

Probablemente, su mejor opción sea utilizar la dirección IP del servidor en lugar del nombre de host. Un poco más difícil, pero no que difícil si sólo tiene que resolver una sola dirección, sería poner un servidor DNS en su Mac y configurar su iPhone para usarlo.

Stephen Darlington
fuente