Comment redirect les requêtes HTTP à partir d’un iPad?

Étant donné que sur un iPad, nous ne pouvons pas éditer le fichier hosts (sans jailbreaking), comment pouvons-nous redirect arbitrairement 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 sur lequel vous souhaitez redirect vers un ordinateur de développement.

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

Le moyen de contourner cette limitation de l’iPad consiste à utiliser un serveur proxy HTTP, tel que Squid, 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 Il existe un paramètre de proxy HTTP qui peut être défini sur manuel. Entrez vos informations de proxy ici.

Une fois cette configuration effectuée, vous pourrez manipuler l’iPad comme si vous changiez le fichier hosts.

J’ai constaté qu’il suffisait de modifier les parameters Wifi de votre iPad pour utiliser l’adresse IP de votre machine de développement en tant que proxy HTTP (comme expliqué dans l’ article susmentionné ):

entrer la description de l'image ici

De cette façon, il suffit de pouvoir accéder à votre application Web sur votre iPad en saisissant 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 depuis l’iPad. Mais la plupart du temps, ce n’est pas vraiment un problème, car vous voulez juste tester votre propre application.

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 les instructions pour faire cela avec Fiddler: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

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

Je dois tester des 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 à utiliser Apache mod_proxy.

Ma machine dev est visible sur mon réseau domestique comme sapphire.local.

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

Pour configurer le proxy, j’ai ajouté la section suivante à httpd.conf.

  ServerName sapphire.local ProxyPass / http://demo.cms.dev/ ProxyPassReverse / http://demo.cms.dev/ ProxyPassReverseCookieDomain .cms.dev .sapphire.local ProxyPreserveHost Off  

Cela achemine les requêtes 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 d’autres applications. Peut-être que quelqu’un a une meilleure solution?

Si vous avez déjà un serveur Apache sur lequel vous faites du développement, vous pouvez facilement l’utiliser comme proxy direct. Ceci est particulièrement utile pour les sites WordPress, qui aiment vraiment utiliser l’URL complète.

Ubuntu exemple ci-dessous:

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

127.0.0.1 dev.mysite.com

Ce fichier hosts sera utilisé par votre proxy Apache lorsqu’il tentera de résoudre des requêtes à partir de votre iPhone / iPad. Alors installons la partie Apache maintenant …

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 hôte virtuel, par exemple /etc/apache2/sites-available/my-proxy

 Listen *:8080  ProxyRequests On  Order Deny,Allow Deny from all Allow from 192.168.1.0/24   

Activez le vhost et redémarrez Apache:

 sudo a2ensite my-proxy sudo apache2ctl graceful 

Ensuite, allez dans 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 garantit que seules les personnes de mon réseau local peuvent utiliser ce proxy. Limiter ssortingctement l’access 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.)

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 redirect tout trafic correspondant à certaines règles vers l’adresse IP spécifiée. Cela émulera en ajoutant une entrée à / etc / hosts sur votre appareil iOS. Si le nom d’hôte défini dans les requêtes est géré par l’adresse IP vers laquelle vous dirigez votre trafic, vous pouvez l’utiliser pour tester l’API privée ou même pour renifler le trafic envoyé par d’autres applications ou sites Web. Cela fonctionne malheureusement uniquement pour les connexions http / https.

Tout cela ne peut se faire que sur Wi-Fi (une des limitations de Weblock). Le principal avantage est que vous pouvez facilement tout configurer à partir de votre appareil iOS et qu’il n’est pas nécessaire de modifier la configuration du serveur DNS / proxy.

