如何通过 cloudflare worker 实现假装关闭网站?

2023-05-15 18:31:01 +08:00
 Alan3

需求: 国内 ip 访问网站显示正在维护中,非大陆 ip 正常访问。

  1. 使用 WAF ,直接设置来自 China 的 ip 阻止。 但是他显示的页面是 cloudflare 的禁止访问的页面,不太符合需求。

  2. 使用 worker ,用以下的代码部署, 来自大陆的 ip 能正常阻止,但是非大陆 ip 会一直重定向:

export default {
  async fetch(request, env) {
    let country = request.headers.get('cf-ipcountry')

    if(country === 'CN') {
      return new Response('Sorry, this page is not available.', { status: 403 })
    }

    return fetch(request)
  }
}

请教一下大家有什么解决方法没有? (我并不专注于 js 和网络,所以有什么我需要了解的知识,还请不吝指出,我去了解,谢谢)

998 次点击
所在节点    程序员
3 条回复
wdssmq
2023-05-15 19:05:36 +08:00
export default {
async fetch(request, env) {
let country = request.headers.get('cf-ipcountry')

if (country === 'CN') {
return new Response('Sorry, this page is not available.', { status: 403 })
}

// 获取请求的 URL
const reqUrl = request.url;
// 获取 path
const path = new URL(reqUrl).pathname;
// 真实请求的 URL
const realUrl = 'https://www.baidu.com' + path;

return fetch(realUrl)
}
}
Alan3
2023-05-15 20:28:02 +08:00
@wdssmq #1 谢谢你的回复,但我找到问题所在了,并不是 worker 的代码问题造成的重定向次数过多。最后通过这个重定向解决参考: https://shenghuahuancai.cn/posts/%E4%BD%BF%E7%94%A8CloudFlare%E5%AF%BC%E8%87%B4%E7%BD%91%E7%AB%99%E9%87%8D%E5%AE%9A%E5%90%91%E7%9A%84%E6%AC%A1%E6%95%B0%E8%BF%87%E5%A4%9A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/ ,worker 代码并未做改动
wdssmq
2023-05-16 11:22:46 +08:00
@Alan3 好吧。。我一直把 worker 当单独的反代使用,大概是也能当 CDN 的前置处理??毕竟是他们自家的产品。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/940204

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX