Як я можу перенаправляти запити HTTP, зроблені з iPad?


116

Оскільки на iPad ми не можемо редагувати файл хосту (без джейлбрейка), як ми можемо довільно перенаправляти веб-трафік на інший URL?

Це було б важливо для чогось, наприклад, розробки веб-сайту, який використовує конфігурацію Virtual Host, куди потрібно перенаправити машину розробки.

(Це пов’язано з цим питанням: чи можна редагувати хост-файл iPad? )

Відповіді:


88

Шляхом подолання цього обмеження iPad є використання проксі-сервера HTTP, наприклад Squid, який працює на іншій машині, де ви можете редагувати файл хостів.

На iPad у розділі Налаштування -> Мережа -> Wi-Fi -> (Ваша мережа) Є налаштування HTTP-проксі, який можна встановити вручну. Введіть сюди інформацію про проксі.

Після цього ви зможете маніпулювати iPad так, як якщо б ви змінювали файл хостів.


3
Для запису я б сказав, що встановити кальмари досить просто за допомогою макпортів "sudo port install squid"
MiQUEL

1
або yum install squidна Fedora
Абхішек

3
або apt-get install squidна Ubuntu
Джесс Телфорд

3
Примітка. Кожен раз, коли ви редагуєте файл хостів на своєму сервері кальмарів, перезапускайте службу Squid, щоб переконатися, що зміни вступили в силу. На Ubuntu це sudo service squid3 reload. Крім того - і, можливо, це проблема конфігурації, характерна для мого сервера розробки, - на своєму iPad я повинен вручну ввести http: //, щоб вирішити адресу, щоб правильно працювати.
Енді Гіслер

1
Ще один, простіший спосіб зробити це за допомогою інструменту, який я написав: testProxy. Немає необхідності настройки: github.com/edwinm/testProxy
Edwin

71

Я виявив, що вам просто потрібно змінити налаштування Wi-Fi у вашому iPad, щоб використовувати IP-адресу вашої машини розвитку як проксі-сервер HTTP (як пояснено у вищезгаданій статті ):

введіть тут опис зображення

Таким чином, досить мати можливість отримати доступ до веб-програми на своєму iPad, ввівши URL-адресу віртуального хоста (наприклад local.mywebapp.com). Це просто і швидко, але на відміну від рішення Вілла Келера, ви не зможете отримати доступ до Інтернету з iPad. Але більшість часу це насправді не проблема, оскільки ви просто хочете протестувати власну програму.


1
Чудова відповідь. Якщо ви тестуєте додаток для рейок за допомогою Webrick, просто встановіть ip-адресу вашої машини для розробників та порт 3000
lsaffie

4
Якщо ви використовуєте Wamp або uWamp в Windows, встановіть порт 80.
Epoc

10
Як щодо випадків, таких як мій, коли ваш локальний додаток витягує дані з різних API в мережі?
Джаред Етьньє

28

Встановіть файл хостів на комп'ютері, на якому працює проксі-сервер, такий як Fiddler або Charles, і налаштуйте iPad для використання цього комп'ютера як HTTP-проксі.

Ось інструкції, як це зробити за допомогою Fiddler: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

І це для Чарльза: http://www.ravelrumba.com/blog/ipad-http-debugging/


Дякуємо, що розгорнули параметри Windows / Mac.
tremoloqui

2
Для нас, розробників Windows, Fiddler - це чудовий варіант, оскільки більшість розробників вже встановлено.
Джош Мауч

11

Якщо у вас вже є сервер Apache, де ви робите розробник, ви можете легко використовувати його як прямий проксі. Це особливо корисно для сайтів WordPress, які дуже люблять використовувати повну абсолютну URL-адресу.

Приклад Ubuntu нижче:

Перший крок - це відредагувати /etc/hostsфайл на вашому сервері розробників. Додайте локальний IP-сервер, вказуючи на ваш сайт.

127.0.0.1 dev.mysite.com

Цей файл хостів буде використовуватися вашим проксі-сервером Apache, коли він намагатиметься вирішити запити з вашого iPhone / iPad. Тож давайте налаштуємо частину Apache зараз ...

Можливо, спочатку вам доведеться встановити деякі модулі.

sudo apt-get install libapache2-mod-proxy-html
sudo a2enmod proxy proxy_http proxy_html
sudo apache2ctl graceful

Потім створіть, наприклад, файл віртуального хоста /etc/apache2/sites-available/my-proxy

Listen *:8080
<VirtualHost *:8080>
    ProxyRequests On

    <Proxy *>
        Order Deny,Allow
        Deny from all
        Allow from 192.168.1.0/24 
    </Proxy>
</VirtualHost>

Увімкніть vhost та перезапустіть Apache:

sudo a2ensite my-proxy
sudo apache2ctl graceful

Потім перейдіть у Налаштування> Wi-Fi> Ваша мережа та налаштуйте "Ручний" проксі. Введіть IP свого сервера Apache та порт. Це воно!

У <Proxy *>блок гарантує , що тільки люди на моїй локальній мережі можуть використовувати цей проксі - сервер. Суворе обмеження доступу є суттєвим, якщо ви використовуєте прямий проксі. Сторінка ip2cidr буде корисною в цей момент. (Як додатковий захід: мій брандмауер блокує порт: 8080.)


