web-dev-qa-db-de.com

Wie kann ich HTTP-Anfragen von einem iPad umleiten?

Da wir auf einem iPad die hosts-Datei nicht bearbeiten können (ohne Jailbreaking), wie können wir den Web-Traffic willkürlich auf eine andere URL umleiten?

Dies ist beispielsweise für die Entwicklung einer Website wichtig, die eine Virtual Host-Konfiguration verwendet, auf der Sie auf einen Entwicklungscomputer umleiten möchten.

(Dies hängt mit dieser Frage zusammen: Kann ich die Host-Datei eines iPad bearbeiten? )

110
tremoloqui

Um diese Einschränkung des iPad zu umgehen, können Sie einen HTTP-Proxyserver verwenden, z. B. Squid , der auf einem anderen Computer ausgeführt wird, auf dem Sie die Hosts-Datei bearbeiten können.

Auf dem iPad Unter Einstellungen -> Netzwerk -> Wi-Fi -> (Ihr Netzwerk) Es gibt eine HTTP-Proxy-Einstellung, die auf manuell eingestellt werden kann. Geben Sie hier Ihre Proxy-Informationen ein.

Sobald dies eingerichtet ist, können Sie das iPad so ändern, als würden Sie die hosts-Datei ändern.

82
tremoloqui

Ich habe festgestellt Sie müssen nur die WLAN-Einstellungen in Ihrem iPad ändern, um die IP-Adresse Ihres Entwicklungscomputers als HTTP-Proxy zu verwenden (wie im oben genannten Artikel erläutert):

enter image description here

Auf diese Weise reicht es aus, auf Ihre Webanwendung auf Ihrem iPad zugreifen zu können, indem Sie die URL des virtuellen Hosts eingeben (z. B. local.mywebapp.com). Es ist einfach und schnell, aber im Gegensatz zur Lösung von Will Koehler können Sie vom iPad aus nicht auf das Internet zugreifen. Meistens ist das aber kein Problem, da Sie nur Ihre eigene Anwendung testen möchten.

69
Stéphane

Richten Sie die hosts-Datei auf einem Computer ein, auf dem ein Proxyserver wie Fiddler oder Charles ausgeführt wird, und konfigurieren Sie das iPad so, dass dieser Computer als HTTP-Proxy verwendet wird.

Hier finden Sie Anweisungen, wie Sie dies mit Fiddler machen: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

Und das ist für Charles: http://www.ravelrumba.com/blog/ipad-http-debugging/

27
sagi

Wenn Sie bereits einen Apache -Server haben, auf dem Sie dev ausführen, können Sie ihn problemlos als Forward-Proxy verwenden. Dies ist besonders nützlich für WordPress-Sites, die wirklich gerne die vollständige absolute URL verwenden. 

Ubuntu Beispiel unten:

Der erste Schritt besteht darin, die /etc/hosts-Datei auf Ihrem Dev-Server zu bearbeiten. Fügen Sie die lokale IP-Adresse des Servers hinzu und verweisen Sie auf Ihre Site.

127.0.0.1 dev.mysite.com

Diese Hosts-Datei wird von Ihrem Apache-Proxy verwendet, wenn er versucht, Anfragen von Ihrem iPhone/iPad zu lösen. Also lasst uns jetzt den Apache-Teil einrichten ...

Möglicherweise müssen Sie zuerst einige Module installieren. 

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

Dann erstellen Sie eine virtuelle Host-Datei, zum Beispiel /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>

Aktivieren Sie den vhost und starten Sie Apache neu:

Sudo a2ensite my-proxy
Sudo Apache2ctl graceful

Gehen Sie dann zu Einstellungen> Wi-Fi> Ihr Netzwerk und konfigurieren Sie einen "manuellen" Proxy. Geben Sie die IP Ihres Apache-Servers und den Port ein. Das ist es! 

