Linux中使用Chrome浏览器xdg-open弹出窗口问题溯源及解决
1、问题现象
在Linux下使用Chrome的时候,经常会莫名奇妙弹出xdg-open窗口,如下图
点击"打开 xdg-open\',会出现调用app的命令,像淘宝、优酷等等各种手机。但是由于是PC,没有安装手机APP,调用失败出现错误,如下图
2、原因分析
(1)网站问题:一开始我还以为是网站为了盈利做的广告,等到我自己完全干净的网站访问时也出现类似的xdg-open弹出窗口才发现问题并没有这么简单。
(2)电信劫持:通过Chrome的调试工具发现,我在gitee挂的公益书籍网站docsify.js文件内容被替换了,到gitee上源码内容又是正常的。我单独访问这个js文件,多刷新几次后,内容又正常了。看来文件从服务器传输到客户端时被替换劫持了。在Chrome调试工具中网络传输记录上可以看到,实际传输了两个docsify.js文件,因此网页显示的内容还是保持正常的。docsify.js文件内容被替换后会调用 https://co.puretou.com/iquery.min.js,文件内容是一堆编码后的内容,效果是会调用各种app,如下图:
(3)真是电信的问题? 根据第(2)步的分析,我认为是电信服务商的问题,于是给电信客服电话,核实了DNS没有错误,并且要了一个非默认的DNS(以前有过路由器DNS问题,手机通过浏览器下载APP软件,APK文件会被替换成推广的软件),然而情况没有好转。于是我使用手机4G开热点,使用移动网络,问题依旧。因此看起来要么电信、移动乌鸦一般黑,都搞劫持广告推广。然而我日常使用的时候腾讯网站从来没有弹出过这种窗口,所以不一定是电信服务商问题。因为服务商不会仅仅放过腾讯公司。
(4)后来问 题解决后,看到网友在iMAC使用safari浏览器也出现同样的问题,参见文章https://www.douban.com/note/734256908/ ,网友猜测是遭遇了“CDN回源路径劫持”。我觉得可能性非常大,网站的源代码中就有使用CDN的代码,如下图
3、问题解决
由于这种劫持方式是将某一个js脚本替换成虚假js,然后再由虚假js调用https://co.puretou.com/iquery.min.js,最后的iquery.min.js调用大批广告代码,因此可以通过屏蔽域名 co.puretou.com 的方式解决。以下方法选任意一种。
(1)在Linux中,打开/etc/hosts 文件,在其中加入以下条目,将广告网站解析到本地地址。
127.0.0.1 co.puretou.com
(2)第一种方法只能解决一台电脑,为了家里的所有设备(手机、笔记本)都不受广告骚扰,更好的方式是在家中路由器上屏蔽。现在的路由器基本上都有这种安全功能。
4、总结
现在国内的网络生态真的是非常差,网速提升了,但是网络内容遍地都是带颜色的内容图片。前段时间以为女教师给学生上网课就被带色的广告软件骚扰,还冤枉地以”操作不熟练“接受了处分。现在的windows系统里面,各种莫名奇妙的弹出窗口数不胜数,很多还是大公司们在借此盈利。chrome内容劫持比较隐蔽,手机上还以为是网站提供的弹出广告,仔细溯源才发现其中隐藏的灰色。