Чи існує файл хостів на iPhone? Як це змінити? [зачинено]


104

Я розробляю програму, яка запитує до сервера. У своєму Mac я використовую файл хостів, щоб змінити dns, щоб вказати на локальний сервер у моїй локальній мережі.

Тепер мені потрібно перевірити це на своєму iPhone, проблема полягає в тому, що мій iPhone не розпізнає цей сервер через відсутність конфігурації для dns.

На моєму Mac чи Windows я просто додаю: 192.168.0.20 http://www.google.comу файл хостів.

Тепер, як я можу повідомити свій iPhone про URL-адресу http://www.google.com:?


Перезавантажте свій iPhone, завантажте iFile, перейдіть до /etc/та відкрийте файл, який викликається hostsу програмі перегляду тексту. Тепер ви можете це відредагувати.

Локальний розвиток на iPhone з OSX та Charles Web Proxy розвернутисьxx 2011
— 2011/

1
OSX iOS Simulator та оновіть файл / etc / hosts.
— dmarvasti

Як варіант: встановити Bonjour (sudo apt-get install avahi-daemon avahi-utils) та отримати доступ через hostname.local на iphone / ipad
— Saša Tomislav Tomi Mataić,

Я був здивований, не побачивши такої відповіді, яка працювала на мене: stackoverflow.com/a/41857012/470749
— Райан

Відповіді:


37

Це не відповідає безпосередньо на ваше запитання, але все ж вирішує вашу проблему ...

Який у вас роутер? Прошивка маршрутизатора може дозволяти вам встановлювати записи DNS для вашої локальної мережі. Це те, що я роблю з прошивкою Tomato


дякую, це я зробив для вирішення питання;)
— Хоанг Фам

Я також використовував такий підхід, за винятком випадків, коли я використовую pfsense.
— codewise

як це буде працювати, у мене теж є те саме питання, я на маршрутизаторі cisco wrt
— Amitg2k12

82

Інший варіант тут - підключити iPhone через проксі. Ось приклад того, як це зробити з Fiddler (це дуже просто):

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

У цьому випадку будь-який dns-пошук вашого iPhone використовує файл хостів машини, на якій працює Fiddler. Зауважте , що ви повинні використовувати ім'я, яке буде вирішено через DNS. example.localнаприклад, не працюватиме. example.xyzабо example.devбуде.


3
Це найпростіше рішення. Я мав би подумати про це !!
— jimplode

1
Дивовижно. Це спрацювало для мене частування!
— Sniffer

1
Те ж саме чудово працює в osx, налаштуйте HTTP-проксі в мережевих налаштуваннях i.imgur.com/h5zEm.png
— antonj

2
Локальний розвиток на iPhone з OSX та Charles Web Proxy розвернутисьxx 2011
— 2011/

1
Це прекрасний інструмент для створення арсеналу для будь-якої розробки мобільних додатків - не лише для пошуку DNS
— JoshuaDavid

32

Не пов'язане з програмуванням, але я все одно відповім. Це в /etc/hosts.

Ви можете змінити його за допомогою простого текстового редактора, такого як nano.

(Очевидно, для цього вам знадобиться айфон з в'язницею)


3
Ви не можете використовувати нано на ванільному iphone, щоб безпосередньо дістатися до / etc / hosts. Я б припустив, що це програма, яка буде розповсюджуватися, і в цьому випадку ви не можете возитися з файлами поза вашою пісочницею.
— Яанус

@Jaanus: я, звичайно, мав на увазі з iilbroken iphone. І він ніколи нічого не говорив про перерозподіл програми; він просто згадав, що потрібно перевірити це на своєму iphone, який мав проблему з dns.
— Томас Боніні

16
Я не розумію суті. Відповідь технічно правильна і добре написана.
— Томас Боніні

2
Я відновлю карму для редагування; якщо голоси вниз були використані із-за неявного "розподіленого додатка", то, хоча я можу їх зрозуміти, я думаю, що учасники голосування повинні були залишити коментар для пояснення цього.
— Девід каже повернути Моніку

2
Я припускаю, що йому потрібно лише змінити файл хосту, щоб він міг перевірити свою програму. Після тестування йому не потрібно буде змінювати файл хостів. Цілком прийнятно порекомендувати тут тюремне пробивання!
— Mongus Pong

14

Я щойно успішно відредагував файл хостів свого iPhone (на Jailbroken iOS 4.0).

  • Встановлено OpenSSH на iPhone через Cydia
  • Використовуючи клієнт SFTP, як FileZilla на своєму комп’ютері, я підключився до свого iPhone
    • Адреса: [використовуйте IP-адресу або ім'я хоста вашого телефону, наприклад. simophone.local]
    • Ім'я користувача: root
    • Пароль: alpine
  • Розташований /etc/hostsфайл
  • Зробив резервну копію на своєму комп’ютері (у випадку, якщо я хочу відновити зміни пізніше)
  • Відредагував файл хостів у гідному текстовому редакторі (наприклад, Блокнот ++ ). Дивіться тут для пояснення файлу хостів.
  • Завантажили зміни , перезаписавши файл хостів на iPhone

Телефон кешує деякі веб-сторінки та запити DNS, тому перезавантаження чи очищення кешу може допомогти. Сподіваюся, що хтось допомагає.

Саймон.


1
@Simon Я виконував ті самі кроки, але це не спрацювало. Тоді я спробував змінити параметри кодування, і отримав це! Ви повинні конвертувати свій хост-файл у ANSI у Блокноті ++, перш ніж зберегти його. Для кого не вдалося запрацювати файл хоста; натисніть " Перетворити в ANSI " у меню " Кодування ".
— trkaplan

2
Ви також можете скористатися додатком iFile від Cydia для редагування файлів хостів на своєму пристрої без використання комп'ютера. Ad @ m
— kirb

2
.. І змінити пароль за замовчуванням з альпійського на щось інше!
— Тієм

7

Він може існувати, але ви не можете змінити його на iPhone, який не має зламу.

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


всі веб-сервіси існують на сервері в моїй локальній мережі. У мене є доменне ім'я, і ​​я хотів би також позначити своє доменне ім'я на цьому сервері. і уявіть собі, що хтось дає вам адресу для всіх своїх веб-сервісів, він попросить вас запитувати ці служби за допомогою цієї адреси, він може показати вам, як додати файли хостів у mac, windows, але не iphone: -s
— Hoang Pham

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.
— Дзузун

Ні. Це теж не спрацювало. Ми використовуємо SSL Pinning, тому невідповідність домену переплутала його: '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: 449 748] libMobileGestalt MobileGestalt.c: 550: немає доступу до InverseDeviceID (див <rdar: // проблема / 11744455>) »
— codeslapper

5

Не змінюйте DNS на телефоні. Натомість підключіться через wifi до локальної мережі, і все налаштовано.

У мене в офісі є внутрішні сервери з внутрішнім DNS, які не піддаються впливу Інтернету. Я просто підключаюся з iPhone до офісного wifi і потім можу отримати доступ до них добре.

YMMV, але замість налаштування DNS телефону, мені здається, що просто налаштувати локальний внутрішній DNS та wifi - це більш чітке та просте рішення.


1

Ні, додаток для iPhone може змінювати речі лише у власній маленькій пісочниці. (І навіть є речі, які ви не можете змінити на льоту.)

Найкраще, можливо, використовувати IP-адресу серверів, а не ім'я хоста. Трохи складніше, але не , що важко , якщо вам просто потрібно вирішити одну адресу, буде поставити сервер DNS на вашому Mac і налаштувати iPhone , щоб використовувати це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.