反向代理遇到Cloudflare提示

由于某个站点国内打不开我想用完首尔的服务器反代理一下
但是遇到cf提示了
首尔服务器可以正常打开那个站点
想问一下怎么解决


用的1panel反向的

17 Likes

有没有可能,这个网站首尔也打不开

可以打开的正常打开

我也觉得,应该是那个地区,没有记录,建议给出url让大伙试试

fish.audio这是网址

2 Likes


美国梯子节点可以打开

2 Likes

看了itdog,这人应该使用了反代ip优选的cf,然后他国内的反代ip全炸了 (ping了一下,全被墙了):rofl:

2 Likes

不想用梯子就直接反代用

2 Likes

只是把国内的关了所以才想反代

你可以试着反代这些ip,然后修改传递host.这些ip只通了443(应该)

你直接用cf worker反代就好了啊,绑定一个自定义域名,国内就随便访问了

export default {
  async fetch(request, env) {
    try {
      const replacementDomain = env.REPLACEMENT_DOMAIN;
      if (!replacementDomain) {
        return new Response('Replacement domain not configured', { status: 500 });
      }

      const originalUrl = new URL(request.url);
      originalUrl.host = 'fish.audio';
      const modifiedRequest = new Request(originalUrl, request);

      const response = await fetch(modifiedRequest);

      if ([301, 302, 307].includes(response.status)) {
        let location = response.headers.get('Location');
        if (location && location.includes('fish.audio')) {
          location = location.replace('fish.audio', replacementDomain);
          const filteredHeaders = filterHeaders(response.headers, ['Location']);
          filteredHeaders.set('Location', location);
          return new Response(null, {
            status: response.status,
            statusText: response.statusText,
            headers: filteredHeaders,
          });
        }
      }

      const contentType = response.headers.get('Content-Type') || '';
      if (contentType.includes('text/html')) {
        let body = await response.text();
        body = body.replace(/fish\.audio/g, replacementDomain);

        const newHeaders = new Headers(response.headers);
        newHeaders.delete('Content-Length');

        return new Response(body, {
          status: response.status,
          statusText: response.statusText,
          headers: newHeaders,
        });
      }

      return response;
    } catch (error) {
      return new Response('Internal Server Error', { status: 500 });
    }
  },
};

function filterHeaders(headers, allowed) {
  const result = new Headers();
  for (const [key, value] of headers.entries()) {
    if (allowed.includes(key)) {
      result.append(key, value);
    }
  }
  return result;
}

环境变量里设置 REPLACEMENT_DOMAIN 为你的自定义域名。

2 Likes

他这个网站挺奇怪的itdog国外是500报错

1 Like

等等,这个提示不是源网站的提示,是提示你的域名(fish.lunt.pro)没有解析,刚刚才发现

解析了只是反代他这个家提示cf的信息

https://fish-audio.464888.xyz

你的现在已经正常了,


挂了小黄云有时候要等扽就好了

怎么搞的啊大佬

你不是已经成功了吗 :rofl:


突然发现你的不是反代是301重定向

这不是我站啊

你的不是反代是重定向,我访问fish.lunt.pro这个然后被301重定向了