点击
搜索 / Search

不折腾就是最好的减少麻烦的办法,但是不折腾永远不知道哪儿会出现问题。
这次折腾的起因是我们人见人爱的度受,也可以称为度娘。那是一个风光明媚的下午,我正在头疼怎么给linux虚拟机装上vmhgfs访问主机文件,折腾半天没有成果。本来打算写一篇如何解决这个问题的文章,结果没搞出来,就算了吧。要查解决方案就要用搜索引擎,国内能用的也就是百度必应,全身瘫痪的谷歌只能翻了墙凑活用。结果正准备用百度的,然后惊讶的发现:访问超时。
time out
欸,我啥也没干啊!虽然我也曾用虚拟机搜过你懂的网站,但是总不会因为这个封了我的访问吧?http请求拒绝,我换https总行吧?于是怒换https://www.baidu.com访问之。问题解决。
然后问题又来了,我如何才能让所有指向http://www.baidu.com的请求都重定向到https安全链接上?我首先想到的是手上有的一个油猴脚本:HTTP-to-HTTPS redirector, 遂增加了一个用户配置,意图将所有指向百度的链接都被重定向到https上。弄完没试,我继续折腾vmtools去了。
user js
事实证明没有三板斧不要折腾linux……活活在vmhgfs的编译上卡了一下午,最后终于明白,还是老老实实玩windows比较好。但是我不甘心啊,我非得搞出来共享啊,于是我再度打开百度,结果还是无法访问。

这下哏了,规则完全没起作用,各种二级链接又打不开,除了移动版本其他全挂。于是我直接换用ie和chrome,发现http也是抽了(超时无法访问),而https安然无恙。我第一反应是电脑是否中病毒了,因为长期裸奔(就开一个windows defender),而且有时要去奇怪的网站找东西。检查了进程并重置浏览器缓存之后并没有作用。此时我有限考虑的是http无法连接的问题,正巧在测试虚拟机,用linux下纯净的火狐也同样无法连接。然后我便开始在微博上搜索有关百度无法访问的消息,但是几乎一条都没有。这也就证明百度服务器端没有大规模事故,向群里人询问,告知无法访问的也就两个(包括我)。我就纳闷儿了,今天这是抽了哪门子邪风,要找东西的时候你挂了。恰好群里还有一个在大数字工作的家伙,他对网站维护略知一二(打个广告,做企业安全产品,现在叫360天机。)大致说了一下情况,他告诉我我肯定是被拒绝请求了,要等规则过期。我就只好呵呵吃饭了。
wd也能用……

回来接着折腾https。此时火狐上的百度已经抽了一下午,中间曾经恢复了一会儿,还是因为手动加上一个“s”的原因。既然规则未起效,我把希望寄托在谷歌上,希望找到一个可以永久将百度重定向到安全链接的办法。但是经过多方搜寻,可用的解决方案只有寥寥几个。比如说Https Everywhere这个插件,但是由于是国外团队负责网站列表的维护,对国内网站的支持并不好,而且我没找着在哪儿添加自定义规则。遂抛弃之。而另一方面,在chrome上有原生的解决方案,这里简单介绍一下。

原料:只需要准备一个chrome浏览器即可。
做法:在chrome地址栏中输入“chrome://net-internals/”,下拉列表找到“HSTS”选项。在“Add domain”下面填入百度域名www.baidu.com,单击Add便可以让度娘强制使用https安全连接。
hsts

于是我把目光重新投回油猴脚本上。既然用户自定义不行,那么我编辑原始的js总行吧。按照上方的网站格式添加了百度的域名,保存时报错。但返回检查并没有发现哪儿有错误,便重新保存了。这次再尝试能否重定向,依然不能。这次只得重新寄托于插件了,经过另一番搜索之后,我最终决定使用NoScript这款插件。在简单配置了一下之后,开始测试。这次顺利的进入了主页,但是更加奇葩的事情发生了:度娘自己开始玩命刷新。
至此火狐上的度娘算是彻底被玩坏。http上不去,加个s她还真变m了。看着不断抽风的度娘,我仰天长笑。但是一时也没琢磨出个所以然来。曾经考虑分析页面代码看是不是那个脚本出问题了,结果反而发现一堆彩蛋……也曾卸载了flash,清了缓存,扔掉饼干,但毫无效果。最后我就十分happy的把火狐默认搜索引擎换回了必应。老子用不起还躲不起么……
说来也巧,发在微博上的状态刚好被度受工程师看见。不多时便有人来联系解决问题的事情。另一方面在班固米上的留言也有了回复,还真有比我更惨的人……在一阵混乱之中,我混进了AC天津⑨课群,一天也结束了。
weibo_snap
倒霉的孩儿
转天就是学雷锋的日子。然而问题依旧。我在电脑前的意义就是盯着度受工程师什么时候来联系我解决这件事。盼星星盼月亮盼来了度受的人。寒暄几句之后,对方要开会,问题被放在下午解决。后面balabala略掉不提,工程师通过远程协助过来了。我紧盯他每一步操作,偷师嘛,他也是在火狐上折腾半天,开控制台查信息,看别的浏览器有没有问题,最后他跟我讲:
“咱关掉几个插件试试……”
我顿时觉得自己像是一个son of bitch,我怎么就忘了这个步骤,甚至还傻不唧唧在那儿刷新dns缓存……随着排除法一点点试验,罪魁祸首终于被揪了了出来——还是写的油猴脚本有问题(前文中我改过的HTTP2HTTPS redirector),禁用脚本之后度娘终于不再抽风。度受工程师大手一挥“我要撤了”,我连忙给他拦住“哎别介,我这边http访问也有问题……”。对方闻言又是一通折腾,但是无论怎么尝试始终无法访问。工程师在服务器上的检测结果表明从我这里确实发送了访问请求,而之前我对百度的ping结果表明与服务器是联通的,那么问题出在哪儿?
接下来直接访问服务器端口,time out。弄了半天也是没有效果。最后工程师抛出终极大法“你重置一下lsp试试吧,按照这个方法。”于是我又屁颠屁颠跑过去看。

关于LSP:
LSP即分层服务提供商,Winsock 作为应用程序的 Windows 的网络套接字工具,可以由称为“分层服务提供商”的机制进行扩展。Winsock LSP 可用于非常广泛的实用用途,包括 Internet 家长控制 (parental control) 和 Web 内容筛选。在以前版本的 Windows XP 中,删除不正确的(也称为“buggy”)LSP 可能会导致注册表中的 Winsock 目录损坏,潜在地导致所有网络连接的丢失。 LSP就是TCP/IP等协议的接口.LSP用在正途上可以方便程序员们编写监视系统网络通讯情况的Sniffer,可是现在常见的LSP都被用于浏览器劫持。
另外,LSP是指一个FEC在MPLS网络中经过的路径称为标签交换路径LSP(Label Switched Path),是从入口到出口的一个单向路径。[以上来自度娘百科]
除了通过工具修复被劫持的lsp以外,还可以通过命令提示符(需右键“以管理员身份运行 ”),输入“netsh winsock reset”并回车,重启后即可完成修复。

那么度受工程师口中的终极大法究竟管没管用?待我重启一下……开机后我急忙打开浏览器,依旧time out。

“那就是网络上的问题了 路由器也有可能但是可能性不大 你要是觉得不麻烦的话 可以重置下路由器 或者借个别人的路由器在你这试试 如果还是有同样的问题 就得找你的宽带提供商了。。让他们排个工作人员给你看看”

还说什么呢,重置路由吧……于是,问题神奇的解决了。
进一步探究此问题。家里用的是信通宽带(二(三?)级运营商),路由器是TP-Link WR842n,设置了手动DNS(114和阿里DNS各一),同时绑定了mac与ip地址。一开始怀疑是DNS的问题,更换了谷歌公共dns问题消失,但是一旦绑定ip问题重新出现,但单独绑定ip却不一定造成无法访问百度的问题。在困惑的时候@Azuretom的majia(也就是那个度受工程师,以后简称Azuretom)说:“也许你的运营商封掉了跨省流量。我看你是北京电信的ip,怎么访问到百度的南方入口了?”
我也不知道啊!
这件事告诉我们,选择一级运营商的网络是多么的重要。正好马上要回学校,我听从他的建议把路由的网络设置全改为运营商默认。只是希望下次回来之后再复现问题并琢磨怎么解决了,实在不行只能直接开骂运营商。这次由折腾引起的风波就这样结束了。

生命不息,折腾不止啊……

声明: 本站所有图文遵循 署名-非商业性使用-相同方式共享 3.0 共享 协议.
转载请注明转自 ershiwo的私人研究所
标签:

Related Posts

0 Comments

难得的沙发不来一发吗?!