Czy plik hosts istnieje na iPhonie? Jak to zmienić? [Zamknięte]

104

Rozwijam aplikację, która wysyła zapytania do serwera. Na moim Macu używam pliku hosts, aby zmienić dns, aby wskazywały na lokalny serwer w mojej sieci lokalnej.

Teraz muszę to przetestować z moim iPhonem, problem polega na tym, że mój iPhone nie rozpoznaje tego serwera z powodu brakującej konfiguracji dns.

Na moim Macu lub Windowsie po prostu dodaję: 192.168.0.20 http://www.google.comdo pliku hosts.

Jak teraz mogę poinformować mojego iPhone'a o adresie URL http://www.google.com:?

Hoang Pham
źródło
Jailbreak swojego iPhone'a, pobierz iFile, przejdź do /etc/pliku o nazwie hostsw przeglądarce tekstu i otwórz go . Teraz możesz go edytować.
Programowanie lokalne na iPhone'a z OSX i Charles Web Proxy deployfx.com/2011/08/ ...
jfroom
1
OSX iOS Simulator i zaktualizuj plik / etc / hosts.
dmarvasti
Alternatywnie: zainstaluj Bonjour (sudo apt-get install avahi-daemon avahi-utils) i uzyskaj dostęp przez hostname.local na iphone / ipad
Saša Tomislav Mataić
Zaskoczyło mnie, że nie zobaczyłem takiej odpowiedzi, która zadziałała dla mnie: stackoverflow.com/a/41857012/470749
Ryan

Odpowiedzi:

37

To nie jest bezpośrednią odpowiedzią na twoje pytanie, ale rozwiązuje twój problem ...

Jakiej marki masz routera? Oprogramowanie układowe routera może umożliwiać ustawienie rekordów DNS dla sieci lokalnej. To właśnie robię z oprogramowaniem Tomato

Andrew Bullock
źródło
dzięki, tak właśnie zrobiłem, aby rozwiązać problem;)
Hoang Pham
Użyłem też tego podejścia, z wyjątkiem tego, że używam pfsense.
codewise Kwietnia
jak to będzie działać, ja też mam ten sam problem, jestem na routerze cisco wrt
Amitg2k12
82

Inną opcją jest połączenie iPhone'a przez serwer proxy. Oto przykład, jak to zrobić za pomocą Fiddlera (to bardzo proste):

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

W takim przypadku wszelkie wyszukiwania DNS, które wykonuje Twój iPhone, użyją pliku hosts maszyny, na której działa Fiddler. Pamiętaj jednak, że musisz użyć nazwy, która zostanie rozpoznana przez DNS. example.localna przykład nie zadziała. example.xyzlub example.devbędzie.

stubotnik
źródło
3
To najprostsze rozwiązanie. Powinienem był o tym pomyśleć !!
jimplode
1
Niesamowite. To była dla mnie uczta!
Sniffer
1
To samo działa świetnie w OSX,
ustaw
2
Programowanie lokalne na iPhone'a z OSX i Charles Web Proxy deployfx.com/2011/08/ ...
jfroom
1
To świetne narzędzie, które można mieć w arsenale do tworzenia dowolnej aplikacji mobilnej - nie tylko do wyszukiwania DNS
JoshuaDavid
32

Nie związane z programowaniem, ale i tak odpowiem. Jest w /etc/hosts.

Możesz to zmienić za pomocą prostego edytora tekstu, takiego jak nano.

