LITTLEFOX

一个科研搬砖狗的WordPress尝试

Caddy通过User-Agent进行浏览器过滤

或许这是个比较小众的需求,但是可以满足某些强迫症患者╮(╯▽╰)╭譬如你特别讨厌某数字名字的公司,想让它的用户滚粗你的网站,应该怎么操作呢?

方案有两个,重定向或者伪静态,Caddy都提供了插件,并且都包含在主程序里,无需额外安装,区别在于伪静态只能指向同一域名下的另一个文件(如果是反代那就是被反代的域名),重定向可以指向其他域名,二者的详细用法参看官方文档(redirrewrite)。

下面说UA,例如将常见的国产浏览器都重定向到度娘,Caddyfile里可以这么写:

redir {
  if_op or
  if {>User-agent} has 360
  if {>User-agent} has MicroMessenger
  if {>User-agent} has QQBrowser
  if {>User-agent} has BIDUBrowser
  if {>User-agent} has Maxthon
  if {>User-agent} has MetaSr
  if {>User-agent} has LBBROWSER
  if {>User-agent} has UBrowser
  / https://www.baidu.com/search/error.html
}

重定向方式没有指定,默认是301,由于用到多个条件,且之间是“或”的关系,if_op需要设为or,UA数据来自这里

如果想严格一点,譬如仅限Firefox或者Chrome内核浏览器可以访问,可以用not来指定,这时if_op应该是and,也可以不指定,因为默认就是and。

redir {
  if_op and
  if {>User-agent} not has Firefox
  if {>User-agent} not has Chrome
  / https://www.baidu.com/search/error.html
}

rewrite写法大同小异。if可以指定的条件非常丰富,有了这个思路可以实现各种骚操作,比如只重定向http请求、只重定向某些关键词等,全看各位脑洞。

ps.如果你的目标是爬虫,可以直接看nobots插件

点赞

发表评论(评论内容可能需要审核,无需重复发表)