Есть ли на iPhone файл hosts? Как это поменять? [закрыто]

105

Я разрабатываю приложение, которое запрашивает сервер. На моем Mac я использую файл hosts, чтобы изменить DNS, чтобы он указывал на локальный сервер в моей локальной сети.

Теперь мне нужно протестировать его на моем iPhone, проблема в том, что мой iPhone не распознает этот сервер из-за отсутствия конфигурации для DNS.

На моем Mac или Windows я просто добавляю: 192.168.0.20 http://www.google.comв файл hosts.

Как мне сообщить моему iPhone URL-адрес http://www.google.com:?

Хоанг Фам
источник
Сделайте джейлбрейк своего iPhone, загрузите iFile, перейдите к /etc/файлу, который вызывается hostsв средстве просмотра текста, и откройте его . Теперь вы можете его редактировать.
Локальная разработка на iPhone с OSX и Charles Web Proxy deployfx.com/2011/08/…
jfroom
1
OSX iOS Simulator и обновите файл / etc / hosts.
dmarvasti
В качестве альтернативы: установите Bonjour (sudo apt-get install avahi-daemon avahi-utils) и получите доступ через hostname.local на iphone / ipad
Saša Tomislav Mataić
Я был удивлен, не увидев такого ответа, который сработал для меня: stackoverflow.com/a/41857012/470749
Райан

Ответы:

37

Это не дает прямого ответа на ваш вопрос, но решает вашу проблему ...

Какая у вас марка роутера? Прошивка вашего маршрутизатора может позволять вам устанавливать записи DNS для вашей локальной сети. Вот что я делаю с прошивкой Tomato

Эндрю Баллок
источник
спасибо, вот что я сделал, чтобы решить проблему;)
Hoang Pham
Я тоже использовал этот подход, за исключением того, что использую pfsense.
codewise
Как это будет работать, у меня тоже
такая
82

Другой вариант - подключить iPhone через прокси. Вот пример того, как это сделать с помощью Fiddler (это очень просто):

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

В этом случае любые запросы DNS, которые делает ваш iPhone, будут использовать файл hosts машины, на которой работает Fiddler. Однако обратите внимание , что вы должны использовать имя, которое будет разрешено через DNS. example.local, например, работать не будет. example.xyzили example.devбудет.

стуботник
источник
3
Это самое простое решение. Я должен был подумать об этом !!
jimplode 07
1
Потрясающие. Это сработало для меня!
Sniffer
1
То же самое отлично работает в osx, настройте HTTP-прокси в настройках сети i.imgur.com/h5zEm.png
antonj
2
Локальная разработка на iPhone с OSX и Charles Web Proxy deployfx.com/2011/08/…
jfroom
1
Это отличный инструмент в арсенале для разработки любого мобильного приложения, а не только для поиска DNS,
Джошуа Дэвид,
32

Не связано с программированием, но все равно отвечу. Это в /etc/hosts.

Вы можете изменить его с помощью простого текстового редактора, например nano.

(Очевидно, для этого вам понадобится взломанный iphone)

Томас Бонини
источник
3
Вы не можете использовать nano на обычном iphone, чтобы напрямую попасть в / etc / hosts. Я предполагаю, что речь идет о приложении, которое будет распространяться, и в этом случае вы не можете связываться с файлами вне своей песочницы.
Яанус
@Jaanus: конечно, я имел ввиду взломанный iphone. И он никогда ничего не говорил о распространении приложения; он просто упомянул, что ему нужно протестировать его на своем iphone, у которого была проблема с DNS.
Томас Бонини
16
Я не понимаю голосов против. Ответ технически правильный и хорошо написан.
Томас Бонини
2
Восстановлю карму за правку; если голоса против использовались из-за неявного выражения «для распределенного приложения», тогда, хотя я могу их понять, я думаю, что те, кто проголосовал против, должны были оставить комментарий, чтобы объяснить это.
Дэвид требует восстановить Монику на работе
2
Я полагаю, ему нужно только изменить файл hosts, чтобы он мог протестировать свое приложение. После тестирования не нужно менять файл hosts. Совершенно приемлемо, чтобы рекомендовать взломать здесь!
Mongus Pong 08
14

