MoonTV 你的私人影院订阅源总是失败?一招教你用Cloudflare免费搭建Base58转链

MoonTv 一键搭建数据接口

利用CF的Workers 搭建:以下是代码 使用方法:  https://video.gaojilingjuli.top/?url=https://raw.githubusercontent.com/666zmy/MoonTV/refs/heads/main/config.json&pretty=true 

addEventListener(‘fetch’,event=>{

event.respondWith(handleRequest(event.request))

})

asyncfunctionhandleRequest(request){

try{

    // 解析 URL 参数

const url = new URL(request.url)

const targetUrl = url.searchParams.get(‘url’)

if (!targetUrl) {

returnnewResponse(‘Missing url parameter’,{ status:400})

}

    // 验证 URL 格式

try{

newURL(targetUrl)

}catch{

returnnewResponse(‘Invalid URL format’,{ status:400})

}

    // 从远程获取 JSON

const response = await fetch(targetUrl)

if (!response.ok) {

returnnewResponse(`Failed to fetch: ${response.status}`,{ status:response.status})

}

const jsonData = await response.json()

    // 对 JSON 做 base58 编码

const jsonString = JSON.stringify(jsonData)

const encoded = base58Encode(jsonString)

returnnewResponse(encoded,{

      headers:{

‘Content-Type’:’text/plain’,

‘Access-Control-Allow-Origin’:’*’

}

})

}catch (error) {

returnnewResponse(`Error: ${error.message}`,{ status:500})

}

}

// Base58 编码实现

functionbase58Encode(str){

const ALPHABET = ‘123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz’

const bytes = new TextEncoder().encode(str)

if (bytes.length===0) return”

let num = BigInt(‘0x’ + Array.from(bytes).map(b => b.toString(16).padStart(2, ‘0’)).join(”))

if (num===0n) returnALPHABET[0]

let result = ”

while (num>0n) {

result=ALPHABET[Number(num%58n)] +result

num=num/58n

}

  // 处理前导零

for (let i = 0;i<bytes.length&&bytes[i] ===0;i++) {

result=ALPHABET[0] +result

}

returnresult

}

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注