Der <Proxy *>-Block stellt sicher, dass nur Personen in meinem lokalen Netzwerk diesen Proxy verwenden können. Strikte Beschränkung des Zugriffs ist unerlässlich wenn Sie einen Forward-Proxy verwenden. Die ip2cidr Seite wird an dieser Stelle hilfreich sein. (Als zusätzliche Maßnahme wird der: 8080-Port von meiner Firewall blockiert.)

9
Manuel Razzari

Ich muss Web-Apps testen, die ich auf einem iPad entwickle. Ich verwende Apache auf meinem Entwicklungscomputer, um die Web-Apps auszuführen. Die einfachste Lösung, die ich gefunden habe, war die Verwendung von Apache mod_proxy.

Mein Entwicklungscomputer ist in meinem Heimnetzwerk als sapphire.local sichtbar.

Die Web-App, die ich gerade teste, befindet sich auf dem Entwicklungscomputer unter demo.cms.dev (ich verwende POW).

Um den Proxy einzurichten, habe ich den folgenden Abschnitt zu httpd.conf hinzugefügt.

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

Dies leitet eingehende Anfragen auf sapphire.local an demo.cms.dev weiter. Die Methode funktioniert immer nur für eine App. Ich denke, Sie könnten verschiedene Ports verwenden, um weitere Apps einzurichten. Vielleicht hat jemand eine bessere Lösung?

9
Will Koehler

