web-dev-qa-db-fra.com

Comment puis-je rediriger les requêtes HTTP effectuées depuis un iPad?

Étant donné que sur un iPad, nous ne pouvons pas modifier le fichier hosts (sans jailbreak), comment pouvons-nous rediriger de manière arbitraire le trafic Web vers une autre URL?

Cela serait important pour le développement d'un site Web utilisant une configuration d'hôte virtuel dans lequel vous souhaitez rediriger vos tâches vers une machine de développement.

(Ceci est lié à cette question: Puis-je modifier le fichier hôte d'un iPad? )

110
tremoloqui

Le moyen de contourner cette limitation de l'iPad consiste à utiliser un serveur proxy HTTP, tel que Squid s'exécutant sur un autre ordinateur sur lequel vous pouvez modifier le fichier hosts.

Sur l'iPad Sous Paramètres -> Réseau -> Wi-Fi -> (Votre réseau) Un paramètre de proxy HTTP peut être défini sur manuel. Entrez vos informations de proxy ici.

Une fois cela configuré, vous pourrez manipuler l'iPad comme si vous changiez le fichier hosts.

82
tremoloqui

J'ai trouvé il vous suffit de modifier les paramètres Wifi de votre iPad pour utiliser l'adresse IP de votre ordinateur de développement en tant que proxy HTTP (comme expliqué dans l'article susmentionné ):

enter image description here

De cette manière, il suffit de pouvoir accéder à votre application Web sur votre iPad en entrant l'URL de l'hôte virtuel (par exemple, local.mywebapp.com). C'est simple et rapide, mais contrairement à la solution de Will Koehler, vous ne pourrez cependant pas accéder à Internet à partir de l'iPad. Mais la plupart du temps, ce n'est pas vraiment un problème, car vous voulez simplement tester votre propre application.

69
Stéphane

Configurez le fichier hosts sur un ordinateur exécutant un serveur proxy tel que Fiddler ou Charles, puis configurez l'iPad pour utiliser cet ordinateur en tant que proxy HTTP.

Voici comment faire avec Fiddler: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

Et ceci est pour Charles: http://www.ravelrumba.com/blog/ipad-http-debugging/

27
sagi

Si vous avez déjà un serveur Apache sur lequel vous travaillez dev, vous pouvez facilement l'utiliser en tant que proxy direct. Ceci est particulièrement utile pour les sites WordPress, qui aiment vraiment utiliser l'URL absolue absolue. 

Ubuntu exemple ci-dessous:

La première étape consiste à éditer le fichier /etc/hosts sur votre serveur dev. Ajoutez l'adresse IP locale du serveur en pointant vers votre site.

127.0.0.1 dev.mysite.com

Ce fichier hôte sera utilisé par votre proxy Apache lorsqu'il tentera de résoudre les demandes de votre iPhone/iPad. Donc, configurons maintenant la partie Apache ...

Vous devrez peut-être d'abord installer certains modules. 

Sudo apt-get install libapache2-mod-proxy-html
Sudo a2enmod proxy proxy_http proxy_html
Sudo Apache2ctl graceful

Créez ensuite un fichier d’hôte virtuel, par exemple /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>

Activez vhost et redémarrez Apache:

Sudo a2ensite my-proxy
Sudo Apache2ctl graceful

Ensuite, allez à Paramètres> Wi-Fi> Votre réseau et configurez un proxy "manuel". Entrez l'adresse IP de votre serveur Apache et le port. C'est tout! 

Le bloc <Proxy *> garantit que seules les personnes de mon réseau local peuvent utiliser ce proxy. Limiter strictement l’accès est essentiel si vous utilisez un proxy direct. La page ip2cidr sera utile à ce stade. (À titre de mesure supplémentaire, le port 8080 est bloqué par mon pare-feu.)

9
Manuel Razzari

Je dois tester les applications Web que je développe sur un iPad. J'utilise Apache sur ma machine de développement pour exécuter les applications Web. La solution la plus simple que j'ai trouvée consistait donc à utiliser Apache mod_proxy.

Ma machine de développement est visible sur mon réseau domestique sous le nom sapphire.local.

L'application Web que je teste est hébergée sur la machine de développement à l'adresse demo.cms.dev (j'utilise POW).

Pour configurer le proxy, j'ai ajouté la section suivante à 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>

Cela achemine les demandes entrantes sur sapphire.local vers demo.cms.dev. La méthode ne fonctionne que pour une application à la fois. Je pense que vous pouvez utiliser différents ports pour configurer des applications supplémentaires. Peut-être que quelqu'un a une meilleure solution?

9
Will Koehler

Il est également possible d'utiliser l'application Weblock - AdBlock pour iOS (disponible au prix de 1,99 $ ici: https://iTunes.Apple.com/us/app/weblock/id558818638?mt=8 ) pour créer des redirections de trafic Web.

Cela vous permet de rediriger tout trafic correspondant à certaines règles vers une adresse IP spécifiée. Cela émulera l'ajout d'une entrée à/etc/hosts sur votre périphérique iOS. Si le nom d'hôte défini dans les demandes est géré par l'adresse IP vers laquelle vous dirigez votre trafic, vous pouvez l'utiliser pour tester une API privée ou même pour détecter le trafic envoyé depuis d'autres applications ou sites Web. Cela ne fonctionne malheureusement que pour les connexions http/https. 

Tout cela ne peut être fait que sur Wi-Fi (une des limites de Weblock). Son principal avantage est que vous pouvez facilement tout configurer à partir de votre appareil iOS et qu'il n'est pas nécessaire de jouer avec la configuration du serveur DNS/proxy.

Voici un exemple:

  1. J'ai configuré Weblock comme ceci: http://i.stack.imgur.com/c5SUh.png
  2. Safari ouvert et saisi sur www.google.com en tant qu'URL
  3. Voici la sortie du terminal sur mon Mac à l'écoute d'une connexion sur le port 1234:

 macbook-pro-tk: ~ kpr $ nc -l -v -v 1234 
 GET http://www.google.com/ HTTP/1.1 
 Hôte: www.google.com 
 Accepter: text/html, application/xhtml + xml, application/xml; q = 0,9, */*; q = 0,8 
 Connexion proxy: persistance 
 PREF = ID = 7722bc3c844a7c26: TM = 1402073839: LM = 1402073839: S = 5bSJJsM2p0HgUP7L 
 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 comme Mac OS X) AppleWebKit/537.51.2 (KHTML comme Gecko) Version/7.0 Mobile/11D201 Safari/9537.53 
 Accept-Language: en-us 
 Accept-Encoding: gzip, deflate 
 Connexion: Keep-Alive 

Weblock est également utile pour rediriger sélectivement certaines URL avec des expressions régulières . Vous pouvez rediriger les requêtes vers certains points de terminaison uniquement, alors que toutes les autres requêtes vont à l'IP renvoyée du DNS. Cela permet en fait une configuration encore plus appropriée que celle de/etc/hosts.

Exemple: Si je crée une règle de redirection d’URL pour htt *: //somedomain.com/api/login* et une adresse IP et un port, je ne verrai que le trafic de cette URL sur cette adresse IP et ce port, tandis que tout le trafic destiné à somedomain.com ira directement à l'adresse IP renvoyée par le DNS. Notez que cela fonctionnera pour les deux / api/login et / api/login? someparam = somevalue grâce au caractère générique * à la fin de la règle.

7
koper

Je l'ai fait en utilisant squidman sur Mac. Il est facile à configurer et à utiliser.
Je l'ai mis en place en 5 minutes en suivant cet article .

Mettre à jour

Une autre chose est que si vous voulez vous connecter aux sites Web fonctionnant sur un serveur proxy, dans mon cas, c'est mon Mac, vous devez commenter cette ligne dans squidman-> Préférences-> Modèle.

# protect web apps running on the proxy Host from external users
# http_access deny to_localhost
6
Lei Cao

Vous pouvez configurer un serveur DNS interne sur votre réseau (s'il en existe déjà un) et créer un enregistrement A. Ensuite, assurez-vous que votre DHCP est configuré pour renvoyer ledit serveur DNS

5
MASSPro

Vous pouvez également utiliser http://xip.io/ en suivant les instructions de cette page, vous pouvez entrer l'adresse IP et celle-ci vous redirigera vers l'adresse IP locale correspondante.

3
R Reveley

Si vous avez un site web en direct, vous pouvez utiliser pour cela:

Vous pouvez ajouter un enregistrement A à votre configuration DNS: quelque chose.votre domaine.com qui pointe vers votre adresse IP locale, puis ajouter une entrée pour quelque chose.votre domaine.com à votre fichier d'hôtes virtuels. Redémarrez Apache, installez votre appareil iOS sur le même réseau et vous êtes prêt à partir.

2
Daniel Powers

Le serveur DNS interne est l’une des options mais c’était trop lourd à mettre en œuvre. Nous avons essayé d'installer squid en tant que serveur proxy, mais cela ne fonctionnait pas non plus, car il redirigeait l'URL vers le nouveau serveur et cette redirection était également visible sur l'URL du navigateur.

Ce qui a finalement fonctionné pour nous est d'installer Fiddler sur l'un des serveurs et d'utiliser ce serveur comme serveur proxy sur ipad. Fiddler dispose également d’une fonctionnalité permettant de mapper les sous-domaines sur l’adresse IP, par exemple quelque chose de similaire à/etc/hosts.

1
Deepak

Voici une méthode de non-configuration pour le test multi-ordinateur/ordinateur d'un hôte virtuel Mamp Pro. La seule limite est que vous ne pouvez tester qu'un domaine à la fois, mais pour moi, tout va bien lorsque je développe. Il est cependant très simple de changer d’hôte virtuel directement dans mamp.

Je cours mamp pro 2, Mountain Lion. Le dossier Mes sites contient les dossiers de domaine individuels. 

J'ai découvert que si vous choisissez l'adresse IP spécifique de l'ordinateur local sous l'hôte virtuel 'ip/port' et redémarrez mamp, ce domaine deviendra le domaine par défaut lors de l'affichage de l'adresse IP ou du nom de l'ordinateur des hôtes locaux sur le réseau.

À des fins de test, cela fonctionne très bien sur tous les appareils du réseau, y compris l'iPad. Si vous souhaitez tester un autre hôte virtuel, vous pouvez simplement renvoyer la configuration ip/port à "*", puis réaffecter un autre domaine à l'adresse IP de l'ordinateur et redémarrer.

L'avantage de cette approche simple est que vous pouvez fournir un accès aux clients directement à vos sites de développement lorsque vous êtes sur le même réseau sans passer par aucune configuration sur leur ordinateur. 

J'espère que cela aidera tous ceux qui recherchent une solution simple.

1
roborew

Bon tutoriel pour le faire: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

Une autre méthode consiste à connecter l'IPad via un point d'accès local à mon MAC OS X et à établir un transfert de port vers la machine virtuelle de développement . Pour y parvenir, procédez comme suit: 

  • sur MAC OS X créer un hotspot WLAN Lien comment faire cela
  • connecter l'iPad au Hotspot-WLAN (sur iPAD >> Paramètres >> WLAN)
  • Ajoutez ServerAlias ​​à la machine virtuelle de développement locale (détails ci-dessous) 
  • établir ssh-portforwarding
    ssh -NL <IP-of-hotspot-Host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • int le navigateur iPADs ouvrir la page avec l'IP
    <IP-of-hotspot-Host>:<source-port>

Où trouver 'IP-of-hotspot-Host':

Une fois le hotspot créé, il y a un point WLAN dans
Paramètres système MAC OS X >> Réseau >> WLAN 

Ajouter le ServerAlias:

Lors de mon développement-VM (Apache2) dans /etc/Apache2/sites-available/dkr.dev.local J'ai dû ajouter ce qui suit:

<VirtualHost *: 80> 
 ... ServerAlias ​​<IP-of-hotspot-Host> 
 ... 
 </ VirtualHost>
1
Christian Waltjen

Si vous avez exploré ceci et quelques liens externes, vous trouverez probablement la réponse suivante:

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

Il s’agit d’un serveur DNS léger appelé dnsmasq. Super simple, très puissant et peut être utilisé avec vos serveurs DNS internes ou externes.

Beaucoup plus facile que d'installer un calmar, de jouer avec Apache et d'autres techniques qui prendraient du temps et mettraient en péril "l'intégrité" des configurations, développeraient des environnements, des environnements de test, etc.

Bien à considérer.

J'ai adopté cela comme un outil régulier de développement et de réseautage normal. 

1
Carlos Cap

Les réponses ci-dessus sont correctes. Un peu plus de connaissances: cela ne fonctionnera pas avec l'épinglage de cert. Ce que vous pouvez faire est soit (1) d’utiliser un certificat de joker de domaine pour prendre en charge le test de votre région dev/test/qa. Et/ou (2) utilisez un serveur proxy inverse tel qu'Apache grâce auquel vous passez à l'emplacement où Apache achemine les demandes au sein de votre réseau. Désormais, lorsque vous vous lancez dans les tests d'épinglage SSL, vous êtes dans l'eau avec les périphériques physiques et ne pouvez valider qu'avec le simulateur (ios) et l'émulateur (Android).

0
codeslapper

Je voudrais essayer le serveur de relais (une partie de Afaria) qui peut rediriger le trafic mobile en fonction des profils.

Mise à jour: la réponse de tremoloqui semble moins difficile et beaucoup moins chère.

0
tomdemuyt