Comment puis-je rediriger des requêtes HTTP à partir d'un iPad?

puisque sur un iPad Nous ne pouvons pas éditer le fichier hosts (sans jailbreaking), Comment Pouvons-nous rediriger arbitrairement le trafic web vers une autre url?

cela serait important pour quelque chose comme le développement d'un site web qui utilise une configuration D'hôte virtuel où vous voulez rediriger vers une machine de développement.

(ceci est lié à cette question: puis-je éditer le fichier hôte d'un iPad? )

109
demandé sur Community 2011-08-02 22:55:58

16 réponses

le moyen de contourner cette limitation de l'iPad est d'utiliser un serveur mandataire HTTP, tel que Squid tournant sur une autre machine où vous pouvez éditer le fichier hosts.

sur l'iPad sous Paramètres -> Network -> Wi-Fi -> (votre réseau) il y a un paramètre de mandataire HTTP qui peut être défini en mode manuel. Entrez les informations de votre mandataire ici.

une fois que cela est configuré, vous serez en mesure de manipuler l'iPad comme si vous changiez le fichier hosts.

82
répondu tremoloqui 2011-08-02 19:05:30

j'ai trouvé vous avez juste à modifier les paramètres Wifi dans votre iPad pour utiliser l'adresse IP de votre machine de développement comme un proxy HTTP (comme expliqué dans le article susmentionné ):

enter image description here

de cette façon, il est suffisant d'être en mesure d'accéder à votre application web sur votre iPad en entrant l'url de l'hôte virtuel (par exemple local.mywebapp.com ). Il est facile et rapide, mais contrairement à Volonté Solution de Koehler, vous ne pourrez toutefois pas accéder à Internet à partir de l'iPad. Mais la plupart du temps, c'est pas vraiment un problème, puisque vous voulez juste tester votre propre application.

66
répondu Stéphane 2012-08-01 11:10:13

configure le fichier hosts sur un ordinateur exécutant un serveur mandataire tel que Fiddler ou Charles, et configure l'iPad pour utiliser cet ordinateur comme mandataire 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 /

27
répondu sagi 2011-08-02 20:00:01

je dois tester des applications web que je développe sur un iPad. J'utilise Apache sur ma machine dev pour exécuter les applications web, donc la solution la plus facile que j'ai trouvée était D'utiliser Apache mod_proxy.

ma machine dev est visible sur mon réseau domestique en tant que saphir.local.

l'application web que je teste est hébergée sur la machine dev à la démo.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 saphir.local à Démo.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
répondu Will Koehler 2011-12-20 03:46:18

si vous avez déjà un serveur Apache où vous faites dev, vous pouvez facilement l'utiliser comme un proxy forward. Cela est particulièrement utile pour les sites WordPress, qui aiment vraiment utiliser L'URL absolue complète.

Ubuntu exemple ci-dessous:

la première étape consiste à éditer le fichier /etc/hosts dans votre serveur dev. Ajoutez L'IP locale du serveur, pointant vers votre site.

127.0.0.1 dev.mysite.com

ce fichier hosts sera utilisé par votre mandataire Apache lorsqu'il tentera de résoudre des requêtes depuis votre iPhone / iPad. Alors, installons la partie Apache maintenant...

vous devrez peut-être installer certains modules en premier.

sudo apt-get install libapache2-mod-proxy-html
sudo a2enmod proxy proxy_http proxy_html
sudo apache2ctl graceful

puis créer un fichier 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>

activer le vhost, et redémarrer Apache:

sudo a2ensite my-proxy
sudo apache2ctl graceful

puis allez à paramètres > Wi-Fi > Votre Réseau et configurer un proxy "manuel". Saisissez L'IP de votre serveur Apache, et le port. Ça y est!

le bloc <Proxy *> garantit que seules les personnes sur mon réseau local peuvent utiliser ce proxy. Limiter strictement l'accès est essentiel si vous utilisez un proxy forward. La page ip2cidr sera utile à ce point. (Comme mesure supplémentaire, le port :8080 est bloqué par mon pare.)

9
répondu Manuel Razzari 2013-09-25 22:56:05

il est également possible d'utiliser Weblock-AdBlock pour l'application iOS (disponible pour 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. Ceci émule l'ajout d'une entrée dans /etc/hosts sur votre périphérique iOS. Si le nom d'hôte défini dans les requêtes est géré par L'IP vers laquelle vous dirigez votre trafic, vous pouvez l'utiliser pour: testez L'API privée ou même le trafic sniff envoyé à partir 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 limitations de Weblock). Le principal avantage est que vous pouvez facilement tout configurer depuis votre périphérique 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. Safari ouvert et tapé www.google.com comme URL
  3. c'est la sortie dans le terminal sur mon Mac à l'écoute pour la connexion sur le port 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 est également bon pour rediriger sélectivement certaines URL avec des expressions régulières. Vous pouvez rediriger les requêtes vers certains endpoint seulement, alors que toutes les autres requêtes vont vers L'adresse IP renvoyée. à partir de la DNS. Cela permet en fait une configuration encore plus appropriée que /etc/hosts.

exemple: Si je crée une règle de redirection D'URL pour htt*://somedomain.com/api/login * et certains IP et port, Je ne verrai que le trafic de cette URL à cette IP et port, tandis que tous les autres trafic à somedomain.com ira directement à L'adresse IP retournée par le DNS. Notez qu'il fonctionnera à la fois pour / api /login et / api / login?someparam=somevaleur merci au Joker * à la fin de la règle.

7
répondu koper 2014-06-27 13:52:30

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. Ensuite, assurez-vous que votre DHCP est configuré pour retourner ledit serveur DNS

5
répondu MASSPro 2011-08-25 23:24:33

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 .

mise à Jour

une autre chose est si vous voulez vous connecter aux sites Web tournant sur le 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
5
répondu Lei Cao 2013-10-14 03:05:18

vous pouvez également utiliser http://xip.io / en utilisant les instructions sur cette page, vous pouvez entrer l'adresse ip et il vous redirigera vers l'adresse ip locale pertinente.

3
répondu R Reveley 2013-09-30 11:37:11

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

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

2
répondu Daniel Powers 2013-02-22 14:07:57

Voici une méthode sans configuration pour l'essai de périphériques/ordinateurs croisés d'un hôte virtuel Mamp Pro. La seule limitation est que vous ne pouvez tester un domaine à la fois, mais pour moi c'est très bien quand je suis en développement. Il est cependant très simple de changer d'hôte virtuel directement dans mamp.

Im exécution de mamp pro 2, le lion de montagne. Mon dossier sites contient les dossiers de domaines individuels.

j'ai trouvé si vous choisissez l'ip spécifique du local ordinateur sous le 'IP /port' de l'hôte virtuel et redémarrez mamp ce domaine deviendra le domaine par défaut lorsque vous visualiserez l'adresse ip, ou le nom de l'ordinateur, des ordinateurs localhost à travers le réseau.

pour les tests cela fonctionne très bien sur tous les appareils du réseau, y compris l'iPad. Si vous voulez tester un autre hôte virtuel, vous pouvez simplement retourner la configuration ip/port à "*" et ensuite réattribuer un autre domaine à l'adresse ip des ordinateurs et redémarrer.

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

J'espère que cela aidera quelqu'un d'autre à la recherche d'une solution simple.

1
répondu roborew 2013-01-18 18:41:42

serveur DNS interne est l'une des options, mais qui était trop lourd à mettre en œuvre. Nous avons essayé d'installer squid Comme serveur proxy mais cela n'a pas fonctionné non plus car il redirigeait L'URL vers le nouveau serveur et cette redirection a été vue sur l'URL du navigateur aussi.

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 des sous-domaines à l'adresse IP, c'est-à-dire quelque chose de similaire à /etc/hosts.

1
répondu Deepak 2013-07-22 08:18:27

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

une autre façon est de connecter L'IPad via Hotspot Local avec mon Mac OS X et d'établir un port-forwarding à la VM de développement. Pour ce faire, j'ai pris les mesures suivantes:

  • sur MAC OS X pour créer un réseau wi-fi Hotspot "1519110920 Lien" comment faire
  • connecter l'iPAD avec le Hotspot-WIFI (sur iPAD >> Paramètres >> wi-fi)
  • ajouter les ServerAlias au développement local-VM (détails ci-dessous)
  • établir ssh-le transfert de ports

    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-de-hotspot-hôte":

Après hotspot créé il y a un point WLAN dans

Mac OS X Paramètres du système > > réseau > WLAN

l'Ajout de la directive ServerAlias:

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

<VirtualHost *:80>  
    ...  
    ServerAlias <IP-of-hotspot-host>  
    ...  
</VirtualHost>
1
répondu Christian Waltjen 2014-02-05 14:49:20

si vous avez exploré ceci, et quelques-uns des liens externes, vous trouverez peut-être 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é en conjonction avec vos serveurs DNS internes ou externes.

beaucoup plus facile que d'installer des calmars, de jouer avec Apache, et d'autres des techniques qui seraient fastidieuses et risqueraient de compromettre l '"intégrité" des configurations, de créer des environnements, de mettre à l'essai des environnements, etc.

mérite réflexion.

j'ai adopté cela comme un outil régulier pour le développement et pour la mise en réseau normale.

1
répondu Carlos Cap 2017-05-23 12:10:05

je voudrais essayer le serveur de relais (partie D'Afaria) qui peut rediriger le trafic mobile basé sur les profils.

mise à Jour: tremoloqui la réponse semble de moins en moins mal et beaucoup moins cher.

0
répondu tomdemuyt 2012-04-30 12:31:51

les réponses aux présentes sont correctes. Un peu plus de connaissances: celles-ci ne fonctionneront pas avec cert pinning. Ce que vous pouvez faire est soit (1) utiliser un nom de domaine cert pour soutenir votre dev/test/qa région test. Et / ou (2) utilisez un serveur mandataire inverse tel Qu'Apache par lequel vous changez L'endroit où Apache achemine les requêtes au sein de votre réseau. Maintenant, lorsque vous entrez dans SSL Pinning test alors vous êtes mort dans l'eau avec les appareils physiques et ne peut valider avec simulateur (ios) et émulateur (Android.)

0
répondu codeslapper 2017-07-14 14:29:10