Es ist auch möglich, Weblock - AdBlock für iOS-App (verfügbar für 1,99 US-Dollar hier: https://iTunes.Apple.com/us/app/weblock/id558818638?mt=8 ) zum Erstellen von Web-Traffic-Weiterleitungen zu verwenden.

Auf diese Weise können Sie den Datenverkehr, der einer bestimmten Regel entspricht, an die angegebene IP-Adresse umleiten. Dadurch wird das Hinzufügen eines Eintrags zu/etc/hosts auf Ihrem iOS-Gerät emuliert. Wenn der in Anforderungen festgelegte Hostname von der IP-Adresse gehandhabt wird, an die Sie Ihren Datenverkehr weiterleiten, können Sie diese Option verwenden, um die private API zu testen oder sogar Datenverkehr von anderen Apps oder Websites auszulesen. Dies funktioniert leider nur für http/https-Verbindungen. 

All dies kann nur im Wi-Fi-Modus erfolgen (eine der Einschränkungen von Weblock). Der Hauptvorteil besteht darin, dass Sie alles von Ihrem iOS-Gerät aus einfach konfigurieren können und sich nicht mit der DNS-/Proxy-Server-Konfiguration beschäftigen müssen.

Hier ist ein Beispiel:

  1. Ich habe Weblock folgendermaßen konfiguriert: http://i.stack.imgur.com/c5SUh.png
  2. Safari wurde geöffnet und als URL in www.google.com eingegeben
  3. Dies ist die Ausgabe im Terminal meines Mac, die auf Port 1234 auf Verbindung wartet:
 macbook-pro-tk: ~ kpr $ nc -l -v -v 1234 
 GET http://www.google.com/ HTTP/1.1 
 Host: www.google.com 
 Akzeptieren Sie: text/html, application/xhtml + xml, application/xml; q = 0,9, */*; q = 0,8 
 Proxy-Verbindung: Keep-Alive 
 PREF = ID = 7722bc3c844a7c26: TM = 1402073839: LM = 1402073839: S = 5bSJJsM2p0HgUP7L 
 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 wie Mac OS X) AppleWebKit/537.51.2 (KHTML, wie Gecko) Version/7.0 Mobile/11D201 Safari/9537.53 
 Accept-Language: de-de 
 Accept-Encoding: gzip, deflate 
 Verbindung: Keep-Alive 

Weblock eignet sich auch dazu, einige URLs mit regulären Ausdrücken selektiv umzuleiten. Sie können Abfragen nur an bestimmte Endpunkte umleiten, während alle anderen Abfragen an die vom DNS zurückgegebene IP-Adresse geleitet werden. Dies ermöglicht tatsächlich eine noch passendere Konfiguration als in/etc/hosts.

Beispiel: Wenn ich eine URL-Umleitungsregel für htt *: //somedomain.com/api/login* Bei einigen IP-Adressen und Ports sehe ich nur Verkehr von dieser URL an dieser IP- und Port-Adresse, während der gesamte andere Datenverkehr an somedomain.com direkt an die vom DNS zurückgegebene IP-Adresse geht. Beachten Sie, dass es für beide funktioniert / api/login und / api/login? someparam = somevalue dank dem Platzhalterzeichen * am Ende der Regel.

7
koper

Ich habe es mit squidman auf dem Mac gemacht. Es ist einfach einzurichten und zu verwenden.
Ich habe es in 5 Minuten eingerichtet, indem ich diesem Artikel folgte.

Update

Eine andere Sache ist, wenn Sie eine Verbindung zu den Websites herstellen möchten, die auf einem Proxy-Server laufen. In meinem Fall ist es mein Mac. Sie müssen diese Zeile in squidman-> Preferences-> Template kommentieren

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

Sie können einen internen DNS-Server in Ihrem Netzwerk einrichten (sofern noch nicht vorhanden) und einen A-Eintrag einrichten. Stellen Sie dann sicher, dass Ihr DHCP so eingestellt ist, dass der DNS-Server zurückgegeben wird

5
MASSPro

Sie können auch http://xip.io/ verwenden. Wenn Sie die Anweisungen auf dieser Seite verwenden, können Sie die IP-Adresse eingeben, und Sie werden zur entsprechenden lokalen IP-Adresse umgeleitet.

3
R Reveley

Wenn Sie eine Live-Website haben, können Sie dies verwenden:

Sie können Ihrer DNS-Konfiguration einen A-Eintrag hinzufügen: Etwas.IhreDomäne.com, der auf Ihre lokale IP-Adresse verweist, und fügen Sie dann einen Eintrag für Etwas.IhreDomäne.com zu Ihrer virtuellen Hosts-Datei hinzu. Starten Sie Apache neu, bringen Sie Ihr iOS-Gerät in dasselbe Netzwerk und Sie können loslegen.

2
Daniel Powers

Ein interner DNS-Server ist eine Option, die jedoch zu umständlich war. Wir haben versucht, Squid als Proxy-Server zu installieren, aber das funktionierte auch nicht, da die URL auf einen neuen Server umgeleitet wurde und diese Umleitung auch unter der Browser-URL sichtbar war.

Was für uns letztendlich funktioniert hat, war, Fiddler auf einem Server zu installieren und diesen Server als Proxy-Server auf dem ipad zu verwenden. Fiddler hat auch eine Funktion, um Subdomains auf die IP-Adresse abzubilden, d. H. Etwas ähnliches wie/etc/hosts.

1
Deepak

Hier ist eine No-Configuration-Methode für das geräteübergreifende Testen eines Mamp Pro Virtual Host. Die einzige Einschränkung ist, dass Sie nur eine Domäne gleichzeitig testen können, aber für mich ist dies in der Entwicklung in Ordnung. Es ist wirklich einfach, zwischen virtuellen Hosts direkt in mamp zu wechseln.

Ich laufe Mamp Pro 2, Mountain Lion. Mein Site-Ordner enthält die einzelnen Domänenordner. 

Ich habe festgestellt, wenn Sie die spezifische IP-Adresse des lokalen Computers unter dem virtuellen Host "IP/Port" auswählen und mamp neu starten, wird diese Domäne zur Standarddomäne, wenn Sie die IP-Adresse des Localhost-Computers oder den Computernamen im Netzwerk anzeigen.

Zu Testzwecken funktioniert dies hervorragend für alle Geräte im Netzwerk, einschließlich des iPad. Wenn Sie einen anderen virtuellen Host testen möchten, können Sie die IP/Port-Konfiguration einfach auf "*" zurücksetzen und dann eine andere Domäne der IP-Adresse des Computers zuweisen und einen Neustart durchführen.

Der Vorteil dieses einfachen Ansatzes besteht darin, dass Sie den Zugriff auf Clients direkt auf Ihre Entwicklungsstandorte ermöglichen, wenn Sie sich im selben Netzwerk befinden, ohne dass eine Konfiguration auf dem Computer vorgenommen werden muss. 

Ich hoffe, das hilft allen anderen, die nach einer einfachen Lösung suchen.

1
roborew

Schönes Tutorial dazu: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

Eine andere Möglichkeit besteht darin, das IPad über Local Hotspot mit meinem MAC OS X zu verbinden und eine Portweiterleitung an die Entwicklungs-VM einzurichten. Um dies zu erreichen, habe ich die folgenden Schritte ausgeführt: 

  • unter MAC OS X einen WLAN-Hotspot erstellen Link wie man das macht
  • verbinden Sie das iPAD mit dem Hotspot-WLAN (auf iPAD >> Einstellungen >> WLAN)
  • Fügen Sie die ServerAlias ​​der lokalen Entwicklungs-VM hinzu (Details unten) 
  • ssh-portforwarding einrichten
    ssh -NL <IP-of-hotspot-Host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • im iPADs-Browser öffnen Sie die Seite mit der IP-Adresse
    <IP-of-hotspot-Host>:<source-port>

Wo bekomme ich 'IP-of-Hotspot-Host'?

Nach dem Erstellen des Hotspots befindet sich ein WLAN-Punkt in
MAC OS X-Systemeinstellungen >> Netzwerk >> WLAN 

ServerAlias ​​hinzufügen:

Bei meiner Entwicklungs-VM (Apache2) in /etc/Apache2/sites-available/dkr.dev.local Musste ich Folgendes hinzufügen:

<VirtualHost *: 80> 
 ... 
 ServerAlias ​​<IP-of-Hotspot-Host> 
 ... 
 </ VirtualHost>
1

Wenn Sie dies und einige externe Links erforscht haben, werden Sie möglicherweise diese Antwort finden:

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

Es handelt sich um einen DNS-Server mit geringem Gewicht namens dnsmasq. Super einfach, sehr leistungsfähig und kann in Verbindung mit Ihren internen oder externen DNS-Servern verwendet werden.

Viel einfacher als das Installieren von Squid, das Fummeln mit Apache und andere Techniken, die zeitaufwändig sind und die "Integrität" von Konfigurationen, Entwicklungsumgebungen, Testumgebungen usw. gefährden.

Eine Überlegung wert.

Ich habe das als regelmäßiges Werkzeug für die Entwicklung und für die normale Vernetzung angenommen. 

1
Carlos Cap

Antworten hier sind richtig. Etwas mehr Wissen: Diese funktionieren nicht mit dem Cert-Pinning. Sie können entweder (1) ein Domain-Wildcard-Zertifikat verwenden, um Ihre Dev/Test/Qa-Regionstests zu unterstützen. Und/oder (2) Sie verwenden einen Reverse-Proxy-Server wie Apache, wobei Sie dahin wechseln, wo Apache die Anforderungen innerhalb Ihres Netzwerks weiterleitet. Wenn Sie jetzt SSL-Pinning-Tests durchführen, befinden Sie sich mit den physischen Geräten im Wasser und können nur mit Simulator (ios) und Emulator (Android) validieren.

0
codeslapper

Ich würde Relay Server (Teil von Afaria) ausprobieren, der den mobilen Datenverkehr anhand von Profilen umleiten kann.

Update: Die Antwort von tremoloqui scheint weniger problematisch und viel billiger zu sein.

0
tomdemuyt