废话(TL;DR)
我妈之前给我发了一个数学课的链接,满怀期待地电脑上打开时,我失望了:
我首先想到会不会是 UA(User Agent)的问题,于是我将 UA 改为 Android、iOS,然而都没有用。那么是不是微信内置的浏览器设置了特定的 UA,在网页加载时会识别这个 UA 呢?
要查看 UA,我们可以写一个网页,通过navigator.userAgent来获取 UA。这已经被很多人做成在线工具了,比如http://www.atool.org/useragent.php 。在微信中把这个网页链接发给自己,然后点开:
果不其然,我们看到了两个与腾讯利益相关的项目:MQQBrowser也就是QQ 浏览器,以及MicroMessenger直译过来就是微信。 我尝试了后者,成功打开了网页。事实上,腾讯用的方法十分简单粗暴。如果你抓包来看,你会发现这样一段简单的代码:
图片来自 [aizaimenghuangu](https://testerhome.com/topics/10956)
意思就是如果用户的 UA 中包含MicroMessenger就不做什么,否则就把页面改为题图那样(也有重定向的版本)。
教程
User Agent 是用户浏览器内的一串字符,它描述了这个浏览器是那款浏览器、用户用的是哪个操作系统等等的一些属性。网页可以获取它来提供针对性的服务,当然,也可以被腾讯用来阻止你的访问。
我用的是 Chrome,其他浏览器也大同小异。在你打开那个网页链接之前按ctrlshifti打开开发者工具, 然后按ctrlshiftp打开命令框,搜索network conditions(网络调节) 并打开。
找到下面的 User Agent,取消选择 Select automatically (自动选择),然后在下面的输入框中加入“MicroMessenger”即可。
你做出的更改会在关闭开发者工具后复原。所以不要关闭开发者工具,然后重新输入那个链接地址,打开即可。