对 Nginx 和 Cloudflare 防火墙进行配置以阻挡一些对 WordPress 网站不友好的请求

Cloudflare 防火墙

ASN、URI 和 IP

Autonomous System Number

ASN 列表来自 https://github.com/BlueSkyXN/ScannerReport

12816 12786 18450 197540 24961 26496 46606 54600 60068 22773 18978 7922 61317 6079 397391 46562 22616 26347 45916 22394 202594 40676 398101 396362 6167 54290 135981 21686 7303 138997 22418 140224 46475 20001 43959 41378 29802 10013 9824 4766 209 43260 7565 40676 3786 28438 13287 3786 24641 54548 43754 205544 6461 141995 8047 35916 396253 64096 40021 32097 394380 9286 16509 9370 9318 6921 7713 4788 262186 13489 21353 13213 20473 2914 24940 8100 45102 36352 63949 14061 54994 12876 14618 36351 16276

此外,对来自

45090 55990 37963

ASN 的请求启用旧版 CAPTCHA 或者 JS 质询

另外,对于所有 ASN 的屏蔽规则,可以选择添加语句

and not cf.client.bot

来排除掉 Cloudflare 自身的机器人

URI 和 IP

URI 路径列表主要针对 WordPress 网站,非 WordPress 路径的条目来自 CF 防火墙记录

"/xmlrpc" "/savepng.php" "/.env" "/system_api.php" "/version.js" "/stream/live.php" "/Telerik.Web.UI.WebResource.axd" "/.git" "/wlwmanifest.xml" "/export.php" "/ups.php" "/doc.php" "/s_ne.php" "/wp_wrong_datlib" "/bak.php" "/*alfa" "/ALFA" "/shell.php" "/xleet.php" "/wso.php" "/test.php" "/config.php" "/xmlrpc.php" "/GponForm" "/.aws"

IP 需要针对每个网站进行设置,这里不直接给出 IP 黑名单,可以通过 Cloudflare 防火墙记录或者 Nginx 日志获取

此外,可以屏蔽来自 Tor 的请求

User Agent

Continue reading “使用 Nginx + Cloudflare 阻挡赛博垃圾”

在一些地区或者一些场景下访问 Telegram 会有难度,Cloudflare 虽说在一些地区速度也不理想,但总比没有强

将通知消息的标题和内容发送到 Cloudflare Workers 的边缘网络,然后 Workers 转发到 Telegram Bot 的 API(发起 GET 或 POST 请求)

这个方法也可以在未被封禁的服务器上实现,或者在具有外网访问条件的环境内实现,然后通过端口转发到公网

下面是 Cloudflare Workers 的实现代码

const OPT = {
  BotToken: '', // Telegram Bot API
  ChatID:'', // User ChatID
  ParseMode: 'markdownv2' //keep blank, html, markdown or markdownv2
}
 
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})
 
async function handleRequest(request) {
  let url = new URL(request.url);

  let title = url.searchParams.get('title')||'Telegram Bot Notification';
  let msg = url.searchParams.get('msg')||'Add msg parameter to send customized message';
 
  if(msg.errcode){
    return new Response(JSON.stringify(msg), {
      status: 200, 
      headers:{
        'content-type':'application/json; charset=UTF-8'
      }
    })
  }
 
  return await sendMessage(title, msg);
}

async function sendMessage(title, msg){
  let url = "https://api.telegram.org/";
  url += "bot" + OPT.BotToken + "/sendMessage?";
  url += "chat_id=" + OPT.ChatID + "&";
  url += "parse_mode=" + OPT.ParseMode + "&";
  url += "text=*" + title + "*%0A%0A";
  url += msg;
  
  return fetch(url ,{
    method:'get',
    headers: {
      'Accept': 'text/html,application/xhtml+xml,application/xml;',
      'Accept-Encoding': 'gzip, deflate, br',
      'User-Agent': 'Mozilla/5.0 Chrome/90.0.4430.72'
    }
  });
}

新建 Workers,将代码粘贴至脚本中,点击部署

脚本默认使用 MarkdownV2 格式,如果使用纯文本或 HTML 格式,需要自行修改位于 34 行的标题加粗 ** 号

可以在 OPT 内添加其他通知参数,关于其他参数可以查看 Telegram Bot API

以上代码已发布到 azhuge233 / Teleflare-Messenger