验证完邮箱
- 点击左侧Workers菜单
- 点击右边创建服务按钮
- 服务名称随意填写(以下设为
YourWorkerName
) - 点击右下角的创建服务,创建成功后会自动进入服务配置页面
- 点击快速编辑按钮
- 删除左侧原有的代码
- 将下方代码粘贴进去
- 按照注释修改
- 点击部署按钮并确认
export default {
/**
* @param {Request} request
* @param {any} env
* @param {any} ctx
*/
async fetch(request, env, ctx) {
const self_domain_name = env.SELF_DOMAIN_NAME;//你猜这里要干啥
const self_path = env.SELF_PATH;
let targetUrl = '';
// 构造实际的URL
if (request.url.startsWith('https://')) {
targetUrl = request.url.slice(`https://${self_domain_name}/${self_path}/`.length);
}
else if (request.url.startsWith('http://')) {
targetUrl = request.url.slice(`http://${self_domain_name}/${self_path}/`.length);
}
let host = '';
// 识别实际域名
if (targetUrl.match(/^\w*(:\/\/)/)) {
host = (new URL(targetUrl)).hostname;
}
else {
host = (new URL(`http://${targetUrl}`)).hostname;
}// hostname仅域名,host包含端口
// 修补协议头,考虑是否使用HTTPS
if (!(targetUrl.match(/^\w*(:\/\/)/))) {
if ((await env.XXX_kv.get(host)) == 'HTTP') {//修改所有的XXX_kv为实际的KV数据库名称
targetUrl = `http://${targetUrl}`;
}
else {
targetUrl = `https://${targetUrl}`;
}
}
let internalResponse = await fetch(targetUrl, request);
if (internalResponse.status == 525 && targetUrl.startsWith('https://')) {
await env.XXX_kv.put(host, 'HTTP', { expirationTtl: 60 });
internalResponse = await fetch(`http://${targetUrl.slice('https://'.length)}`, request);
}
return internalResponse;
},
};
添加一个KV命名空间,名字随便。再在Worker页面用前面的KV实例名称绑定实例。
由于Cloudflare的Worker默认域名*.workers.dev
被屏蔽,请配置一个自定义域名(不要长得太像各类屏蔽网站的域名)。
首先自行寻找域名提供商买一个。可以上dynv6.com 拿一个免费的(问题是不能部署到cf),现在也可以上nic.us.kg申请一个(能部署到CF,但是实际用的时候好像有点问题)。极不推荐使用各类所谓的免费“公益”二级域名。
接下来分两种情况。
托管到Cloudflare,然后直接在Worker页面添加自定义域名即可。
- 添加一条CNAME记录,指向你的Worker默认域名(据说结尾需要有个点,即
YourWorkerName.workers.dev.
)。 - 为你的域名申请一个证书并部署到Worker上(此处略)。
添加两个环境变量:SELF_DOMAIN_NAME
为你的自定义域名,SELF_PATH
设置为任何一段URL安全的字符串(它起到类似密码的作用,请自行保密)。
域名 = SELF_DOMAIN_NAME
路径 = SELF_PATH
配置你代码中的域名和路径(端口、密码留空),点击应用即可。
(悠着点用,低调)
检查以上各步骤是否正确(部分步骤故意写的有的模糊,但是都可以参考Cloudflare的技术文档完成。啥?你嫌弃文档是英文的?这点动手能力都没有就不推荐使用增强模式了)。
和人机验证中门对狙,或者过一段时间再访问(基本都能成功)。如果确实上不了谷歌搜东西可以用duckduckgo
不要和人机验证中门对狙(因为Cloudflare显然认识自家服务器,从那里代理的请求会被Cloudflare死心塌地地认定你是机器人)。对于可以不走Worker的网站,就不要走Worker。至于其他的网站没有好办法。(也许在Worker后面再加一个反向代理可行?)
更新:喜报!ds1.8.8自2024.10.23起的新远程配置允许直连某蓝色图片网站,不用再用增强模式才能上然后卡住了!该issue终于迎来了几年来最可喜可贺的进展!
关掉ds的系统代理(不必退出),并另行使用加速器。实测ds开启过增强模式后无法与Watt Toolkit或UU加速器的Steam加速同时使用(即使再次调回默认模式也可能不行),否则Steam相关网页有概率返回403 Forbidden(网页黑屏是因为Steam自身对纯文本的显示问题)。
没有好办法,如果刷新几次之后都不行建议破口大骂或者与网站提供方客服中门对狙。
9.2 npm加速无法开启,报错“Error invoking remote method 'apiInvoke': Error: 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”
ds的问题,找ds提issue。(说实话我没见到几次)
--刷新一下,或者等几秒再访问,这是Cloudflare的KV数据库写入延迟问题。--
修复了!应该不会有这个毛病了。(代价是访问一些仅http站点可能)
手动指明使用http协议,这样代理就不会为了判断能不能用http而纠结半天。(这是个理论上的问题,我其实没碰到过)