Gibt es eine Hosts-Datei auf dem iPhone? Wie kann ich das ändern? [geschlossen]

103

Ich entwickle eine Anwendung, die den Server abfragt. Auf meinem Mac verwende ich die Hosts-Datei, um die DNS so zu ändern, dass sie auf einen lokalen Server in meinem lokalen Netzwerk verweist.

Jetzt muss ich es mit meinem iPhone testen. Das Problem ist, dass mein iPhone diesen Server aufgrund der fehlenden Konfiguration für DNS nicht erkennt.

Auf meinem Mac oder Windows füge ich einfach hinzu: 192.168.0.20 http://www.google.comzur Hosts-Datei.

Wie kann ich meinem iPhone nun die URL mitteilen : http://www.google.com?

Hoang Pham
quelle
Jailbreak dein iPhone, lade iFile herunter, navigiere zu /etc/der hostsim Text Viewer aufgerufenen Datei und öffne sie . Jetzt können Sie es bearbeiten.
Lokale Entwicklung auf dem iPhone mit OSX und Charles Web Proxy deployfx.com/2011/08/…
jfroom
1
OSX iOS Simulator und aktualisieren Sie Ihre / etc / hosts-Datei.
Dmarvasti
Alternativ: Bonjour installieren (sudo apt-get avahi-daemon avahi-utils installieren) und Zugriff über hostname.local auf iphone / ipad
Saša Tomislav Mataić
Ich war überrascht, keine Antwort wie diese zu sehen, die für mich funktionierte
Ryan

Antworten:

37

Dies beantwortet Ihre Frage nicht direkt, löst aber Ihr Problem ...

Welche Art von Router haben Sie? Mit Ihrer Router-Firmware können Sie möglicherweise DNS-Einträge für Ihr lokales Netzwerk festlegen. Das mache ich mit der Tomato-Firmware

Andrew Bullock
quelle
danke, das habe ich getan, um das Problem zu lösen;)
Hoang Pham
Ich habe diesen Ansatz auch verwendet, außer ich verwende pfsense.
Codeweise
Wie wird es funktionieren, ich habe auch das gleiche Problem, ich bin auf Cisco Wrt Router
Amitg2k12
82

Eine weitere Möglichkeit besteht darin, Ihr iPhone über einen Proxy verbinden zu lassen. Hier ist ein Beispiel, wie man es mit Fiddler macht (es ist sehr einfach):

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

In diesem Fall verwenden alle DNS-Suchvorgänge, die Ihr iPhone durchführt, die Hosts-Datei des Computers, auf dem Fiddler ausgeführt wird. Beachten Sie jedoch, dass Sie einen Namen verwenden müssen, der über DNS aufgelöst wird. example.localfunktioniert zum Beispiel nicht. example.xyzoder example.devwird.

stubotnik
quelle
3
Dies ist die einfachste Lösung. Ich hätte daran denken sollen !!
Jimplode
1
Genial. Das war ein Vergnügen für mich!
Sniffer
1
Das Gleiche funktioniert hervorragend in OSX. Richten Sie einen HTTP-Proxy in den Netzwerkeinstellungen ein. I.imgur.com/h5zEm.png
antonj
2
Lokale Entwicklung auf dem iPhone mit OSX und Charles Web Proxy deployfx.com/2011/08/…
jfroom
1
Dies ist ein großartiges Tool im Arsenal für jede Entwicklung mobiler Apps - nicht nur für DNS-Lookups
JoshuaDavid
32

Nicht programmierbezogen, aber ich werde trotzdem antworten. Es ist in /etc/hosts.

Sie können es mit einem einfachen Texteditor wie ändern nano.

(Offensichtlich würden Sie dafür ein iPhone mit Jailbreak benötigen)

Thomas Bonini
quelle
3
Sie können Nano auf einem Vanille-iPhone nicht verwenden, um direkt zu / etc / hosts zu gelangen. Ich würde annehmen, dass es sich um eine App handelt, die verteilt wird. In diesem Fall können Sie nicht mit Dateien außerhalb Ihrer Sandbox herumspielen.
Jaanus
@Jaanus: Natürlich meinte ich mit einem iPhone mit Jailbreak. Und er hat nie etwas darüber gesagt, dass eine App neu verteilt wird. Er erwähnte nur, dass er es auf seinem iPhone testen musste, das ein DNS-Problem hatte.
Thomas Bonini
16
Ich verstehe die Abstimmungen nicht. Die Antwort ist technisch korrekt und gut geschrieben.
Thomas Bonini
2
Ich werde etwas Karma für die Bearbeitung wiederherstellen; Wenn die Abwärtsstimmen aufgrund des impliziten "für verteilte App" verwendet wurden, sollten die Absteiger, obwohl ich sie verstehen kann, einen Kommentar hinterlassen, um dies zu erklären.
David sagt, Monica am
2
Ich nehme an, er muss nur die Hosts-Datei ändern, damit er seine App testen kann. Nach dem Testen sollte die Hosts-Datei nicht geändert werden müssen. Absolut akzeptabel, um Jailbreaking hier zu empfehlen!
Mongus Pong
14

