Skip to content

Instantly share code, notes, and snippets.

@longsays
Last active May 4, 2026 12:25
Show Gist options
  • Select an option

  • Save longsays/0527603c1d6b883b73e7249e053b83da to your computer and use it in GitHub Desktop.

Select an option

Save longsays/0527603c1d6b883b73e7249e053b83da to your computer and use it in GitHub Desktop.
修改Backblaze桶地址和访问令牌
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
addEventListener("scheduled", (event) => {
event.waitUntil(updateRule());
});
const getB2Token = async () => {
const res = await fetch(
"https://api.backblazeb2.com/b2api/v4/b2_authorize_account",
{
headers: {
Authorization: "Basic " + btoa(`${B2KeyID}:${B2AppKey}`),
},
}
);
const data = await res.json();
return data.authorizationToken;
};
const updateRule = async () => {
const b2Token = await getB2Token();
const ruleData = {
description: "修改Backblaze桶地址和访问令牌",
action: "rewrite",
expression: `(http.host eq "${CfHostname}" and not starts_with(http.request.uri.path, "/file/${B2BucketName}"))`,
action_parameters: {
uri: {
path: {
expression: `concat("/file/${B2BucketName}", http.request.uri.path)`
},
query: {
value: `Authorization=${b2Token}`
}
}
}
};
const res = await fetch(
`https://api.cloudflare.com/client/v4/zones/${CfZoneID}/rulesets/${CfRulesetID}/rules/${CfRuleID}`,
{
method: "PATCH",
headers: {
"Authorization": `Bearer ${CfAuthKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify(ruleData),
}
);
const data = await res.text();
console.log(data);
return data;
};
async function handleRequest(request) {
try {
const data = await updateRule();
return new Response(data, {
headers: { "Content-Type": "application/json" }
});
} catch (err) {
return new Response(`Error: ${err.message}`, { status: 500 });
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment