Как перенаправить HTTP-запросы от iPad?

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

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

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

Ответ 1

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

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

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

Ответ 2

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

enter image description here

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

Ответ 3

Настройте файл 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/

Ответ 4

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

Моя машина dev видна в моей домашней сети как sapphire.local.

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

Ответ 5

Если у вас уже есть сервер Apache, на котором вы работаете, вы можете легко использовать его в качестве прямого прокси. Это особенно полезно для сайтов WordPress, которые действительно любят использовать полный абсолютный URL.

Пример Ubuntu ниже:

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

127.0.0.1 dev.mysite.com

Этот файл hosts будет использоваться вашим прокси-сервером 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 заблокирован моим брандмауэром.)

Ответ 6

Также возможно использовать 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/прокси-сервера.

Вот пример:

  • Я настроил Weblock следующим образом: http://i.stack.imgur.com/c5SUh.png
  • Открыл Safari и набрал www.google.com как URL
  • Это вывод в терминале на моем 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.

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

Ответ 7

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

Ответ 8

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

Обновление

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

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

Ответ 9

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

Ответ 10

Если у вас есть живой сайт, вы можете использовать для этого:

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

Ответ 11

Здесь нет способа настройки для тестирования на нескольких устройствах/компьютерах виртуального хоста Mamp Pro. Единственное ограничение - вы можете тестировать только один домен за раз, но для меня это нормально, когда я развиваюсь. Однако очень просто изменить между виртуальными хостами непосредственно в маме.

Im работает mamp pro 2, горный лев. Папка "Мои сайты" содержит отдельные папки домена.

Я обнаружил, что если вы выберете конкретный IP-адрес локального компьютера под виртуальным хостом "ip/port" и перезапустите mamp, этот домен станет доменом по умолчанию при просмотре IP-адреса локальных компьютеров или имени компьютера по сети.

В целях тестирования это отлично работает на всех устройствах в сети, включая iPad. Если вы хотите протестировать другой виртуальный хост, вы можете просто вернуть конфигурацию ip/port в "*", а затем переназначить другой домен на IP-адрес компьютеров и перезапустить.

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

Надеюсь, это поможет любому, кто ищет простое решение.

Ответ 12

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

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

Ответ 13

Хороший учебник для этого: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

Другой способ - подключить IPad через локальную точку доступа с моей MAC OS X и установить переадресацию портов на виртуальную машину разработки. Для этого я выполнил следующие шаги:

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

Где получить "IP-of-hotspot-host":

После создания точки доступа есть точка WLAN в
Настройки системы MAC OS X → Сеть → WLAN

Добавление ServerAlias:

На моей разработке VM (Apache2) в /etc/apache2/sites-available/dkr.dev.local Мне пришлось добавить следующее:

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

Ответ 14

Я бы попробовал Relay Server (часть Afaria), который может перенаправить мобильный трафик на основе профилей.

Обновление: тремолокий ответ кажется меньше проблем и намного дешевле.

Ответ 15

Если вы изучали это и несколько внешних ссылок, вы, возможно, найдете этот ответ:

fooobar.com/questions/55512/...

Речь идет о слабом сервере DNS, называемом dnsmasq. Супер простой, очень мощный и может использоваться в сочетании с внутренними или внешними DNS-серверами.

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

Хорошо стоит рассмотреть.

Я принял это как обычный инструмент для разработки и для нормальной работы в сети.

Ответ 16

Ответы здесь верны. Немного больше знаний: они не будут работать с фиксацией сертификата. То, что вы можете сделать, это либо (1) использовать сертификат wildcard домена для поддержки тестирования dev/test/qa. И/или (2) использовать обратный прокси-сервер, такой как Apache, посредством которого вы переходите туда, где Apache направляет запросы в вашей сети. Теперь, когда вы проходите тестирование SSL Pinning, вы мертвы в воде с помощью физических устройств и можете только проверять с помощью симулятора (ios) и эмулятора (android).