通过观察wordpress请求发现,wordpress在更新文章后会向文章发送GET请求。
在发送请求之前会执行一个调用定时的一个请求
POST /wp-cron.php?doing_wp_cron=1678081385.6844499111175537109375 HTTP/1.1
执行这个定时后,这篇文章的所有链接都会发送HEAD和GET请求
HEAD /fj/radio?vodId=11 HTTP/1.1
UA为
WordPress/6.1.1; http://blog.example.com
最开始怀疑是过滤器make_clickable干扰导致
add_filter('commcent_text', 'make_clickable', 9);
add_filter('the_content', 'make_clickable');
全局搜索代码发现,这个过滤器识别链接是正则。后续也没有发送请求的操作。
那么从定时入手开始排查。
安装定时查看插件 WP Crontrol
安装后进入查看定时列表的页面
我这里有15分events
随便找一篇文章保存下,发现,保存后一两秒多了一个event
名为do_pings
do_pings,,2023-03-06T13:29:14+08:00,2023-03-06T05:29:14+00:00,do_all_pings(),Non-repeating,0
简单搜索了一下,这个是wordpress的Pingback、Trackback机制。简单理解就是,你的文章引用了别人的博客后会自动发送一个请求到对方博客。但是这个不太智能,对于文章里的url,不管你有没有设置超链接,不管链接的是不是博客,都会发这个请求到这个链接上。这个功能在wordpress安装后是默认启用的。上面的UA为WordPress的请求也是这么来的。那么如何关闭呢。
找到 设置--讨论 取消勾选 尝试通知文章中链接的博客 即可
关闭之后就不会发请求了。