web-dev-qa-db-ja.com

iPadからのHTTPリクエストをリダイレクトするにはどうすればよいですか?

IPadでは(脱獄せずに)hostsファイルを編集できないため、Webトラフィックを別のURLに任意にリダイレクトするにはどうすればよいですか?

これは、開発マシンにリダイレクトする仮想ホスト構成を使用するWebサイトの開発などに重要です。

(これはこの質問に関連しています: iPadのホストファイルを編集できますか?

114
tremoloqui

IPadのこの制限を回避する方法は、hostsファイルを編集できる別のマシンで実行されている Squid などのHTTPプロキシサーバーを使用することです。

IPadの[設定]-> [ネットワーク]-> [Wi-Fi]->(ネットワーク)で、手動に設定できるHTTPプロキシ設定があります。ここにプロキシ情報を入力します。

これが設定されると、hostsファイルを変更しているかのようにiPadを操作できるようになります。

85
tremoloqui

開発マシンのIPアドレスをHTTPプロキシとして使用するには、iPadでWifi設定を変更する必要がありますが見つかりました( 前述の記事 で説明されています):

enter image description here

そうすれば、仮想ホストのURL(例:local.mywebapp.com)を入力することで、iPad上のWebアプリケーションにアクセスできれば十分です。簡単で迅速ですが、ウィルケーラーのソリューションとは異なり、iPadからインターネットにアクセスすることはできません。しかし、ほとんどの場合、あなたは自分のアプリケーションをテストしたいだけなので、実際には問題ではありません。

70
Stéphane

FiddlerやCharlesなどのプロキシサーバーを実行しているコンピューターにホストファイルをセットアップし、そのコンピューターをHTTPプロキシとして使用するようにiPadを構成します。

Fiddlerでこれを行う方法の手順は次のとおりです。 http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

これはチャールズ向けです: http://www.ravelrumba.com/blog/ipad-http-debugging/

28
sagi

開発中のApacheサーバーが既にある場合は、それをフォワードプロキシとして簡単に使用できます。これは、完全な絶対URLの使用が大好きなWordPressサイトで特に役立ちます。

Ubuntu以下の例:

最初のステップは、開発サーバーで/etc/hostsファイルを編集することです。サイトを指すサーバーのローカルIPを追加します。

127.0.0.1 dev.mysite.com

このホストファイルは、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

次にSettings> Wi-Fi> Your Networkに移動し、「手動」プロキシを設定します。 ApacheサーバーのIPとポートを入力します。それでおしまい!

<Proxy *>ブロックにより、ローカルネットワーク上のユーザーのみがこのプロキシを使用できるようになります。厳密にアクセスを制限する 必須 フォワードプロキシを使用している場合。 ip2cidr ページはこの時点で役立ちます。 (追加の手段として、:8080ポートはファイアウォールによってブロックされています。)

9
Manuel Razzari

IPadで開発しているWebアプリをテストする必要があります。開発マシンでApacheを使用してWebアプリを実行しているので、最も簡単な解決策はApache mod_proxyを使用することでした。

私の開発マシンは、sapphire.localとしてホームネットワークに表示されます。

私がテストしているWebアプリは、demo.cms.devのdevマシンでホストされています(私はPOWを使用しています)。

プロキシをセットアップするために、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>

これにより、sapphire.localの着信要求がdemo.cms.devにルーティングされます。このメソッドは、一度に1つのアプリに対してのみ機能します。別のポートを使用して追加のアプリをセットアップできると思います。たぶん誰かがより良い解決策を持っていますか?

9
Will Koehler

Weblock-iOSアプリ用AdBlock($ 1.99で入手可能: https://iTunes.Apple.com/us/app/weblock/id558818638?mt=8 )を使用してWebトラフィックを作成することもできます。リダイレクトします。

これにより、特定のルールに一致するトラフィックを指定されたIPアドレスにリダイレクトできます。これは、iOSデバイスの/ etc/hostsへのエントリの追加をエミュレートします。リクエストで設定されたホスト名がトラフィックの送信先のIPによって処理される場合、これを使用してプライベートAPIをテストしたり、他のアプリやWebサイトから送信されたトラフィックを盗聴したりできます。残念ながら、これはhttp/https接続でのみ機能します。

これはすべて、Wi-Fiでのみ実行できます(Weblockの制限の1つ)。主な利点は、iOSデバイスからすべてを簡単に設定でき、DNS /プロキシサーバーの設定を台無しにする必要がないことです。

以下に例を示します。

  1. このようにWeblockを構成しました: http://i.stack.imgur.com/c5SUh.png
  2. Safariを開き、www.google.comにURLとして入力しました
  3. これは、ポート1234での接続をリッスンしているMacのターミナルの出力です。
 
 macbook-pro-tk:〜kpr $ nc -l -v -v 1234 
 GET http://www.google.com/ HTTP/1.1 
ホスト: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 
ユーザーエージェント:Mozilla/5.0(iPhone; Mac OS XのようなCPU iPhone OS 7_1_1)AppleWebKit/537.51.2(KHTML、Geckoなど)バージョン/7.0 Mobile/11D201 Safari/9537.53 
 Accept-Language:en-us 
 Accept-Encoding:gzip、deflate 
接続:keep -alive 
 

Weblockは、正規表現で一部のURLを選択的にリダイレクトするのにも適しています。クエリを特定のエンドポイントのみにリダイレクトし、他のすべてのクエリはDNSから返されたIPにリダイレクトできます。これにより、/ etc/hostsよりもさらに適切な構成が可能になります。

例:URLリダイレクトルールを作成する場合 htt *://somedomain.com/api/login* 一部のIPとポートでは、このIPとポートでこのURLからのトラフィックのみが表示され、somedomain.comへの他のすべてのトラフィックはDNSによって返されたIPに直接送信されます。両方で機能することに注意してください / api/login そして / api/login?someparam = somevalue ルールの最後にあるワイルドカード*記号のおかげです。

8
koper

Macで squidman を使用して作成しました。セットアップと使用は簡単です。
次のように5分でセットアップしました この記事

更新

別のことは、プロキシサーバーで実行しているWebサイトに接続する場合です。私の場合はMacです。squidman-> Preferences-> Templateでこの行をコメントアウトする必要があります。

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

ネットワークに内部DNSサーバーをセットアップし(存在しない場合)、Aレコードをセットアップできます。次に、上記のDNSサーバーを返すようにDHCPが設定されていることを確認します

5
MASSPro

http://xip.io/ を使用することもできます。このページの指示に従って、IPアドレスを入力すると、関連するローカルIPにリダイレクトされます。

3
R Reveley

ライブWebサイトがある場合は、これに使用できます。

DNS設定にAレコードを追加できます。ローカルIPアドレスを指すsomething.yourdomain.comを追加し、something.yourdomain.comのエントリを仮想ホストファイルに追加します。 Apacheを再起動し、同じネットワーク上でiOSデバイスを取得すれば、準備完了です。

2
Daniel Powers

内部DNSサーバーはオプションの1つですが、実装するには面倒すぎました。 squidサーバーをプロキシサーバーとしてインストールしようとしましたが、URLを新しいサーバーにリダイレクトし、ブラウザーのURLでもこのリダイレクトが見られたため、動作しませんでした。

最終的に機能したのは、サーバーの1つにFiddlerをインストールし、このサーバーをiPadのプロキシサーバーとして使用することでした。Fiddlerには、サブドメインをIPアドレスにマッピングする機能もあります。ホスト。

1
Deepak

Mamp Pro仮想ホストのクロスデバイス/コンピューターテストの設定方法はありません。唯一の制限は、一度に1つのドメインしかテストできないことですが、私にとっては、開発中はこれで問題ありません。しかし、mampで仮想ホスト間を直接変更するのは本当に簡単です。

ImはMamp Pro 2、Mountain Lionを実行しています。個人用サイトフォルダーには、個々のドメインフォルダーが含まれています。

仮想ホスト「ip/port」の下でローカルコンピューターの特定のIPを選択し、ネットワークを介してローカルホストコンピューターのIPアドレスまたはコンピューター名を表示すると、このドメインがデフォルトドメインになります。

テスト目的で、これはiPadを含むネットワーク上のすべてのデバイスでうまく機能します。別の仮想ホストをテストする場合は、ip/port configを「*」に戻し、別のドメインをコンピューターのIPアドレスに再割り当てして再起動するだけです。

この単純なアプローチの利点は、同じネットワーク上にある場合、マシンの構成を一切行わずに、開発サイトへのクライアントへの直接アクセスを提供できることです。

これが、簡単な解決策を探している他の誰にも役立つことを願っています。

1
roborew

そうするための素晴らしいチュートリアル: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

もう1つの方法は、ローカルホットスポットを介してMAC OS XにIPadを接続し、開発VMへのポート転送を確立することです。これを実現するために、次の手順を実行しました。

  • mAC OS XでWLAN-Hotspotを作成します リンクの実行方法
  • iPADをHotspot-WLANに接続します(iPAD >>設定>> WLAN)
  • ServerAliasをローカル開発VMに追加します(詳細は以下)
  • ssh-portforwardingを確立します
    ssh -NL <IP-of-hotspot-Host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • iPADsブラウザーでIPを含むページを開きます
    <IP-of-hotspot-Host>:<source-port>

「ホットスポットホストのIP」を取得する場所:

ホットスポットを作成すると、WLAN-Pointが
MAC OS Xシステム設定>>ネットワーク>> WLAN

ServerAliasの追加:

/ etc/Apache2/sites-available/dkr.dev.localの私の開発VM(Apache2)で、以下を追加する必要がありました。

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

これといくつかの外部リンクを調査している場合、おそらくこの答えを見つけるでしょう:

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

これは、dnsmasqと呼ばれる軽量DNSサーバーに関するものです。非常にシンプルで非常に強力で、内部または外部のDNSサーバーと組み合わせて使用​​できます。

Squidのインストール、Apacheのいじり、および時間のかかる他の手法よりもはるかに簡単で、構成の「整合性」、環境の開発、テスト環境などを危険にさらします。

検討する価値があります。

私は、開発と通常のネットワーキングのための通常のツールとしてそれを採用しました。

1
Carlos Cap

ここの答えは正しいです。もう少し知識:これらは証明書の固定では機能しません。できることは、(1)ドメインワイルドカード証明書を使用して、dev/test/qaリージョンテストをサポートすることです。および/または(2)Apacheなどのリバースプロキシサーバーを使用して、Apacheがネットワーク内のリクエストをルーティングする場所を変更します。これで、SSL Pinningテストに入ると、物理デバイスを使用して水中で死んでしまい、シミュレーター(ios)およびエミュレーター(Android)でのみ検証できます。

0
codeslapper

プロファイルに基づいてモバイルトラフィックをリダイレクトできるRelay Server(Afariaの一部)を試します。

更新:tremoloquiの答えはトラブルが少なく、はるかに安いようです。

0
tomdemuyt