Il file hosts esiste sull'iPhone? Come cambiarlo? [chiuso]


104

Sto sviluppando un'applicazione che interroga il server. Nel mio Mac, utilizzo il file hosts per modificare il DNS in modo che punti a un server locale all'interno della mia rete locale.

Ora devo provarlo con il mio iPhone, il problema è che il mio iPhone non riconosce quel server a causa della configurazione mancante per dns.

Sul mio Mac o Windows, aggiungo semplicemente: 192.168.0.20 http://www.google.comal file hosts.

Ora come faccio a far sapere al mio iPhone l'URL http://www.google.com:?


Effettua il jailbreak del tuo iPhone, scarica iFile, naviga /etc/e apri il file chiamato hostsnel visualizzatore di testo. Ora puoi modificarlo.

Sviluppo locale su iPhone con OSX e Charles Web Proxy deployfx.com/2011/08/…
jfroom

1
OSX iOS Simulator e aggiorna il tuo file / etc / hosts.
dmarvasti

In alternativa: installa Bonjour (sudo apt-get install avahi-daemon avahi-utils) e accedi tramite hostname.local su iphone / ipad
Saša Tomislav Mataić

Sono rimasto sorpreso di non vedere una risposta come questa, che ha funzionato per me: stackoverflow.com/a/41857012/470749
Ryan

Risposte:


37

Questo non risponde direttamente alla tua domanda, ma risolve il tuo problema ...

Che tipo di router hai? Il firmware del router potrebbe consentire di impostare i record DNS per la rete locale. Questo è quello che faccio con il firmware Tomato


grazie, questo è quello che ho fatto per risolvere il problema;)
Hoang Pham

Ho usato anche questo approccio, tranne per il fatto che sto usando pfsense.
codice

come funzionerà, anch'io ho lo stesso problema, sono sul router Cisco
Wrt

82

Un'altra opzione qui è che il tuo iPhone si connetta tramite un proxy. Ecco un esempio di come farlo con Fiddler (è molto semplice):

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

In tal caso, qualsiasi ricerca DNS eseguita dal tuo iPhone utilizzerà il file hosts della macchina su cui è in esecuzione Fiddler. Nota , tuttavia, che devi utilizzare un nome che verrà risolto tramite DNS. example.local, ad esempio, non funzionerà. example.xyzo lo example.devfarà.


3
Questa è la soluzione più semplice. Avrei dovuto pensarci !!
jimplode

1
Eccezionale. Questo ha funzionato a meraviglia per me!
Sniffer

1
La stessa cosa funziona alla grande in osx, configura un proxy HTTP nelle impostazioni di rete i.imgur.com/h5zEm.png
antonj

2
Sviluppo locale su iPhone con OSX e Charles Web Proxy deployfx.com/2011/08/…
jfroom

1
Questo è un ottimo strumento da avere nell'arsenale per qualsiasi sviluppo di app mobile, non solo per le ricerche DNS
JoshuaDavid

32

Non è correlato alla programmazione, ma risponderò comunque. È dentro /etc/hosts.

Puoi modificarlo con un semplice editor di testo come nano.

(Ovviamente avresti bisogno di un iphone jailbroken per questo)


3
Non puoi usare nano su un iphone vanilla per accedere direttamente a / etc / hosts. Suppongo che si tratti di un'app che verrebbe distribuita, nel qual caso non puoi fare confusione con i file al di fuori della tua sandbox.
Jaanus

@Jaanus: ovviamente intendevo con un iphone jailbroken. E non ha mai detto nulla riguardo alla ridistribuzione di un'app; ha semplicemente detto che aveva bisogno di testarlo sul suo iphone che aveva un problema dns.
Thomas Bonini

16
Non capisco i voti negativi. La risposta è tecnicamente corretta e ben scritta.
Thomas Bonini

2
Ripristinerò un po 'di karma per la modifica; se i down-voti sono stati utilizzati a causa della implicita 'per un'applicazione distribuita' poi, mentre io li capisco, penso che i downvoters dovrebbe aver lasciato un commento per spiegare che.
David dice di reintegrare Monica l'

2
Presumo che debba solo modificare il file hosts in modo che possa testare la sua app. Una volta testato, non dovrebbe essere necessario modificare il file hosts. Perfettamente accettabile per consigliare il jailbreak qui!
Mongus Pong

