IPadでは(脱獄せずに)hostsファイルを編集できないため、Webトラフィックを別のURLに任意にリダイレクトするにはどうすればよいですか?
これは、開発マシンにリダイレクトする仮想ホスト構成を使用するWebサイトの開発などに重要です。
(これはこの質問に関連しています: iPadのホストファイルを編集できますか? )
IPadのこの制限を回避する方法は、hostsファイルを編集できる別のマシンで実行されている Squid などのHTTPプロキシサーバーを使用することです。
IPadの[設定]-> [ネットワーク]-> [Wi-Fi]->(ネットワーク)で、手動に設定できるHTTPプロキシ設定があります。ここにプロキシ情報を入力します。
これが設定されると、hostsファイルを変更しているかのようにiPadを操作できるようになります。
開発マシンのIPアドレスをHTTPプロキシとして使用するには、iPadでWifi設定を変更する必要がありますが見つかりました( 前述の記事 で説明されています):
そうすれば、仮想ホストのURL(例:local.mywebapp.com
)を入力することで、iPad上のWebアプリケーションにアクセスできれば十分です。簡単で迅速ですが、ウィルケーラーのソリューションとは異なり、iPadからインターネットにアクセスすることはできません。しかし、ほとんどの場合、あなたは自分のアプリケーションをテストしたいだけなので、実際には問題ではありません。
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/
開発中の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ポートはファイアウォールによってブロックされています。)
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つのアプリに対してのみ機能します。別のポートを使用して追加のアプリをセットアップできると思います。たぶん誰かがより良い解決策を持っていますか?
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 /プロキシサーバーの設定を台無しにする必要がないことです。
以下に例を示します。
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 ルールの最後にあるワイルドカード*記号のおかげです。
ネットワークに内部DNSサーバーをセットアップし(存在しない場合)、Aレコードをセットアップできます。次に、上記のDNSサーバーを返すようにDHCPが設定されていることを確認します
http://xip.io/ を使用することもできます。このページの指示に従って、IPアドレスを入力すると、関連するローカルIPにリダイレクトされます。
ライブWebサイトがある場合は、これに使用できます。
DNS設定にAレコードを追加できます。ローカルIPアドレスを指すsomething.yourdomain.comを追加し、something.yourdomain.comのエントリを仮想ホストファイルに追加します。 Apacheを再起動し、同じネットワーク上でiOSデバイスを取得すれば、準備完了です。
内部DNSサーバーはオプションの1つですが、実装するには面倒すぎました。 squidサーバーをプロキシサーバーとしてインストールしようとしましたが、URLを新しいサーバーにリダイレクトし、ブラウザーのURLでもこのリダイレクトが見られたため、動作しませんでした。
最終的に機能したのは、サーバーの1つにFiddlerをインストールし、このサーバーをiPadのプロキシサーバーとして使用することでした。Fiddlerには、サブドメインをIPアドレスにマッピングする機能もあります。ホスト。
Mamp Pro仮想ホストのクロスデバイス/コンピューターテストの設定方法はありません。唯一の制限は、一度に1つのドメインしかテストできないことですが、私にとっては、開発中はこれで問題ありません。しかし、mampで仮想ホスト間を直接変更するのは本当に簡単です。
ImはMamp Pro 2、Mountain Lionを実行しています。個人用サイトフォルダーには、個々のドメインフォルダーが含まれています。
仮想ホスト「ip/port」の下でローカルコンピューターの特定のIPを選択し、ネットワークを介してローカルホストコンピューターのIPアドレスまたはコンピューター名を表示すると、このドメインがデフォルトドメインになります。
テスト目的で、これはiPadを含むネットワーク上のすべてのデバイスでうまく機能します。別の仮想ホストをテストする場合は、ip/port configを「*」に戻し、別のドメインをコンピューターのIPアドレスに再割り当てして再起動するだけです。
この単純なアプローチの利点は、同じネットワーク上にある場合、マシンの構成を一切行わずに、開発サイトへのクライアントへの直接アクセスを提供できることです。
これが、簡単な解決策を探している他の誰にも役立つことを願っています。
そうするための素晴らしいチュートリアル: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/
もう1つの方法は、ローカルホットスポットを介してMAC OS XにIPadを接続し、開発VMへのポート転送を確立することです。これを実現するために、次の手順を実行しました。
ssh -NL <IP-of-hotspot-Host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
<IP-of-hotspot-Host>:<source-port>
ホットスポットを作成すると、WLAN-Pointが
MAC OS Xシステム設定>>ネットワーク>> WLAN
/ etc/Apache2/sites-available/dkr.dev.localの私の開発VM(Apache2)で、以下を追加する必要がありました。
<VirtualHost *:80> ... ServerAlias <IP-of-hotspot-Host> ... </ VirtualHost>
これといくつかの外部リンクを調査している場合、おそらくこの答えを見つけるでしょう:
https://stackoverflow.com/a/24770097/3842985
これは、dnsmasqと呼ばれる軽量DNSサーバーに関するものです。非常にシンプルで非常に強力で、内部または外部のDNSサーバーと組み合わせて使用できます。
Squidのインストール、Apacheのいじり、および時間のかかる他の手法よりもはるかに簡単で、構成の「整合性」、環境の開発、テスト環境などを危険にさらします。
検討する価値があります。
私は、開発と通常のネットワーキングのための通常のツールとしてそれを採用しました。
ここの答えは正しいです。もう少し知識:これらは証明書の固定では機能しません。できることは、(1)ドメインワイルドカード証明書を使用して、dev/test/qaリージョンテストをサポートすることです。および/または(2)Apacheなどのリバースプロキシサーバーを使用して、Apacheがネットワーク内のリクエストをルーティングする場所を変更します。これで、SSL Pinningテストに入ると、物理デバイスを使用して水中で死んでしまい、シミュレーター(ios)およびエミュレーター(Android)でのみ検証できます。
プロファイルに基づいてモバイルトラフィックをリダイレクトできるRelay Server(Afariaの一部)を試します。
更新:tremoloquiの答えはトラブルが少なく、はるかに安いようです。