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


116

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

这对于某些事情(例如,开发使用虚拟主机配置的网站,在其中您要重定向到开发计算机)非常重要。

(这与以下问题有关:我可以编辑iPad的主机文件吗?

Answers:


88

克服iPad局限性的方法是使用HTTP代理服务器,例如在另一台可以在其上编辑主机文件的计算机上运行的Squid

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

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


3
仅作记录,我会说使用macports“ sudo port install squid”安装鱿鱼非常容易
MiQUEL

1
yum install squid在浅

3
apt-get install squid在Ubuntu上
Jess Telford

3
注意:每次在Squid服务器上编辑主机文件时,请重新启动Squid服务以确保编辑生效。在Ubuntu上是sudo service squid3 reload。另外-也许这是我的开发服务器特有的配置问题-在我的iPad上,我必须手动输入http://才能使地址解析正常工作。
安迪·吉斯勒2014年

1
另一个更简单的方法是使用我编写的工具:testProxy。:不需要配置 github.com/edwinm/testProxy
埃德温

71

我发现您只需要修改 iPad中的Wifi设置即可将开发机器的IP地址用作HTTP代理(如上述文章所述):

在此处输入图片说明

这样,通过输入虚拟主机的URL(例如local.mywebapp.com)就可以访问iPad上的Web应用程序。它既简单又快捷,但是与Will Koehler的解决方案不同,您将无法从iPad访问Internet。但是在大多数情况下,这并不是真正的问题,因为您只想测试自己的应用程序。


1
好答案。如果您正在使用Webrick测试Rails应用,只需设置开发机的IP地址和端口3000
lsaffie 2012年

4
如果您在Windows上使用Wamp或uWamp,请将端口设置为80
Epoc 2013年

10
像我的情况那样,本地应用程序从网络上的各种API提取数据的情况如何?
贾里德·埃特尼耶

28

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

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

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


感谢您充实Windows / Mac选项。
tremoloqui 2011年

2
对于我们Windows开发人员来说,Fiddler是一个不错的选择,因为大多数开发人员已经安装了它。
乔什·穆奇

11

如果您已经拥有要进行开发的Apache服务器,则可以轻松地将其用作正向代理。这对于真正喜欢使用完整绝对URL的WordPress网站特别有用。

下面的Ubuntu示例:

第一步是/etc/hosts在开发服务器中编辑文件。添加服务器的本地IP,指向您的站点。

127.0.0.1 dev.mysite.com

当您尝试解析来自iPhone / iPad的请求时,Apache代理将使用此主机文件。现在让我们设置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来运行Web应用程序,因此我发现最简单的解决方案是使用Apache mod_proxy。

我的开发机在我的家庭网络中显示为sapphire.local。

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


这为我指明了正确的方向。最初,我收到一条错误消息“该URL没有有效的协议处理程序”。我发现必须同时加载proxy_module和proxy_http_module才能使其正常工作。谢谢!
Hobo's

8

也可以使用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中输入URL
  3. 这是Mac上的终端在端口1234上监听连接的输出:
    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,如Mac OS X)AppleWebKit / 537.51.2(KHTML,如Gecko)版本/7.0 Mobile / 11D201 Safari / 9537.53
    接受语言:en-us
    接受编码:gzip,放气
    连接:保持活动状态

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

我在Mac上使用squidman做到了。易于设置和使用。
我按照这篇文章在5分钟内完成了设置。

更新资料

另一件事是,如果您要连接到代理服务器上运行的网站,在我的情况下是我的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服务器



2

如果您有一个实时网站,则可以使用它:

您可以将A记录添加到DNS配置中:指向您的本地IP地址的something.yourdomain.com,然后将something.yourdomain.com的条目添加到虚拟主机文件中。重新启动Apache,将您的iOS设备连接到同一网络,您就可以开始了。


1

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

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

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

出于测试目的,此方法在网络上的所有设备(包括iPad)上都可以正常运行。如果要测试另一个虚拟主机,则只需将ip / port配置返回“ *”,然后将另一个域重新分配给计算机的ip地址并重新启动。

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

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


1

内部DNS服务器是一种选择,但实施起来非常麻烦。我们尝试将鱿鱼安装为代理服务器,但由于将URL重定向到新服务器,并且在浏览器URL上也可以看到,因此也没有用。

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


1

不错的教学指南:http : //egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

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

  • 在MAC OS X上创建WLAN热点链接如何执行此操作
  • 将iPAD与Hotspot-WLAN连接(在iPAD >>设置>> WLAN上)
  • 将ServerAlias添加到本地Development-VM(以下详细信息)
  • 建立ssh-portforwarding
    ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • int iPADs Browser打开带有IP的页面
    <IP-of-hotspot-host>:<source-port>

在哪里获取“ IP热点主机”:

创建热点后,
MAC OS X系统设置>>网络>> WLAN 中将存在一个WLAN-Point。

添加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服务器结合使用。

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

很值得考虑。

我将其用作开发和正常联网的常规工具。


1

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

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


0

我会尝试中继服务器(Afaria的一部分),该服务器可以基于配置文件重定向移动流量。

更新:tremoloqui的答案似乎麻烦更少,而且便宜得多。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.