Ich habe gerade die Hosts-Datei meines iPhones erfolgreich bearbeitet (unter Jailbroken iOS 4.0).

  • Installierte OpenSSH über Cydia auf dem iPhone
  • Mit einem SFTP-Client wie FileZilla auf meinem Computer habe ich eine Verbindung zu meinem iPhone hergestellt
    • Adresse: [Verwenden Sie die IP-Adresse oder den Hostnamen Ihres Telefons, z. simophone.local]]
    • Nutzername: root
    • Passwort: alpine
  • Die /etc/hostsDatei wurde gefunden
  • Auf meinem Computer ein Backup erstellt (falls ich meine Änderungen später rückgängig machen möchte)
  • Die Hosts-Datei wurde in einem anständigen Texteditor (z. B. Notepad ++ ) bearbeitet . Sehen Sie hier für eine Erklärung der Hosts - Datei.
  • Die Änderungen wurden hochgeladen und die Hosts-Datei auf dem iPhone überschrieben

Das Telefon speichert einige Webseiten und DNS-Abfragen zwischen, sodass ein Neustart oder das Löschen des Caches hilfreich sein kann. Hoffe das hilft jemandem.

Simon.

Simon East
quelle
1
@ Simon Ich habe die gleichen Schritte befolgt, aber es hat nicht funktioniert. Dann habe ich versucht, die Codierungseinstellungen zu ändern und habe es bekommen! Sie müssen Ihre Hostdatei in Notepad ++ in ANSI konvertieren, bevor Sie sie speichern. Für wen konnte die Host-Datei nicht funktionieren? Klicken Sie im Menü " Codierung " auf "In ANSI konvertieren ".
Trkaplan
2
Sie können auch die iFile-App von Cydia verwenden, um die Hosts-Datei auf Ihrem Gerät zu bearbeiten, ohne einen Computer verwenden zu müssen. Ad @ m
kirb
2
.. Und ändern Sie das Standardkennwort von alpine zu etwas anderem!
Tieme
7

Es ist möglicherweise vorhanden, kann jedoch auf einem iPhone ohne Jailbreak nicht geändert werden.

Angenommen, Ihr Entwicklungswebserver befindet sich auf einem Mac, warum verwenden Sie nicht einfach den Bonjour-Namen (z. B. MyMac.local.) anstelle von myrealwebserverontheinternet.com?

oefe
quelle
Alle Webdienste befinden sich auf einem Server in meinem LAN-Netzwerk. Ich habe einen Domainnamen und möchte meinen Domainnamen auch diesem Server zuordnen. und stellen Sie sich vor, jemand gibt Ihnen eine Adresse für alle seine Webservices. Er bittet Sie, diese Dienste unter Verwendung dieser Adresse abzufragen. Er kann Ihnen zeigen, wie Sie Hosts-Dateien zu Mac, Windows, aber nicht zu iPhone hinzufügen: -s
Hoang Pham
6

Falls jemand anderes auf diese Seite fällt, können Sie dies auch lösen, indem Sie die IP-Adresse in der URL-Anfrage anstelle der Domain verwenden:

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

Dann geben Sie den Host manuell an:

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

Der Server verhält sich genauso wie bei Ihnen http://myserver/mypage.php, nur dass das iPhone keine DNS-Suche durchführen muss.

100% öffentliche API.

ekscrypto
quelle
2
Dies funktioniert jedoch nur für die erste Anfrage. Wenn mypage.php eine andere Anfrage an myserver sendet, führt die App die Konvertierung nicht durch.
Htafoya
Dieser Ansatz ist gut, wenn Sie kein Cookie verwenden möchten.
DUzun
Nein, nein. Das hat auch nicht funktioniert. Wir verwenden SSL-Pinning, daher hat die Domain-Nichtübereinstimmung es durcheinander gebracht: '017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) hat keinen Sandbox-Zugriff für frZQaeyWLUvLjeuEK43hmg und IST NICHT angemessen berechtigt 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: kein Zugriff auf InverseDeviceID (siehe <rdar: // problem / 11744455>) '
Codeslapper
5

Ändern Sie nicht den DNS am Telefon. Stellen Sie stattdessen eine WLAN-Verbindung zum lokalen Netzwerk her, und schon sind Sie fertig.

In meinem Büro haben wir interne Server mit internem DNS, die nicht dem Internet ausgesetzt sind. Ich verbinde mich einfach mit dem iPhone mit dem Büro-WLAN und kann dann problemlos darauf zugreifen.

YMMV, aber anstatt das Telefon-DNS zu konfigurieren, ist es für mich eine sauberere und einfachere Lösung, nur lokales internes DNS und WLAN einzurichten.

Jaanus
quelle
1

Nein, eine iPhone-Anwendung kann nur Dinge in ihrer eigenen kleinen Sandbox ändern. (Und selbst dort gibt es Dinge, die Sie nicht im laufenden Betrieb ändern können.)

Am besten verwenden Sie wahrscheinlich die IP-Adresse des Servers anstelle des Hostnamens. Etwas schwieriger, aber nicht so schwierig, wenn Sie nur eine einzelne Adresse auflösen müssen, wäre es, einen DNS-Server auf Ihrem Mac zu installieren und Ihr iPhone dafür zu konfigurieren.

Stephen Darlington
quelle