如何重定向从iPad发出的HTTP请求?

时间:2011-08-02 18:55:59

标签: ipad http redirect hosts

由于在iPad上我们无法编辑主机文件(没有越狱),我们如何可以随意将网络流量重定向到另一个网址?

这对于开发使用虚拟主机配置的网站非常重要,您可以将其重定向到开发计算机。

(这与此问题有关:Can I edit an iPad's host file?

17 个答案:

答案 0 :(得分:83)

解决iPad的这种限制的方法是使用HTTP代理服务器,例如在另一台可以编辑hosts文件的计算机上运行的Squid

在设置下的iPad上 - >网络 - > Wi-Fi - > (您的网络)有一个HTTP代理设置,可以设置为手动。在此处输入您的代理信息。

设置完成后,您就可以操作iPad,就像更改主机文件一样。

答案 1 :(得分:70)

我发现你只需修改iPad中的Wifi设置,就可以将开发机器的IP地址用作HTTP代理(如aforementioned article中所述):

enter image description here

这样,通过输入虚拟主机的网址(例如local.mywebapp.com)就可以在iPad上访问您的网络应用程序。它简单快捷,但与Will Koehler的解决方案不同,您无法通过iPad访问互联网。但大部分时间它并不是真正的问题,因为你只想测试自己的应用程序。

答案 2 :(得分:28)

在运行代理服务器(如Fiddler或Charles)的计算机上设置hosts文件,并将iPad配置为将该计算机用作HTTP代理。

以下是如何使用Fiddler执行此操作的说明: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

这是给查尔斯的: http://www.ravelrumba.com/blog/ipad-http-debugging/

答案 3 :(得分:9)

我需要测试我在iPad上开发的网络应用。我在我的开发机器上使用Apache来运行web应用程序,所以我找到的最简单的解决方案是使用Apache mod_proxy。

我的开发机器在我的家庭网络上可见为sapphire.local。

我正在测试的网络应用程序是在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。该方法一次仅适用于一个应用程序。我认为你可以使用不同的端口来设置其他应用程序。也许有人有更好的解决方案?

答案 4 :(得分:9)

如果您已经有一个 Apache 服务器,那么您可以轻松地将其用作转发代理。这对WordPress网站特别有用,它们非常喜欢使用完整的绝对URL。

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

然后转到设置&gt; Wi-Fi&gt;您的网络并配置“手动”代理。输入Apache服务器的IP和端口。而已!

<Proxy *>块确保只有本地网络上的人才能使用此代理。如果您使用转发代理,则严格限制访问is essential。此时ip2cidr页面将非常有用。 (作为额外措施,我的防火墙阻止了:8080端口。)

答案 5 :(得分:7)

也可以使用Weblock - AdBlock for iOS应用程序(此处只需1.99美元:https://itunes.apple.com/us/app/weblock/id558818638?mt=8)来创建网络流量重定向。

这允许您将符合特定规则的任何流量重定向到指定的IP地址。这将模拟在iOS设备上向/ etc / hosts添加条目。如果请求中设置的主机名由您引导流量的IP处理,您可以使用它来测试私有API,甚至嗅探从其他应用程序或网站发送的流量。遗憾的是,这仅适用于http / https连接。

这一切只能在Wi-Fi(Weblock的限制之一)上完成。主要优点是您可以轻松配置iOS设备中的所有内容,而无需使用DNS /代理服务器配置。

以下是一个例子:

  1. 我已经像这样配置了Weblock:http://i.stack.imgur.com/c5SUh.png
  2. 打开Safari并在www.google.com中输入网址
  3. 这是我的Mac终端上的输出,侦听端口1234上的连接:
  4. 
        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也可以选择性地使用正则表达式重定向某些URL。 您可以仅将查询重定向到某个端点,而所有其他查询都会转到从DNS返回的IP。这实际上允许/ etc / hosts进行更合适的配置。

    实施例: 如果我为 htt *://somedomain.com/api/login* 和某些IP和端口创建了URL重定向规则,我将只会看到此IP和端口上此URL的流量,而所有somedomain.com的其他流量将直接转到DNS返回的IP。请注意,由于规则末尾带有通配符*符号,它对 / api / login / api / login?someparam = somevalue 都有效。

答案 6 :(得分:6)

我是在Mac上使用squidman制作的。它易于设置和使用。
我按照this article在5分钟内设置了它。

<强>更新

另一件事是如果你想连接到代理服务器上运行的网站,在我的情况下它是我的Mac,你需要在squidman-&gt; Preferences-&gt;模板

中评论这一行。
# protect web apps running on the proxy host from external users
# http_access deny to_localhost

答案 7 :(得分:5)

您可以在网络上设置内部DNS服务器(如果尚不存在)并设置A记录。然后确保您的DHCP设置为返回所述DNS服务器

答案 8 :(得分:3)

您也可以使用http://xip.io/使用该页面上的说明输入IP地址,它会将您重定向到相关的本地IP。

答案 9 :(得分:2)

如果你有一个实时网站,你可以用它:

您可以在DNS配置中添加A记录:something.yourdomain.com指向您的本地IP地址,然后将something.yourdomain.com的条目添加到您的虚拟主机文件中。重启Apache,让你的iOS设备在同一个网络上运行,你就可以了。

答案 10 :(得分:1)

内部DNS服务器是其中一个选项,但实施起来太麻烦了。我们尝试将squid安装为代理服务器,但这也没有用,因为它将URL重定向到新服务器,并且在浏览器URL上也看到了这种重定向。

最终为我们工作的事情是在其中一台服务器上安装Fiddler,并将此服务器用作ipad上的代理服务器。 Fiddler还具有将子域映射到IP地址的功能,即与/ etc / hosts类似的东西。

答案 11 :(得分:1)

在PC上使用自定义DNS服务器可以解决此问题。我正在使用并且工作正常。

选中https://technitium.com/dns/以下载自定义DNS服务器。使用.Net技术构建的。配置此工具后,您需要将DNS设置更改为“ custom”并设置PC的IP。为了避免每次重新启动PC时都更改IP,请在PC上使用静态IP。

答案 12 :(得分:1)

如果你一直在探索这个以及一些外部链接,你可能会找到这个答案:

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

这是一个名为dnsmasq的轻量级DNS服务器。超级简单,功能强大,可与内部或外部DNS服务器配合使用。

比安装鱿鱼,摆弄Apache以及其他耗时的技术容易得多,并且冒着“完整性”的风险。配置,开发环境,测试环境等。

值得考虑。

我将其作为开发和正常网络的常规工具。

答案 13 :(得分:1)

很好的教程: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

另一种方法是通过Local Hotspot将IPad与我的MAC OS X连接,并建立到开发VM的端口转发。 为实现这一点,我完成了以下步骤:

  • 在MAC OS X上创建WLAN-Hotspot Link how to do this
  • 将iPAD与热点WLAN连接(在iPAD&gt;&gt;设置&gt;&gt; WLAN)
  • 将ServerAlias添加到本地开发VM(详细信息如下)
  • 建立ssh-portforwarding
    ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • 在iPAD浏览器中打开包含IP的页面 <IP-of-hotspot-host>:<source-port>

从哪里获得'IP-of-hotspot-host':

创建热点后,有一个WLAN-Point MAC OS X系统设置&gt;&gt;网络&gt;&gt; WLAN

添加ServerAlias:

在我的开发-VM(Apache2)中 /etc/apache2/sites-available/dkr.dev.local 我不得不添加以下内容:

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

答案 14 :(得分:1)

这是用于Mamp Pro虚拟主机的跨设备/计算机测试的无配置方法。唯一的限制是你一次只能测试一个域,但对我来说,这在我开发时很好。但是,直接在mamp中更改虚拟主机非常简单。

我正在运行mamp pro 2,山狮。我的网站文件夹包含各个域文件夹。

我发现如果您在虚拟主机'ip / port'下选择本地计算机的特定IP并重新启动mamp,当通过网络查看localhost计算机的IP地址或计算机名称时,此域将成为默认域

出于测试目的,这适用于网络上的所有设备,包括iPad。如果要测试另一个虚拟主机,只需将ip / port配置返回“*”,然后将另一个域重新分配给计算机的IP地址并重新启动。

这种简单方法的优点是,当您在同一网络上时,无需在其计算机上进行任何配置即可直接访问开发站点。

希望这有助于其他寻求简单解决方案的人。

答案 15 :(得分:0)

此处的答案是正确的。更多知识:这些不适用于证书固定。您可以做的是(1)使用域通配符证书来支持您的dev / test / qa区域测试。和/或(2)使用反向代理服务器(如Apache),您可以将其更改为Apache在网络中路由请求的位置。现在,当你进入SSL Pinning测试时,你就会死于物理设备并且只能通过模拟器(ios)和模拟器(android)进行验证。

答案 16 :(得分:0)

我会尝试使用Relay Server(Afaria的一部分),它可以根据配置文件重定向移动流量。

更新:tremoloqui的回答似乎不那么麻烦而且便宜得多。