使用Cloudflare Worker代理OpenAI接口
登录cloudflare官网
新建1个website
新建1个A记录, 随便指向1个ip即可
进入Worker选项,新建worker如下
worker中的内容如下
addEventListener('fetch', event => { event.respondWith(fetchAndApply(event.request)); }) async function fetchAndApply(request) { let response = null; let method = request.method; let url = new URL(request.url); let url_hostname = url.hostname; url.protocol = 'https:'; url.host = 'api.openai.com'; let request_headers = request.headers; let new_request_headers = new Headers(request_headers); new_request_headers.set('Host', url.host); new_request_headers.set('Referer', url.protocol + '//' + url_hostname); let original_response = await fetch(url.href, { method: method, headers: new_request_headers, body: request.body }) let original_response_clone = original_response.clone(); let original_text = null; let response_headers = original_response.headers; let new_response_headers = new Headers(response_headers); let status = original_response.status; new_response_headers.set('Cache-Control', 'no-store'); 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'); original_text = original_response_clone.body response = new Response(original_text, { status, headers: new_response_headers }) return response }
进入刚才设置的website,如下
添加路由
选项如下
路由写刚才创建的A记录的域名
服务选择刚才创建的worker
环境选择product即可
这样就完成了使用cloudflare的代理,即将你设置的A记录代理到域名api.openai.com上面,这样子,即使不需要使用魔法,也可以访问openai的接口的
备注
理论上,这种worker方法代理,可以代理很多的api,比如常见的电报的api,国内也访问不了,也可以使用这种方法