cf搭的github镜像站无法登录 有佬有解决办法吗?

代码在github.worker.js

// 站点配置对象
// 理论上更换上游只需修改domain即可。
const siteConfig = {
    domain: 'github.com',
    upstream_path: '/',
    blocked_region: ['KP', 'SY', 'PK', 'CU'],
    blocked_ip_address: ['0.0.0.0', '127.0.0.1'],
    https: true,
    replace_dict: {'$upstream': '$custom_domain'}
  }
  
  siteConfig.upstream = siteConfig.domain
  siteConfig.upstream_mobile = siteConfig.domain
  siteConfig.replace_dict[`//${siteConfig.domain}`] = ''
  
  // 以下保持默认,不要动
  addEventListener('fetch', event => {
    event.respondWith(fetchAndApply(event.request))
  })
  
  async function fetchAndApply(request) {
    // 获取请求头中的地区和 IP 信息
    const region = request.headers.get('cf-ipcountry')?.toUpperCase()
    const ip_address = request.headers.get('cf-connecting-ip')
    const user_agent = request.headers.get('user-agent')
    const url = new URL(request.url)
    
    // 设置协议
    if (siteConfig.https) {
      url.protocol = 'https:'
    } else {
      url.protocol = 'http:'
    }
  
    // 根据设备类型选择上游域名
    const upstream_domain = await isMobileDevice(user_agent) ? siteConfig.upstream_mobile : siteConfig.upstream
    url.host = upstream_domain
    
    // 设置路径
    if (url.pathname === '/') {
      url.pathname = siteConfig.upstream_path
    } else {
      url.pathname = siteConfig.upstream_path + url.pathname
    }
  
    // 检查地区和 IP 是否被屏蔽
    if (siteConfig.blocked_region.includes(region)) {
      return new Response('Access denied: WorkersProxy is not available in your region yet.', { status: 403 })
    }
    
    if (siteConfig.blocked_ip_address.includes(ip_address)) {
      return new Response('Access denied: Your IP address is blocked by WorkersProxy.', { status: 403 })
    }
    
    // 修改请求头
    const new_request_headers = new Headers(request.headers)
    new_request_headers.set('Host', url.hostname)
    new_request_headers.set('Referer', url.hostname)
  
    // 发送请求到上游服务器
    const original_response = await fetch(url.href, {
      method: request.method,
      headers: new_request_headers
    })
    
    // 修改响应头
    const new_response_headers = new Headers(original_response.headers)
    new_response_headers.set('access-control-allow-origin', '*')
    new_response_headers.set('access-control-allow-credentials', 'true')
    new_response_headers.delete('content-security-policy')
    new_response_headers.delete('content-security-policy-report-only')
    new_response_headers.delete('clear-site-data')
  
    // 文本替换
    let original_text
    if (new_response_headers.get('content-type')?.includes('text/html') && new_response_headers.get('content-type')?.includes('UTF-8')) {
      original_text = await replaceResponseText(original_response, upstream_domain, url.hostname)
    } else {
      original_text = await original_response.text()
    }
  
    // 返回修改后的响应
    return new Response(original_text, {
      status: original_response.status,
      headers: new_response_headers
    })
  }
  
  async function replaceResponseText(response, upstream_domain, host_name) {
    let text = await response.text()
    
    // 遍历替换字典进行文本替换
    for (const [key, value] of Object.entries(siteConfig.replace_dict)) {
      const pattern = new RegExp(key === '$upstream' ? upstream_domain : key, 'g')
      text = text.replace(pattern, value === '$upstream' ? upstream_domain : host_name)
    }
    return text
  }
  
  // 检测用户代理是否为移动设备
  async function isMobileDevice(user_agent) {
    const agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]
    return agents.every(agent => !user_agent.includes(agent))
  }
  

等一个大佬

你要登陆镜像站干嘛 :flushed: :flushed: :melting_face: :melting_face:

别搭,域名都会被举报掉

1 个赞

纯属好奇有无办法登录

这么严重吗 还会被举报

cy

会的,netcraft这个b崽子天天扫,扫到了就举报,早就有人的域名被clientHold了,别人是想方设法屏蔽登陆,你还主动要登陆

哈哈哈 我不知道 吓得我赶紧把放出去的链接下掉了

不用自定义域名呢 :thinking: worker自带会怎么样

一样的

那就可能是cf帐号被暂停了

会被嘎掉啊

work自带的域名就需要代理才能打开

试试