Я только что успешно отредактировал файл hosts на моем iPhone (на Jailbroken iOS 4.0).

  • Установил OpenSSH на iPhone через Cydia
  • Используя SFTP-клиент, например FileZilla, на моем компьютере, я подключился к своему iPhone.
    • Адрес: [используйте IP-адрес вашего телефона или имя хоста, например. simophone.local]
    • Имя пользователя: root
    • Пароль: alpine
  • Расположен /etc/hosts файл
  • Сделал резервную копию на моем компьютере (на случай, если я захочу позже отменить свои изменения)
  • Отредактировал файл hosts в приличном текстовом редакторе (например, Notepad ++ ). Видеть Здесь объяснение файла hosts.
  • Загрузил изменения , перезаписав файл hosts на iPhone

Телефон кеширует некоторые веб-страницы и DNS-запросы, поэтому перезагрузка или очистка кеша могут помочь. Надеюсь, это кому-то поможет.

Саймон.

Саймон Ист
источник
1
@Simon Я проделал те же шаги, но это не сработало. Затем я попытался изменить настройки кодировки, и все получилось! Перед сохранением файла хоста необходимо преобразовать его в ANSI в Notepad ++. Для кого не удалось заставить файл хоста работать; щелкните « Преобразовать в ANSI » в меню « Кодировка ».
trkaplan
2
Вы также можете использовать приложение iFile из Cydia для редактирования файла hosts на вашем устройстве без использования компьютера. Ad @ m
kirb
2
.. И поменяйте пароль по умолчанию с alpine на другой!
Tieme
7

Он может существовать, но вы не можете изменить его на iPhone без взлома.

Предполагая, что ваш веб-сервер разработки находится на Mac, почему бы вам просто не использовать его имя Bonjour (например MyMac.local.) вместо myrealwebserverontheinternet.com?

oefe
источник
все веб-службы существуют на сервере в моей локальной сети. У меня есть доменное имя, и я хотел бы также сопоставить свое доменное имя с этим сервером. и представьте, что кто-то дает вам адрес для всех своих веб-служб, он просит вас запросить эти службы, используя этот адрес, он может показать вам, как добавить файл hosts в Mac, Windows, но не iphone: -s
Хоанг Фам,
6

Если кто-то еще попадет на эту страницу, вы также можете решить эту проблему, используя IP-адрес в URL-запросе вместо домена:

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

Затем вы указываете Хост вручную:

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

Что касается сервера, он будет вести себя точно так же, как если бы вы его использовали http://myserver/mypage.php, за исключением того, что iPhone не будет выполнять поиск в DNS.

100% публичный API.

эксскрипто
источник
2
Однако это будет работать только для первого запроса, если mypage.php выполняет любой другой запрос к моему серверу, тогда приложение не будет выполнять преобразование.
htafoya
Этот подход хорош, если вы не собираетесь использовать cookie.
DUzun
Неа. Это тоже не сработало. Мы используем SSL-закрепление, поэтому несоответствие домена испортило: '017-07-13 10: 21: 42.244723-0400 ApperName [1015: 449748] libMobileGestalt MobileGestaltSupport.m: 153: pid 1015 (ApperName) не имеет доступа к песочнице для frZQaeyWLUvLjeuEK43hmg и НЕ ЯВЛЯЕТСЯ соответствующим названием 2017-07-13 10: 21: 42.244886-0400 UnionBank [1015: 449748] libMobileGestalt MobileGestalt.c: 550: нет доступа к InverseDeviceID (см. <rdar: // проблема / 11744455>) '
codelapper
5

Не меняйте DNS на телефоне. Вместо этого подключитесь с помощью Wi-Fi к локальной сети, и все готово.

В моем офисе у нас есть внутренние серверы с внутренним DNS, не подключенные к Интернету. Я просто подключаюсь с iPhone к офисному Wi-Fi и могу получить к ним доступ.

YMMV, но вместо настройки DNS телефона мне кажется, что просто настройка локального внутреннего DNS и Wi-Fi является более чистым и простым решением.

Яанус
источник
1

Нет, приложение для iPhone может изменять данные только в своей маленькой песочнице. (И даже там есть вещи, которые нельзя изменить на лету.)

Лучше всего использовать IP-адрес сервера, а не имя хоста. Чуть сложнее, но не , что трудно , если вам просто нужно решить один адрес, будет поставить сервер DNS на вашем Mac и настроить iPhone , чтобы использовать это.

Стивен Дарлингтон
источник