我将发布此问题,如果社区确定需要详细说明或澄清,我将对其进行编辑。
问题
我今天想到了一个绝妙的主意。我经常在 Amazon.com 上购物。亚马逊提供了一项计划,您所有购买的一部分都会捐给您选择的名为“亚马逊微笑”的慈善机构。您可以通过访问“smile.amazon.com”(amazon.com 的子域)选择“激活”慈善机构。每当我键入“amazon.com”以自动转到“smile.amazon.com”时,我想使用 Windows 10 主机文件进行重定向,以便我的慈善事业始终受益。不幸的是,它没有像我希望的那样工作。
我试过的
首先,我以管理员身份打开 Notepad.exe。然后,我从记事本打开主机文件(路径:)
C:\Windows\System32\drivers\etc\hosts
并尝试了以下所有方法,但无济于事:
直接网址转换
smile.amazon.com amazon.com
使用 CMD ping 以获取 Smile.amazon.com ( 54.239.26.123 )的 URL
54.239.26.123 amazon.com
还添加了 www 子域路由
54.239.26.123 amazon.com 54.239.26.123 www.amazon.com
它似乎都不起作用(当我输入 _amazon.com_ 时,URL 栏中的地址不会更改为“smile.amazon.com”),但是,存在某种证书错误。我尝试了 4 个浏览器,包括 Firefox、Chrome、SeaMonkey 和 IceDragon,(清除所有浏览器的缓存),但无济于事。
根据此服务器故障帖子,我尝试了以下操作:
ipconfig /flushdns
ping smile.amazon.com Pinging smile.amazon.com [54.239.26.123] with 32 bytes of data: Request timed out.
C:\WINDOWS\system32>nbtstat -R Successful purge and preload of the NBT Remote Cache Name Table.
证书/安全错误
进行上述更改后,我收到此错误:
铬合金:
你的连接不是私人的
攻击者可能试图从 www.amazon.com 窃取您的信息(例如,密码、消息或信用卡)。NET::ERR_CERT_COMMON_NAME_INVALID
如果我点击“高级”,我会得到这个:
该服务器无法证明它是 www.amazon.com;它的安全证书来自smile.amazon.com。这可能是由于配置错误或攻击者拦截了您的连接造成的。
当我点击继续访问亚马逊时,浏览器会将我带到 amazon.com,我在 url 中看到了这个:
(https[划掉])://www.amazon.com
我的问题
所以,我想我想知道的是:
- 甚至可以通过 Windows 主机文件将 amazon.com 重定向到smile.amazon.com 吗?
- 我该怎么做?
DNS 解析和 HTTP 重定向是完全不同的东西,这种方法是错误的。毒化您的本地 DNS 解析以强制执行“amazon.com”解析以伪造“smile.amazon.com”IP 只会导致服务器端出现 SSL 证书、HTTP 会话和跨站点请求拒绝问题:
首先,SSL证书。amazon.com 和smile.amazon.com 使用子域特定证书提供服务,因此浏览器会在出现与证书名称不匹配的 URL 请求时向用户提出错误。因此,如果您向支持“smile.amazon.com”的服务器请求“amazon.com”资源,即使在执行 HTTP 请求之前,由于证书名称不匹配,您的浏览器也会警告您。当然,您可能会忽略这一点,但支持应用程序逻辑的 javascript 可能不会出现跨域请求,从而使 Web 完全无用。
其次,如果您以任何方式绕过 SSL 问题,您的浏览器将向 smile.amazon.com 发送请求,询问 amazon.com 的内容,这将导致服务器端提出各种安全机制来拒绝此类跨站点要求。
最后,预计服务器端会话管理、身份验证、cookie 验证等会出现各种问题。
我正在寻找一种将 url 重定向到另一个的解决方案,并找到了这个线程。我认为其他人会发现我的发现很有用,即使它不是您问题的直接答案,但它仍然是解决问题的方法。
我建议您尝试使用诸如Redirector for Firefox 或Redirector for Chrome之类的插件,而不是在 windows 中编辑 hosts 文件。
在我不想浏览某些网站时阻止我浏览某些网站非常有效,例如出于提高生产力的目的,或者强迫自己使用新服务。例如,可以想象使用重定向器停止使用 hotmail.com 并使用另一种自定义服务,而不改变任何其他习惯。
如果您是 Chrome 用户,这可能会帮助您解决问题:
SmileAlways是一个 Chrome 扩展程序,它会自动将您重定向到smile.amazon.com。
由于 amazon.com 和 smile.amazon.com 都由多个 IP 地址托管,因此您的 hosts 文件可能需要定期更新。
而且也可能是亚马逊使用了host-header(也就是你在浏览器中写的域)来检测你尝试访问的站点,所以我认为需要另一种方法。如果您可以设置本地网络服务器(在您自己的计算机上或托管在某处),您可以让该网络服务器托管一个 amazon.com 虚拟网站,该网站会重定向到smile.amazon.com,然后制作hosts 文件中的一项:
由于网络服务器会进行重定向,因此每次您在浏览器中编写 amazon.com 时,您的浏览器都会被重定向到smile.amazon.com。这也将消除任何证书警告。
NBTSTAT 是一个 NetBIOS 工具,与 DNS 无关。
如果您希望 amazon.com 通过您的主机文件解析为 smile.amazon.com 的 IP 地址,那么您将在添加主机文件条目后 ping amazon.com,而不是 smile.amazon.com。您的目标是将 amazon.com 解析为 smile.amazon.com 的 IP 地址,因此名称 amazon.com 是您应该在测试中使用的名称,以确保它解析为 smile.amazon.com 的 IP 地址.
如果您使用smile.amazon.com 的IP 地址在amazon.com 的主机文件中添加一个条目,并且ping amazon.com 返回smile.amazon.com 的IP 地址,则主机文件正在工作。如果您的浏览器仍然将您定向到 amazon.com,那么它与您的主机文件无关。
我想这里有点混乱。您不需要这些行:
但只有这些,将
amazon.com
地址重定向到smile.amazon.com
的 IP:但它也不起作用:
第一个:因为使用IP 地址,您正在访问他们的NIC/NAT/Gateway,而URL指向该 IP 地址后面的网站内的网页。例如,如果您解析
youtube.com
然后尝试手动打开它的 IP 地址,您将到达www.google.com
,因为两者都托管在相同的地址后面并且由它们的 URL 标识。因此,想象一下两者都托管在后面54.239.26.123
,并且访问它们的唯一方法是 URL,您将其替换为amazon.com
,表示您想要访问amazon.com
!第二:假设
smile.amazon.com
由另一台服务器托管。SSL/TLS 证书颁发给 URL,在某些情况下,即使您使用address.com
而不是访问网站,www.address.com
您也会收到证书错误,因为证书仅颁发给后者。因此,如果您尝试访问旨在smile.amazon.com
使用您的地址的 IP,amazon.com
您将收到证书安全警告,并且您必须添加安全例外。抱歉,我不是网络服务/托管方面的专家。我只是尽力解释。