技术教程 技术教程 使用Cloudflare Workers反代Google搜索 叶玖洛·星尘 2024-06-19 关于反代的一些问题 因为反代的原因,你无法登录你的账号,只能以访客身份使用,同时诸如X、YouTube这些肯定是进不去的。毕竟只是代理Google。
同时因为Cloudflare服务器的原因,可能部分地区访问反代速度缓慢或者无法访问。只能算是一种参考方案。
最后谷歌搜索众所周知查找部分文献效率更高,希望大家搭建之后合法使用!
本贴只作为学习交流使用,我始终认为技术是否无害取决于它的使用者。一切法律后果构建者自负,与本人无关!
开始创建 你需要一个Cloudflare的账号,并且将需要作为代理谷歌的域名转到Cloudflare。不然无法自定义域名,只能使用赠送的 *.workers.dev 域名,但是国内大部分地区是被墙了的。
准备好了之后,找到Pages和Workers页面,创建一个Workers,代码如下:
const upstream = 'ipv6.google.com.hk' const upstream_v4 = 'www.google.com.hk' const blocked_region = ['TK' ]const replace_dict = { $upstream : '$custom_domain' , 'www.google.com/' : '你的域名/' , 'gstatic.com' : 'gstatic.cn' , 'ajax.googleapis.com' : 'ajax.lug.ustc.edu.cn' , 'fonts.googleapis.com' : 'fonts.googleapis.cn' , 'themes.googleusercontent.com' : 'google-themes.lug.ustc.edu.cn' , 'www.gravatar.com/avatar' : 'dn-qiniu-avatar.qbox.me/avatar' , 'www.google.co.jp' : '$custom_domain' , 'www.google.com.sg' : '$custom_domain' , 'books.google.com.hk' : '$custom_domain' , 'books.google.co.jp' : '$custom_domain' , 'books.google.com.sg' : '$custom_domain' , 'maps.google.com.hk' : '$custom_domain' , 'maps.google.co.jp' : '$custom_domain' , 'maps.google.com.sg' : '$custom_domain' , 'maps.google.com' : '$custom_domain' , 'books.google.com' : '$custom_domain' , } addEventListener ('fetch' , (event ) => { event.respondWith (fetchAndApply (event.request )) }) async function fetchAndApply (request ) { const region = request.headers .get ('cf-ipcountry' ).toUpperCase () let response = null let url = new URL (request.url ) let url_host = url.host if (url.protocol == 'http:' ) { url.protocol = 'https:' response = Response .redirect (url.href ) return response } var key = url.href var ikey1 = 'tbm=isch' var ikey2 = '/img' if ((key.search (ikey1) == -1 ) && (key.search (ikey2) == -1 )) { var upstream_domain = upstream } else { var upstream_domain = upstream_v4 } url.host = upstream_domain if (blocked_region.includes (region)) { response = new Response ( 'Access denied: WorkersProxy is not available in your region yet.' , { status : 403 , } ) } else { let method = request.method let request_headers = request.headers let new_request_headers = new Headers (request_headers) new_request_headers.set ('Host' , upstream_domain) new_request_headers.set ('Referer' , url.href ) let original_response = await fetch (url.href , { method : method, headers : new_request_headers, }) 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' , 'public, max-age=14400' ) 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' ) const content_type = new_response_headers.get ('content-type' ) if (content_type.includes ('text/html' ) && content_type.includes ('UTF-8' )) { original_text = await replace_response_text ( original_response_clone, upstream_domain, url_host ) } else { original_text = original_response_clone.body } response = new Response (original_text, { status, headers : new_response_headers, }) } return response } async function replace_response_text (response, upstream_domain, host_name ) { let text = await response.text () var i, j for (i in replace_dict) { j = replace_dict[i] if (i == '$upstream' ) { i = upstream_domain } else if (i == '$custom_domain' ) { i = host_name } if (j == '$upstream' ) { j = upstream_domain } else if (j == '$custom_domain' ) { j = host_name } let re = new RegExp (i, 'g' ) text = text.replace (re, j) } return text }
请记得将代码前面几行的 ‘www.google.com/ ‘: ‘你的域名/‘ 这里中文部分换成你的实际子域名!“/”保留不删除。
写入代码后找到右上角保存并部署,来到你创建的Workers。找到Workers设置,触发器选择自定义域名,这里填写的域名请与你上面代码填写的自定义解析到Cloudflare的域名保持一致。
比如我上面解析到的子域名是 google.test.com ,触发器这里也填写 google.test.com 。这样才能正确绑定域名,请记住在这些操作前你已经将域名解析商设置为Cloudflare!(因为自定义Workers域名只能使用解析在Cloudflare的域名)。
这里附上我的反代镜像 ky.xingchencloud.cloudns.org/
因为Cloudflare每日免费请求只有10w的样子,同时每分钟访问上限也是有配额的,所以可能有时候进不去。或者也有可能在你所处的地区网络运营商彻底隔绝了Cloudflare。