9

Мені потрібно перевірити веб-програми, які я розробляю на iPad. Я використовую Apache на своїй машині розробки для запуску веб-додатків, тому найпростішим рішенням, який я знайшов, було використання Apache mod_proxy.

Моя машина розробки видно у моїй домашній мережі як sapphire.local.

Веб-додаток, який я тестую, розміщено на машині розробки на веб-сайті demo.cms.dev (я використовую POW).

Щоб налаштувати проксі, я додав наступний розділ до httpd.conf.

<VirtualHost *:80>
  ServerName sapphire.local
  ProxyPass / http://demo.cms.dev/
  ProxyPassReverse / http://demo.cms.dev/
  ProxyPassReverseCookieDomain .cms.dev .sapphire.local
  ProxyPreserveHost Off
</VirtualHost>

Цей маршрут спрямовує вхідні запити на sapphire.local до demo.cms.dev. Метод працює лише для однієї програми одночасно. Я думаю, ви можете використовувати різні порти для налаштування додаткових додатків. Можливо, у когось є краще рішення?


Це вказувало мені в правильному напрямку. Спочатку я отримав повідомлення про помилку "Жоден обробник протоколу недійсний для URL-адреси". Я виявив, що мені потрібно завантажити і proxy_module, і proxy_http_module, щоб змусити його працювати. Дякую!
Hobo

8