Voici un exemple:

  1. J’ai configuré Weblock comme ceci: http://i.stack.imgur.com/c5SUh.png
  2. Ouverture de Safari et saisie dans http://www.google.com comme URL
  3. C’est la sortie dans le terminal de mon Mac qui écoute la 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
     Proxy-Connection: Keep-alive
     PREF = ID = 7722bc3c844a7c26: TM = 1402073839: LM = 1402073839: S = 5bSJJsM2p0HgUP7L
     Agent utilisateur: Mozilla / 5.0 (iPhone; processeur 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, dégonfler
     Connexion: restr en vie

Weblock est également utile pour redirect de manière sélective certaines URL avec des expressions régulières. Vous pouvez redirect les requêtes vers certains points de terminaison uniquement, alors que toutes les autres requêtes sont envoyées à l’adresse IP renvoyée par le DNS. Cela permet en fait une configuration encore plus adaptée à ce que fait / etc / hosts.

Exemple: Si je crée une règle de redirection d’URL pour htt *: //somedomain.com/api/login* et certaines adresses IP et certains ports, je ne verrai que le trafic provenant de cette URL sur cette adresse IP et ce port, tandis que tous les autres trafics vers cette destination. com ira directement à l’IP retourné par le DNS. Notez que cela fonctionnera pour / api / login et / api / login? Someparam = somevalue grâce au signe joker * à la fin de la règle.

Vous pouvez configurer un serveur DNS interne sur votre réseau (s’il n’en existe pas déjà un) et configurer un enregistrement A. Assurez-vous ensuite que votre DHCP est configuré pour renvoyer ledit serveur DNS

Je l’ai fait en utilisant Squidman sur Mac. Il est facile à configurer et à utiliser.
Je l’ai configuré en 5 minutes en suivant cet article .

Mettre à jour

Une autre chose est que si vous souhaitez vous connecter aux sites Web fonctionnant sur un serveur proxy, dans mon cas, c’est mon Mac, vous devez commenter cette ligne dans squidman-> Preferences-> Template

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

Vous pouvez également utiliser http://xip.io/ en utilisant les instructions sur cette page, vous pouvez entrer l’adresse IP et il vous redirecta vers l’IP locale appropriée.

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

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

Voici une méthode sans configuration pour les tests multi-périphériques / ordinateurs d’un hôte virtuel Mamp Pro. La seule limite est que vous ne pouvez tester qu’un seul domaine à la fois, mais pour moi, cela se passe bien lorsque je développe. Il est toutefois très simple de changer d’hôte virtuel directement dans mamp.

Im running mamp pro 2, lion de montagne. Le dossier Mes sites contient les dossiers de domaine individuels.

J’ai trouvé que si vous choisissez l’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 localhost sur le réseau.

À des fins de test, cela fonctionne parfaitement sur tous les périphériques 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 access aux clients directement à vos sites de développement lorsque vous êtes sur le même réseau sans avoir à passer par une configuration sur leur ordinateur.

J’espère que cela aidera quiconque à la recherche d’une solution simple.

Le serveur DNS interne est l’une des options mais cela était trop lourd à mettre en œuvre. Nous avons essayé d’installer Squid comme serveur proxy, mais cela n’a pas fonctionné car il redirigeait l’URL vers un nouveau serveur et cette redirection était également visible sur l’URL du navigateur.

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

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 Hotspot local avec mon MAC OS X et à établir un transfert de port vers la machine virtuelle de développement. Pour ce faire, j’ai effectué les étapes suivantes:

  • sur MAC OS X, créez un lien WLAN-Hotspot
  • connecter l’iPAD au Hotspot-WLAN (sur iPAD >> Paramètres >> WLAN)
  • Ajouter le ServerAlias ​​au développement local-VM (détails ci-dessous)
  • établir ssh-portforwarding
    ssh -NL :::80
  • Dans le navigateur iPADs, ouvrez la page avec l’adresse IP
    :

Où trouver ‘IP-of-hotspot-host’:

Après la création du point d’access, il existe un point WLAN dans
Paramètres système MAC OS X >> Réseau >> WLAN

Ajouter le serveurAlias:

Sur mon VM de développement (Apache2) dans /etc/apache2/sites-available/dkr.dev.local je devais append ce qui suit:

    
     ...  
     ServerAlias ​​  
     ...  
  

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

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 Squid, de manipuler Apache et d’autres techniques qui prendraient beaucoup de temps, et de risquer «l’intégrité» des configurations, de développer des environnements, des environnements de test, etc.

Cela vaut la peine de le considérer.

Je l’ai adopté comme un outil régulier de développement et de mise en réseau normale.

J’essaierais le serveur de relais (partie d’Afaria) qui peut réorienter le trafic mobile basé sur des profils.

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

Les réponses sont correctes. Un peu plus de connaissances: celles-ci ne fonctionneront pas avec le pinning de cert. Ce que vous pouvez faire est soit (1) utiliser un certificate générique de domaine pour prendre en charge vos tests de région dev / test / qa. Et / ou (2) utilisez un serveur proxy inversé tel qu’Apache par lequel vous changez pour qu’Apache achemine les requêtes au sein de votre réseau. Maintenant, quand vous passez aux tests SSL Pinning, vous êtes mort dans l’eau avec les périphériques physiques et vous ne pouvez valider qu’avec le simulateur (ios) et l’émulateur (Android).