119

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

这对于诸如开发使用虚拟主机配置的网站之类的事情很重要,您希望将其重定向到开发机器。

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

4

18 回答 18

89

绕过 iPad 的这一限制的方法是使用 HTTP 代理服务器,例如在另一台机器上运行的Squid,您可以在其中编辑 hosts 文件。

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

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

于 2011-08-02T19:05:30.457 回答
74

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

在此处输入图像描述

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

于 2012-08-01T11:10:13.217 回答
30

在运行代理服务器(如 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/

于 2011-08-02T20:00:01.007 回答
12

如果您已经有一个正在开发的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>

启用虚拟主机,然后重新启动 Apache:

sudo a2ensite my-proxy
sudo apache2ctl graceful

然后转到设置 > Wi-Fi > 您的网络并配置“手动”代理。输入 Apache 服务器的 IP 和端口。就是这样!

<Proxy *>块确保只有我本地网络上的人才能使用此代理。如果您使用正向代理,则严格限制访问至关重要。此时,ip2cidr页面将很有帮助。(作为一项额外措施,我的防火墙阻止了 :8080 端口。)

于 2013-09-25T22:56:05.297 回答
9

我需要测试我在 iPad 上开发的网络应用程序。我在我的开发机器上使用 Apache 来运行 Web 应用程序,所以我找到的最简单的解决方案是使用 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。该方法一次仅适用于一个应用程序。我认为您可以使用不同的端口来设置其他应用程序。也许有人有更好的解决方案?

于 2011-12-20T00:19:31.960 回答
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
    获取 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 。

于 2014-06-27T11:53:37.140 回答
6

我是通过在 Mac 上使用squidman实现的。它易于设置和使用。我按照这篇文章
在 5 分钟内完成了设置。

更新

另一件事是,如果您想连接到在代理服务器上运行的网站,在我的情况下是我的 Mac,您需要在 squidman->Preferences->Template 中注释掉这一行

# protect web apps running on the proxy host from external users
# http_access deny to_localhost
于 2013-10-11T07:03:49.990 回答
5

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

于 2011-08-25T23:24:33.127 回答
4

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

于 2013-09-30T11:37:11.157 回答
2

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

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

于 2013-02-22T14:07:57.230 回答
2

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

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

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

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

很值得考虑。

我采用它作为开发和正常网络的常规工具。

于 2014-07-16T00:20:30.920 回答
1

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

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

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

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

这种简单方法的优点是,当您在同一网络上时,您可以直接向客户提供对您的开发站点的访问,而无需在他们的机器上进行任何配置。

希望这可以帮助其他寻找简单解决方案的人。

于 2013-01-18T18:41:42.907 回答
1

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

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

于 2013-07-22T08:18:27.430 回答
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-Hotspot Link 如何执行此操作
  • 将 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>
  • 在 iPad 浏览器中打开带有 IP 的页面
    <IP-of-hotspot-host>:<source-port>

从哪里获得“热点主机的 IP”:


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

添加服务器别名:

/etc/apache2/sites-available/dkr.dev.local中的开发虚拟机(Apache2)中, 我必须添加以下内容:

<虚拟主机 *:80>  
    ...  
    ServerAlias <IP-of-hotspot-host>  
    ...  
</虚拟主机>
于 2014-02-04T10:00:41.720 回答
1

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

于 2017-07-14T14:29:10.300 回答
1

在 PC 上使用自定义 DNS 服务器可以解决这个问题。我正在完美地使用和工作。

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

于 2019-10-24T10:38:08.220 回答
0

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

更新:颤音的答案似乎不那么麻烦,而且便宜得多。

于 2011-08-02T19:55:50.237 回答
0

介绍:

将请求重定向到内部开发站点而不对任何特定设备的主机文件进行调整的一种简单快捷的方法是在路由器中创建一个名称:IP映射以绕过公共 DNS。

该解决方案经过测试,已知可产生一致、正确的结果。它避免了所有开发人员在他们自己的机器上进行本地黑客攻击。

过程:

此示例使用运行RouterOS的 MikroTik 路由器,因此如果使用其他设备,则必须根据路由器菜单的组织方式调整该过程。

  1. 在路由器上为您的开发站点创建一个名称:IP映射。首先转到该DNS部分,然后单击Static

RouterOS DNS 主菜单

  1. 然后点击 > Add New

DNS 添加新条目

  1. 现在为您的开发站点创建一个 DNS 条目,如下所示:

本地映射

  1. 最后,将默认网关设置为您的开发人员的第一个DNS 解析器,以便绕过您网站的公共 DNS 记录:

将 GW 设置为第一个 DNS 解析器

DNS 服务器将按顺序进行询问,因此在您的 DNS 中公开发布的映射之前引用本地映射非常重要,以便Google 知道您的生产网站。

结论:

现在,当您尝试在连接到开发者子网的 iPad、iPhone 或其他设备上查看开发者网站时,您将被重定向到开发者网站。无需更改任何这些设备hosts文件即可执行测试和审查。

Anyhoo,这就是网络人攻击问题的方式。

于 2022-01-03T23:43:44.477 回答