14

Ho appena modificato con successo il file "host" del mio iPhone (su iOS 4.0 jailbroken).

  • OpenSSH installato su iPhone tramite Cydia
  • Utilizzando un client SFTP come FileZilla sul mio computer, mi sono connesso al mio iPhone
    • Indirizzo: [usa l'indirizzo IP o il nome host del tuo telefono, ad es. simophone.local]
    • Nome utente: root
    • Parola d'ordine: alpine
  • Trova il /etc/hostsfile
  • Ho eseguito un backup sul mio computer (nel caso in cui volessi ripristinare le mie modifiche in un secondo momento)
  • Modificato il file hosts in un editor di testo decente (come Notepad ++ ). Vedi qui per una spiegazione del file hosts.
  • Caricato le modifiche , sovrascrivendo il file hosts su iPhone

Il telefono memorizza nella cache alcune pagine Web e query DNS, quindi potrebbe essere utile riavviare o svuotare la cache. Spero che aiuti qualcuno.

Simon.


1
@ Simon Ho seguito gli stessi passaggi, ma non ha funzionato. Quindi ho provato a modificare le impostazioni di codifica e ho capito! Devi convertire il tuo file host in ANSI in Notepad ++ prima di salvarlo. Per chi non è riuscito a far funzionare il file host; fare clic su " Converti in ANSI " nel menu " Codifica ".
trkaplan

2
Puoi anche utilizzare l'app iFile di Cydia per modificare il file hosts sul tuo dispositivo senza dover utilizzare un computer. Ad @ m
kirb

2
.. E cambia la password predefinita da alpine a qualcos'altro!
Tieme

7

Potrebbe esistere, ma non puoi modificarlo su un iPhone senza jailbreak.

Supponendo che il tuo server web di sviluppo sia su un Mac, perché non usi semplicemente il suo nome Bonjour (ad esempio MyMac.local.) invece di myrealwebserverontheinternet.com?


tutti i servizi web esistono in un server all'interno della mia rete LAN. Ho un nome di dominio e vorrei mappare anche il mio nome di dominio su questo server. e immagina che qualcuno ti dia un indirizzo per tutti i suoi servizi web, ti chiede di interrogare questi servizi usando questo indirizzo, può mostrarti come aggiungere il file hosts a mac, windows, ma non iphone: -s
Hoang Pham

6

Nel caso in cui qualcun altro cada in questa pagina, puoi anche risolvere il problema utilizzando l'indirizzo IP nella richiesta URL invece del dominio:

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

Quindi si specifica manualmente l'host:

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

Per quanto riguarda il server, si comporterà esattamente come se lo avessi usato http://myserver/mypage.php, tranne per il fatto che l'iPhone non dovrà fare una ricerca DNS.

API pubblica al 100%.


2
Tuttavia questo funzionerà solo per la prima richiesta, se mypage.php fa qualsiasi altra richiesta al myserver, l'app non eseguirà la conversione.
htafoya

Questo approccio è utile se non intendi utilizzare i cookie.
DUzun

Nah. Anche questo non ha funzionato. Stiamo utilizzando SSL Pinning, quindi la mancata corrispondenza del dominio ha incasinato tutto: '017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) non ha accesso sandbox per frZQaeyWLUvLjeuEK43hmg e NON È appropriatamente intitolato 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: nessun accesso a InverseDeviceID (vedere <rdar: // problem / 11744455>) '
codelapper

5

Non cambiare il DNS sul telefono. Invece, connettiti con il wifi alla rete locale e sei pronto.

Nel mio ufficio, abbiamo server interni con DNS interno che non sono esposti a Internet. Mi collego semplicemente con l'iPhone al wifi dell'ufficio e posso accedervi bene.

YMMV, ma invece di configurare il DNS del telefono, mi sembra che la semplice configurazione di DNS e wifi interni locali sia una soluzione più semplice e pulita.


1

No, un'applicazione per iPhone può cambiare le cose solo all'interno della sua piccola sandbox. (E anche ci sono cose che non puoi cambiare al volo.)

La soluzione migliore è probabilmente utilizzare l'indirizzo IP del server anziché il nome host. Un po 'più difficile, ma non così difficile se hai solo bisogno di risolvere un singolo indirizzo, sarebbe mettere un server DNS sul tuo Mac e configurare il tuo iPhone per usarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.