Також можна використовувати додаток Weblock - AdBlock для iOS (доступний за $ 1,99 тут: https://itunes.apple.com/us/app/weblock/id558818638?mt=8 ) для створення переспрямувань веб-трафіку.

Це дозволяє перенаправляти будь-який трафік, який відповідає певному правилу вказаній IP-адресі. Це додасть запис до / etc / hosts на пристрої iOS. Якщо ім'я хоста, задане в запитах, обробляється IP, на який ви спрямовуєте свій трафік, ви можете використовувати це для тестування приватного API або навіть обнюхування трафіку, надісланого з інших програм або веб-сайтів. Це, на жаль, працює лише для http / https-з'єднань.

Все це можна зробити лише під час роботи на Wi-Fi (одне з обмежень Weblock). Основна перевага полягає в тому, що ви можете легко налаштувати все з вашого пристрою iOS, і немає необхідності возитися з конфігурацією DNS / проксі-сервера.

Ось приклад:

  1. Я налаштував Weblock так: http://i.stack.imgur.com/c5SUh.png
  2. Відкрили Safari і ввели як www.google.com як URL
  3. Це вихід у терміналі на моєму Mac прослуховуванні для підключення до порту 1234:
    macbook-pro-tk: ~ kpr $ nc -l -v -v 1234
    Отримайте http://www.google.com/ HTTP / 1.1
    Ведучий: www.google.com
    Прийняти: текст / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8
    Проксі-з'єднання: зберігайте життя
    PREF = ID = 7722bc3c844a7c26: TM = 1402073839: LM = 1402073839: S = 5bSJJsM2p0HgUP7L
    Користувач-агент: Mozilla / 5.0 (iPhone; CPU iPhone OS 7_1_1, як Mac OS X) AppleWebKit / 537.51.2 (KHTML, як Gecko) Версія / 7.0 Мобільний / 11D201 Safari / 9537.53
    Мова прийняття: en-us
    Accept-Encoding: gzip, deflate
    З'єднання: продовжуйте жити

Weblock також хороший, щоб вибірково перенаправляти деякі URL-адреси за допомогою регулярних виразів. Ви можете перенаправляти запити лише до певної кінцевої точки, тоді як усі інші запити йдуть до IP, поверненого з DNS. Це фактично дозволяє отримати ще більш придатну конфігурацію, яку робить / etc / hosts.

Приклад: Якщо я створять правило для переадресації URL-адрес для htt *: //somedomain.com/api/login* та деяких IP-адрес та портів, я побачу лише трафік з цієї URL-адреси на цьому IP-адресі та порту, а весь інший трафік - на один домен. com перейде безпосередньо до IP, поверненого DNS. Зауважте, що він буде працювати як для / api / login, так і / api / login? Someparam = somevalue завдяки знаку wildcard * в кінці правила.


Дякую. Я щойно придбав це і збираюся спробувати.
Денніс День

6

Я зробив це за допомогою squidman на Mac. Налаштувати та використовувати це просто.
Я встановив це за 5 хвилин, дотримуючись цієї статті .

Оновлення

Інша справа, якщо ви хочете підключитися до веб-сайтів, які працюють на проксі-сервері, в моєму випадку це мій Mac, вам потрібно прокоментувати цей рядок у squidman-> Preferences>> Template

# protect web apps running on the proxy host from external users
# http_access deny to_localhost

5

Ви можете налаштувати внутрішній сервер DNS у вашій мережі (якщо такого вже немає) та встановити запис A. Потім переконайтеся, що ваш DHCP встановлений для повернення вказаного DNS-сервера


3

Ви також можете скористатися http://xip.io/, скориставшись інструкціями на цій сторінці, ви можете ввести ip адресу, і вона перенаправить вас на відповідний локальний ip.


2

Якщо у вас є живий веб-сайт, який ви можете використовувати для цього:

Ви можете додати запис до своєї конфігурації DNS: something.yourdomain.com, який вказує на вашу локальну IP-адресу, а потім додати запис для something.yourdomain.com у файл вашого віртуального хостів. Перезапустіть Apache, підключіть свій пристрій iOS до тієї самої мережі, і ви готові працювати.


1

Тут не існує способу конфігурації для тестування пристроїв / комп’ютерів віртуального хоста Mamp Pro. Єдине обмеження - ви можете перевіряти лише один домен за один раз, але для мене це нормально, коли я розробляю. Але дуже просто змінювати між віртуальними хостами безпосередньо в болоті.

Я бігаюча бомба pro 2, гірський лев. Папка "Мої сайти" містить окремі папки домену.

Я виявив, що якщо ви виберете конкретний ip локального комп’ютера під віртуальним хостом 'ip / port' і перезапустите mamp, цей домен стане домену за замовчуванням під час перегляду ip-адреси локальних комп'ютерів або імені комп'ютера по всій мережі.

Для тестування це чудово працює на всіх пристроях у мережі, включаючи iPad. Якщо ви хочете протестувати інший віртуальний хост, ви можете просто повернути конфігурацію ip / порту на "*", а потім присвоїти інший домен ip-адресі комп'ютерів та перезапустити.

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

Сподіваюсь, це допоможе тому, хто шукає простого рішення.


1

Внутрішній сервер DNS є одним із варіантів, але це було занадто громіздко. Ми спробували встановити кальмар як проксі-сервер, але це також не спрацювало, оскільки він перенаправляв URL-адресу на новий сервер, і це перенаправлення було помічено і в URL-адресі браузера.

Що, нарешті, для нас спрацювало - встановити Fiddler на одному з серверів і використовувати цей сервер як проксі-сервер на ipad. У Fiddler також є можливість відображення піддоменів на IP-адресу, тобто щось подібне до / etc / hosts.


1

Приємний підручник для цього: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

Інший спосіб - підключити IPad через Local Hotspot з моєю MAC OS X та встановити переадресацію порту до VM розробки. Для цього я зробив наступні кроки:

  • на MAC OS X створіть посилання WLAN-Hotspot, як це зробити
  • підключіть iPAD до Hotspot-WLAN (на iPAD >> Налаштування >> WLAN)
  • Додайте ServerAlias ​​до локальної програми VM (детальніше нижче)
  • встановити ssh-portforwarding
    ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • у веб-переглядачі iPAD відкрийте сторінку з IP-адресою
    <IP-of-hotspot-host>:<source-port>

Де взяти "IP-хот-спот-хост":

Після створеної точки доступу з’являється точка WLAN у
системних налаштуваннях MAC OS X >> Мережа >> WLAN

Додавання ServerAlias:

Під час моєї розробки-VM (Apache2) в /etc/apache2/sites-available/dkr.dev.local мені довелося додати наступне:

<VirtualHost *: 80>  
    ...  
    ServerAlias ​​<IP-of-hotspot-host>  
    ...  
</VirtualHost>

1

Якщо ви вивчали це та кілька зовнішніх посилань, ви, можливо, знайдете цю відповідь:

https://stackoverflow.com/a/24770097/3842985

Йдеться про неважкий DNS-сервер під назвою dnsmasq. Супер простий, дуже потужний і може використовуватися разом із внутрішніми чи зовнішніми серверами DNS.

Набагато простіше, ніж установка кальмарів, обман з Apache та іншими методами, які забирали б багато часу та ризикували "цілісністю" конфігурацій, розробляти середовища, тестові середовища тощо.

Ну варто подумати.

Я прийняв це як звичайний інструмент для розвитку та для нормальних мереж.


1

Використання користувальницького сервера DNS на ПК може вирішити це. Я прекрасно використовую і працюю.

Перевірте https://technitium.com/dns/, щоб завантажити спеціальний DNS-сервер. Який побудований за допомогою технології .Net. Після налаштування цього інструменту вам потрібно змінити налаштування DNS на спеціальний та встановити IP вашого ПК. Щоб уникнути зміни IP кожного разу при перезавантаженні ПК, використовуйте статичний IP на ПК.


0

Я б спробував Relay Server (частина Афариї), який може перенаправляти мобільний трафік на основі профілів.

Оновлення: відповідь тремолокі здається меншою проблемою і набагато дешевшою.


0

Відповіді тут правильні. Трохи більше знань: це не допоможе при зафіксуванні cert. Що ви можете зробити, це або (1) використовувати домен підстановки домену для підтримки тестування регіону dev / test / qa. І / або (2) використовувати зворотний проксі-сервер, наприклад Apache, за допомогою якого ви переходите до того, куди Apache спрямовує запити у вашій мережі. Тепер, коли ви потрапляєте на тестування SSL Pinning, тоді ви мертві у воді з фізичними пристроями і можете перевірити лише тренажер (ios) та емулятор (android).

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