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


116

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

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

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

回答:


88

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

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

これがセットアップされると、hostsファイルを変更する場合と同じようにiPadを操作できるようになります。


3
記録のためだけに言えば、macportsを使用してsquidをインストールするのは非常に簡単です "sudo port install squid"
MiQUEL

1
またはyum install squidフェドーラ
Abhishek

3
またはapt-get install squidUbuntuで
Jess Telford 2013年

3
注:Squidサーバー上のhostsファイルを編集するたびに、Squidサービスを再起動して、編集内容を有効にしてください。Ubuntuではそれsudo service squid3 reloadです。また、これはおそらく私の開発サーバーに固有の設定の問題です-iPadでは、アドレス解決が正しく機能するように手動でhttp://を入力する必要があります。
アンディジースラー2014年

1
これを行うもう1つの簡単な方法は、私が作成したツールtestProxyを使用することです。構成は不要です: github.com/edwinm/testProxy
edwin

71

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

ここに画像の説明を入力してください

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


1
すばらしい答えです。Webrickを使用してRailsアプリをテストしている場合は、開発マシンのIPアドレスとポート3000を設定するだけです
lsaffie

4
WindowsでWampまたはuWampを使用している場合は、ポートをに設定します80
Epoc、2013

10
ローカルアプリがネット上のさまざまなAPIからデータを取得する私のような場合はどうですか?
Jared Eitnier 2013

28

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

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

そして、これはチャールズ用です:http : //www.ravelrumba.com/blog/ipad-http-debugging/


Windows / Macオプションを具体化していただきありがとうございます。
トレモロキ2011

2
私たちのWindows開発者にとって、Fiddlerは素晴らしいオプションです。
Josh Mouch

11

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

Ubuntu以下の例:

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

127.0.0.1 dev.mysite.com

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

仮想ホストを有効にし、Apacheを再起動します。

sudo a2ensite my-proxy
sudo apache2ctl graceful

次に、[設定]> [Wi-Fi]> [ネットワーク]に移動して、「手動」プロキシを構成します。ApacheサーバーのIPとポートを入力します。それでおしまい!

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


9

iPadで開発しているWebアプリをテストする必要があります。開発アプリでApacheを使用してウェブアプリを実行しているので、Apache mod_proxyを使用するのが最も簡単な方法でした。

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

テストしているWebアプリは、demo.cms.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つのアプリでのみ機能します。別のポートを使用して追加のアプリをセットアップできると思います。多分誰かがより良い解決策を持っていますか?


これは私を正しい方向に向けました。最初に、「URLに有効なプロトコルハンドラはありませんでした」というエラーメッセージが表示されました。これを機能させるには、proxy_moduleとproxy_http_moduleの両方をロードする必要があることがわかりました。ありがとう!
Hobo 2012

8

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

これにより、特定のルールに一致するトラフィックを指定したIPアドレスにリダイレクトできます。これにより、iOSデバイスの/ etc / hostsへのエントリの追加がエミュレートされます。リクエストに設定されたホスト名がトラフィックの転送先のIPによって処理される場合、これを使用してプライベートAPIをテストしたり、他のアプリやウェブサイトから送信されたトラフィックを傍受したりすることもできます。残念ながら、これは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
    受け入れる:text / html、application / xhtml + xml、application / xml; q = 0.9、* / *; q = 0.8
    プロキシ接続:キープアライブ
    PREF = ID = 7722bc3c844a7c26:TM = 1402073839:LM = 1402073839:S = 5bSJJsM2p0HgUP7L
    ユーザーエージェント: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
    接続:キープアライブ

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

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


ありがとう。これを購入して試してみるだけです。
Dennis Day

6

Macでイカを使って作りました。セットアップと使用は簡単です。この記事
に従って、5分でセットアップしました。

更新

もう1つは、プロキシサーバーで実行されているWebサイトに接続する場合、私の場合はMacです。この行をsquidman-> Preferences-> Templateでコメント化する必要があります。

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

5

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


3

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


2

あなたがライブのウェブサイトを持っているなら、あなたはこれのために使うことができます:

DNS構成にAレコードを追加できます。ローカルIPアドレスを指すsomething.yourdomain.comを仮想ホストファイルに追加し、something.yourdomain.comのエントリを追加します。Apacheを再起動し、iOSデバイスを同じネットワークに接続してください。


1

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

Imはmamp pro 2、マウンテンライオンを実行しています。個人用サイトフォルダーには、個々のドメインフォルダーが含まれています。

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

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

この単純なアプローチの利点は、クライアントが同じネットワーク上にある場合に、マシンの構成を経由することなく、クライアントに直接アクセスして開発サイトにアクセスできることです。

これが簡単な解決策を探している人を助けることを願っています。


1

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

最終的に私たちにとってうまくいったことは、サーバーの1つにFiddlerをインストールし、このサーバーをiPadのプロキシサーバーとして使用することでした。Fiddlerには、サブドメインをIPアドレスにマップする機能もあります。たとえば、/ etc / hostsのようなものです。


1

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

もう1つの方法は、ローカルホットスポット経由でIPadをMAC OS Xに接続し、開発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>
  • int iPADsブラウザはIPでページを開きます
    <IP-of-hotspot-host>:<source-port>

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

ホットスポットを作成した後、
MAC OS Xシステム設定>>ネットワーク>> WLANにWLAN ポイントがあります

ServerAliasを追加します。

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

<VirtualHost *:80>  
    ...  
    ServerAlias <ホットスポットホストのIP>  
    ...  
</ VirtualHost>

1

あなたがこれといくつかの外部リンクを探索してきたなら、おそらくこの答えを見つけるでしょう:

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

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

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

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

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


1

PCでカスタムDNSサーバーを使用すると、これを解決できます。私は完全に使用して作業しています。

カスタムDNSサーバーをダウンロードするには、https://technitium.com/dns/を確認してください。.Netテクノロジーを使用して構築されています。このツールを構成した後、DNS設定をカスタムに変更し、PCのIPを設定する必要があります。PCを再起動するたびにIPを変更しないようにするには、PCで静的IPを使用します。


0

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

更新:トレモロキの答えは問題が少なく、はるかに安く見えます。


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.