(Oczywiście do tego potrzebowałbyś jailbreakowanego iPhone'a)

Thomas Bonini
źródło
3
Nie możesz użyć nano na waniliowym iPhonie, aby uzyskać bezpośredni dostęp do / etc / hosts. Zakładam, że chodzi o aplikację, która byłaby dystrybuowana, w takim przypadku nie możesz zadzierać z plikami poza piaskownicą.
Jaanus
@Jaanus: oczywiście miałem na myśli iPhone'a z jailbreakiem. I nigdy nie powiedział nic o redystrybucji aplikacji; po prostu wspomniał, że musi to przetestować na swoim iPhonie, który ma problem z dns.
Thomas Bonini
16
Nie rozumiem głosów przeciw. Odpowiedź jest poprawna technicznie i dobrze napisana.
Thomas Bonini
2
Przywrócę trochę karmy do edycji; jeśli głosy w dół zostały użyte z powodu domniemanego „dla aplikacji rozproszonej”, to chociaż mogę je zrozumieć, myślę, że ci, którzy przegrywają, powinni zostawić komentarz, aby to wyjaśnić.
David mówi, że
2
Zakładam, że musi tylko zmienić plik hosts, aby mógł przetestować swoją aplikację. Po przetestowaniu nie powinien wymagać zmiany pliku hosts. Całkowicie dopuszczalne, aby polecić tutaj jailbreaking!
Mongus Pong
14

Właśnie pomyślnie wyedytowałem plik „hosts” mojego iPhone'a (na Jailbroken iOS 4.0).

  • Zainstalowano OpenSSH na iPhonie za pośrednictwem Cydii
  • Korzystając z klienta SFTP, takiego jak FileZilla na moim komputerze, podłączyłem się do mojego iPhone'a
    • Adres: [użyj adresu IP telefonu lub nazwy hosta, np. simophone.local]
    • Nazwa Użytkownika: root
    • Hasło: alpine
  • Zlokalizował /etc/hostsplik
  • Wykonane z kopii zapasowej na komputerze (w przypadku Chcę przywrócić moje zmiany później)
  • Edytowałem plik hosts w przyzwoitym edytorze tekstu (takim jak Notepad ++ ). Zobacz tutaj wyjaśnienie pliku hosts.
  • Przesłałem zmiany , nadpisując plik hosts na iPhonie

Telefon buforuje niektóre strony internetowe i zapytania DNS, więc może pomóc ponowne uruchomienie lub wyczyszczenie pamięci podręcznej. Mam nadzieję, że to komuś pomoże.

Szymon.

Simon East
źródło
1
@Simon Wykonałem te same kroki, ale to nie zadziałało. Potem próbowałem zmienić ustawienia kodowania i udało mi się! Musisz przekonwertować plik hosta na ANSI w Notepad ++, zanim go zapiszesz. Dla kogo nie udało się uruchomić pliku hosta; kliknij „ Konwertuj na ANSI ” w menu „ Kodowanie ”.
trkaplan
2
Możesz także użyć aplikacji iFile firmy Cydia, aby edytować plik hosts na swoim urządzeniu bez konieczności korzystania z komputera. Ad @ m
kirb
2
.. I zmień domyślne hasło z alpejskiego na coś innego!
Tieme
7

Może istnieć, ale nie można go zmienić na iPhonie bez jailbreaka.

Zakładając, że programistyczny serwer WWW znajduje się na komputerze Mac, dlaczego po prostu nie użyjesz jego nazwy Bonjour (np. MyMac.local.) Zamiast myrealwebserverontheinternet.com?

oefe
źródło
wszystkie usługi sieciowe istnieją na serwerze w mojej sieci LAN. Mam nazwę domeny i chciałbym również zmapować moją nazwę domeny na ten serwer. i wyobraź sobie, że ktoś podaje ci adres dla wszystkich jego usług internetowych, prosi cię o wysłanie zapytania do tych usług za pomocą tego adresu, może pokazać ci, jak dodać plik hosts do mac, Windows, ale nie do iphone'a: ​​-s
Hoang Pham
6

Jeśli ktoś inny wpadnie na tę stronę, możesz również rozwiązać ten problem, używając adresu IP w żądaniu adresu URL zamiast domeny:

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

Następnie określ hosta ręcznie:

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

Jeśli chodzi o serwer, będzie zachowywał się dokładnie tak samo, jak gdybyś używał http://myserver/mypage.php, z wyjątkiem tego, że iPhone nie będzie musiał wyszukiwać DNS.

100% publiczny interfejs API.

ekscrypto
źródło
2
Jednak zadziała to tylko dla pierwszego żądania, jeśli mypage.php wyśle ​​inne żądanie do myserver, aplikacja nie wykona konwersji.
htafoya
Takie podejście jest dobre, jeśli nie zamierzasz używać plików cookie.
DUzun
Nie. To też nie zadziałało. Używamy przypinania SSL, więc niedopasowanie domeny zawiodło: „017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) nie ma dostępu do piaskownicy dla frZQaeyWLUvLjeuEK43hmg i NIE MA odpowiednich uprawnień 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: brak dostępu do InverseDeviceID (patrz <rdar: // problem / 11744455>) '
codelapper
5

Nie zmieniaj DNS w telefonie. Zamiast tego połącz się przez Wi-Fi z siecią lokalną i gotowe.

W moim biurze mamy wewnętrzne serwery z wewnętrznym DNS, które nie są widoczne w Internecie. Po prostu łączę się za pomocą iPhone'a z biurowym Wi-Fi i mogę uzyskać do nich dostęp.

YMMV, ale zamiast konfigurować DNS telefonu, czuję, że samo skonfigurowanie lokalnego wewnętrznego DNS i Wi-Fi jest czystszym i łatwiejszym rozwiązaniem.

Jaanus
źródło
1

Nie, aplikacja na iPhone'a może zmieniać rzeczy tylko we własnej małej piaskownicy. (A nawet są rzeczy, których nie można zmienić w locie).

Najlepszym rozwiązaniem jest prawdopodobnie użycie adresu IP serwera zamiast nazwy hosta. Nieco trudniejsze, ale nie tak trudne, jeśli potrzebujesz tylko jednego adresu, byłoby umieszczenie serwera DNS na komputerze Mac i skonfigurowanie iPhone'a, aby z niego korzystał.

Stephen Darlington
źródło