Как я могу перенаправить HTTP-запросы, сделанные с iPad? - PullRequest
114 голосов
/ 02 августа 2011

Поскольку на iPad мы не можем редактировать файл hosts (без джейлбрейка), как мы можем произвольно перенаправить веб-трафик на другой URL?

Это было бы важно для чего-то такого, как разработка веб-сайта, который использует конфигурацию виртуального хоста, где вы хотите перенаправить на компьютер разработчика.

(Это связано с этим вопросом: Можно ли отредактировать файл хоста iPad? )

Ответы [ 16 ]

85 голосов
/ 02 августа 2011

Чтобы обойти это ограничение iPad, можно использовать прокси-сервер HTTP, такой как Squid , работающий на другом компьютере, где вы можете редактировать файл hosts.

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

После настройки вы сможете управлять iPad, как если бы вы меняли файл hosts.

70 голосов
/ 01 августа 2012

Я обнаружил , вам просто нужно изменить настройки Wifi в вашем iPad, чтобы использовать IP-адрес вашего компьютера для разработки в качестве HTTP-прокси (как описано в вышеупомянутой статье ):

enter image description here

Таким образом, достаточно иметь доступ к вашему веб-приложению на iPad, введя URL-адрес виртуального хоста (например, local.mywebapp.com). Это просто и быстро, но, в отличие от решения Уилла Келера, вы не сможете получить доступ к Интернету с iPad. Но в большинстве случаев это не проблема, поскольку вы просто хотите протестировать свое собственное приложение.

28 голосов
/ 03 августа 2011

Установите файл hosts на компьютере с прокси-сервером, таким как 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/

9 голосов
/ 26 сентября 2013

Если у вас уже есть сервер Apache , где вы работаете с dev, вы можете легко использовать его в качестве прямого прокси-сервера. Это особенно полезно для сайтов 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 голосов
/ 20 декабря 2011

Мне нужно протестировать веб-приложения, которые я разрабатываю на iPad.Я использую Apache на своем компьютере разработчика для запуска веб-приложений, поэтому самым простым решением, которое я нашел, было использование Apache mod_proxy.

Мой компьютер dev отображается в моей домашней сети как 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.Метод работает только для одного приложения за раз.Я думаю, что вы можете использовать разные порты для установки дополнительных приложений.Может быть, у кого-то есть лучшее решение?

7 голосов
/ 27 июня 2014

Также можно использовать приложение 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
    GET http://www.google.com/ HTTP/1.1
    Host: www.google.com
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Proxy-Connection: keep-alive
    PREF=ID=7722bc3c844a7c26:TM=1402073839:LM=1402073839:S=5bSJJsM2p0HgUP7L
    User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    Connection: keep-alive

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

* * Пример 1 022: Если я создам правило перенаправления URL-адреса для htt *: //somedomain.com/api/login* и некоторого IP-адреса и порта, я буду видеть только трафик с этого URL-адреса по этому IP-адресу и порту, а все остальные трафик к somedomain.com будет идти непосредственно к IP, возвращенному DNS. Обратите внимание, что он будет работать как для / api / login , так и / api / login? Someparam = somevalue благодаря подстановочному знаку * в конце правила.
6 голосов
/ 11 октября 2013

Я сделал это с помощью squidman на Mac.Его легко настроить и использовать.
Я настроил его за 5 минут, прочитав эту статью .

Обновление

Другая вещьесли вы хотите подключиться к веб-сайтам, работающим на прокси-сервере, в моем случае это мой Mac, вам нужно закомментировать эту строку в squidman-> Preferences-> Template

# protect web apps running on the proxy host from external users
# http_access deny to_localhost
5 голосов
/ 26 августа 2011

Вы можете настроить внутренний DNS-сервер в вашей сети (если он еще не существует) и настроить запись A. Затем убедитесь, что ваш DHCP настроен на возврат указанного DNS-сервера

3 голосов
/ 30 сентября 2013

Вы также можете использовать http://xip.io/, используя инструкции на этой странице, вы можете ввести IP-адрес, и он перенаправит вас на соответствующий локальный IP-адрес.

2 голосов
/ 22 февраля 2013

Если у вас есть действующий веб-сайт, который вы можете использовать для этого:

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

...