通过观察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

wordpress更新文章后总是向文章内连接发送GET请求

安装后进入查看定时列表的页面

wordpress更新文章后总是向文章内连接发送GET请求

我这里有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的请求也是这么来的。那么如何关闭呢。

找到 设置--讨论 取消勾选 尝试通知文章中链接的博客 即可

wordpress更新文章后总是向文章内连接发送GET请求

关闭之后就不会发请求了。

发表回复