Axton Yao
Always Dream. Always Explore.
无垠
用Python活捉多余jQuery

唔,我猜肯定有人看了标题也不知道我要说什么。

起因是这样的:

我在将服务器换到云服务器之后,后知后觉地发现服务器水管太细,图片加载实在太慢,于是使用了七牛CDN来加速图片加载。在WordPress端我选择了WPJAM插件来方便管理。

有一天我无聊看了一下网站加载情况,突然发现加载了两份jQuery。看图,第一条和最后一条:

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170603_212451.jpg

这就奇怪了。我使用的主题经过过我自己二次开发,清楚主题自带一份jQuery,而且此前绝对没有从除主站域名之外的域名加载过内容。最后我怀疑是WPJAM插件的锅。但由于现在我的网站已经依赖CDN加速,插件无法轻易停用,只能自己确认原因。

首先我先到该插件的问答中心向作者询问,结果并没有什么收获。

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170603_213835.jpg

用WP自带的插件编辑器翻了几个该插件的文件,没有什么发现,实在不想继续手动找了。

不用手动,那就自动化嘛。Python蛮合适这种小任务的,正好也可以练练手。于是上手。

开始

首先把网站文件全部备份到本地方便调试。根目录为V:\Web\fh\。

脚本思路很简单,遍历所有PHP文件,从中搜索dn-staticfile.qbox.me这个域名。如果找到就将路径+文件名输出告诉我。

本来以为遍历文件要自己写递归,后来发现Python提供了一个更方便的方法os.walk(),在Unix及Windows中有效。

它提供好几个参数,但一般只用第一个参数,即传入根目录即可。然后就可以得到一个三元数组,用for遍历这个数组即可。于是有了这样的代码:

跑一下,结果报错。

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170604_153623.jpg

有一个文件里面用了非UTF-8字符,结果这个坎半天翻不过去。试图把它decode,但是还是报错:

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170603_212034.jpg

诶呀,忘了Python 3里面字符串不能decode了。那把字符串变成二进制就好了,更换打开文件方式r为rb。

现在代码如下:

再跑,没问题了。

活捉!果然是WPJAM的锅。

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170603_212057.jpg

打开瞧瞧,活捉添加jQuery的函数:

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170603_212302.jpg

注释或删除掉即可。

刷新页面,果然没了。完美!

https://img.flyhigher.top/wp-content/uploads/2017/06/Axton20170603_212539.jpg

今天划水到这里2333跑了

赞赏
本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可,转载等行为请注意版权问题

发表评论

textsms
account_circle
email

  • https://secure.gravatar.com/avatar/3eda6fcd3204ef285fa52176c28c4d3e?s=80&d=mm&r=r
    null

    可以在linux下用 find . -name *.py | xargs -i grep -H 【搜索关键字】 “{}” 完成

    3月前回复

无垠

用Python活捉多余jQuery
唔,我猜肯定有人看了标题也不知道我要说什么。 起因是这样的: 我在将服务器换到云服务器之后,后知后觉地发现服务器水管太细,图片加载实在太慢,于是使用了七牛CDN来加速图片加…
扫描二维码继续阅读
2017-06-03