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


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

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

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

16 109

16 ответов:

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

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

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

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

enter image description here

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

установите файл 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/

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

моя машина dev отображается в моей домашней сети как sapphire.местный.

веб-приложение, которое я тестирую, размещено на машине dev в demo.КМВ.dev (я использую POW).

чтобы настроить прокси, я добавил следующий раздел в httpd.конф.

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

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

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

Ubuntu пример:

первым шагом является редактирование /etc/hosts файл на сервере разработчика. Добавьте локальный 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 и порт. Это это!

The <Proxy *> блок гарантирует, что только людям в локальной сети могут использовать этот прокси. Строго ограничение доступа важно если вы используете прямой прокси. Элемент ip2cidr страница будет полезна в этот момент. (В качестве дополнительной меры порт :8080 заблокирован моим брандмауэром.)

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

это позволяет перенаправлять любой трафик, соответствующий определенному правилу, на указанный IP-адрес. Это будет эмулировать добавление записи в /etc / hosts на вашем устройстве iOS. Если имя хоста, заданное в запросах, обрабатывается IP, на который вы направляете свой трафик, вы можете использовать его для тестирования private 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.

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

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

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

обновление

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

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

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

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

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

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

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

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

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

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

надеюсь, что это поможет всем, кто ищет простое решение.

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

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

хороший учебник, чтобы сделать это: 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 к точке доступа-WLAN (на iPAD >> Настройки >> беспроводная локальная сеть)
  • добавить ServerAlias в локальную разработку-VM (подробности ниже)
  • установить ssh-portforwarding
    ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • int браузер 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.разработка.местные Мне пришлось добавить следующее:

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

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

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

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

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

стоит задуматься.

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

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

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

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