如何找外文文献源码分享网站(外文文献哪个网站好找)

大家好,如果您还对如何找外文文献源码分享网站不太了解,没有关系,今天就由本站为大家分享如何找外文文献源码分享网站的知识,包括外文文献哪个网站好找的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

转自:https://kermsite.com/p/cf-github/

由于格式问题,部分链接、表格可能会失效,若失效请访问原文

——可以用于间接访问一些打不开的网站,例如

Dec13,2021

阅读时长:4分钟

使用说明

本项目仍然是使用Cloudflare这位慷慨无私的云服务提供商的免费服务workers。

按照本教程进行配置,你可以自己搭建一个Github的镜像站点,以解决某些情况下无法访问的问题。

注意:请遵守当地法律法规,尊重知识产权,维护清朗的网络环境,人人有责

关于cloudflare(如已注册可以跳过)

简介

官网:https://www.cloudflare.com/

注意:Cloudflare是有官方中文的,在界面的右上角可以选择语言。

Cloudflare是一家国外的良心CDN加速服务提供商,最近他家的服务也是在不断扩展,并且难能可贵的是他家服务全部免费,并且免费限额非常之高。比如CDN就是纯免费并且没有流量限制的。而且用它的DNS也不容出现备案问题。

我之前在freenom注册了几个免费域名,一开始是托管在dnspod,现在全部转移到cloudflare上面了。这里就简单讲讲怎么用上他的免费域名服务。~~至于worker这类更加复杂(灵活)的服务就靠大家自己探索了。~~顺便把worker和page也说一下。

从官网注册之后,会跳转到转到https://dash.cloudflare.com/,接下来的步骤都是在控制台进行的。

开启worker

可以将worker理解为cloudflare的一款serverless平台,这个平台的一大优点就是自带CDN。按照官方的说法:

构建无服务器应用程序并在全球范围内即时部署,从而获得卓越的性能、可靠性和规模性。

在控制面板主页左侧可以找到workers。

如图选择

如图所示,中间可以创建服务,右侧显示每天的额度,如果只是搭建个人服务这些额度绰绰有余了。下方会显示所有已经搭建的服务。

额度很高

创建服务的界面,其实我们只要稍微配置一下这个服务名称,因为会涉及到之后访问的链接的问题:

注意服务名称

这样我们的服务就搭建好了。但是如何进行代码编辑呢?等待部署完成,转到控制界面,可以找到右下角有一个快速编辑的按钮。

个人觉得这个设计十分反人类

在这里你就可以提交对于代码的修改了。关于Worker的代码配置,我看了一下文档,感觉有点复杂,还是基于javascript。推荐使用现成的代码实例。左边修改代码,下方部署,右侧可以选择预览窗口,以及打开链接。

一般我们就打开这个窗口,把代码复制进去,保存部署,然后直接访问链接就好了。

编辑界面

代码

原来是设置为Google的,我这里改成Github了。全部复制贴到worker里面即可。

//你要镜像的网站.\nconstupstream=&39;\n\n//镜像网站的目录,比如你想镜像某个网站的二级目录则填写二级目录的目录名,镜像google用不到,默认即可.\nconstupstream_path=&39;\n\n//镜像站是否有手机访问专用网址,没有则填一样的.\nconstupstream_mobile=&39;\n\n//屏蔽国家和地区.\nconstblocked_region=[&39;,&39;,&39;,&39;]\n\n//屏蔽IP地址.\nconstblocked_ip_address=[&39;,&39;]\n\n//镜像站是否开启HTTPS.\nconsthttps=true\n\n//文本替换.\nconstreplace_dict={\n&39;:&39;,\n&39;:&39;\n}\n\n//以下保持默认,不要动\naddEventListener(&39;,event=>{\nevent.respondWith(fetchAndApply(event.request));\n})\n\nasyncfunctionfetchAndApply(request){\n\nconstregion=request.headers.get(&39;).toUpperCase();\nconstip_address=request.headers.get(&39;);\nconstuser_agent=request.headers.get(&39;);\n\nletresponse=null;\nleturl=newURL(request.url);\nleturl_hostname=url.hostname;\n\nif(https==true){\nurl.protocol=&39;;\n}else{\nurl.protocol=&39;;\n}\n\nif(awaitdevice_status(user_agent)){\nvarupstream_domain=upstream;\n}else{\nvarupstream_domain=upstream_mobile;\n}\n\nurl.host=upstream_domain;\nif(url.pathname==&39;){\nurl.pathname=upstream_path;\n}else{\nurl.pathname=upstream_path+url.pathname;\n}\n\nif(blocked_region.includes(region)){\nresponse=newResponse(&39;,{\nstatus:403\n});\n}elseif(blocked_ip_address.includes(ip_address)){\nresponse=newResponse(&39;,{\nstatus:403\n});\n}else{\nletmethod=request.method;\nletrequest_headers=request.headers;\nletnew_request_headers=newHeaders(request_headers);\n\nnew_request_headers.set(&39;,url.hostname);\nnew_request_headers.set(&39;,url.hostname);\n\nletoriginal_response=awaitfetch(url.href,{\nmethod:method,\nheaders:new_request_headers\n})\n\nletoriginal_response_clone=original_response.clone();\nletoriginal_text=null;\nletresponse_headers=original_response.headers;\nletnew_response_headers=newHeaders(response_headers);\nletstatus=original_response.status;\n\nnew_response_headers.set(&39;,&39;);\nnew_response_headers.set(&39;,true);\nnew_response_headers.delete(&39;);\nnew_response_headers.delete(&39;);\nnew_response_headers.delete(&39;);\n\nconstcontent_type=new_response_headers.get(&39;);\nif(content_type.includes(&39;)&&content_type.includes(&39;)){\noriginal_text=awaitreplace_response_text(original_response_clone,upstream_domain,url_hostname);\n}else{\noriginal_text=original_response_clone.body\n}\n\nresponse=newResponse(original_text,{\nstatus,\nheaders:new_response_headers\n})\n}\nreturnresponse;\n}\n\nasyncfunctionreplace_response_text(response,upstream_domain,host_name){\nlettext=awaitresponse.text()\n\nvari,j;\nfor(iinreplace_dict){\nj=replace_dict[i]\nif(i==&39;){\ni=upstream_domain\n}elseif(i==&39;){\ni=host_name\n}\n\nif(j==&39;){\nj=upstream_domain\n}elseif(j==&39;){\nj=host_name\n}\n\nletre=newRegExp(i,&39;)\ntext=text.replace(re,j);\n}\nreturntext;\n}\n\n\nasyncfunctiondevice_status(user_agent_info){\nvaragents=[&34;,&34;,&34;,&34;,&34;,&34;];\nvarflag=true;\nfor(varv=0;v<agents.length;v++){\nif(user_agent_info.indexOf(agents[v])>0){\nflag=false;\nbreak;\n}\n}\nreturnflag;\n}\n

效果

现在已经无法打开Google了,显示错误(被撸爆也是很正常的吧)。

应该是Cloudflare的IP被屏蔽了

但是Github还是可以使用的:

可以访问

DEMO:GitHub:Wheretheworldbuildssoftware·GitHub(kermshare.workers.dev)

可以下载,下载链接也被替换为了workers的地址,速度还不错。

https://kermgithub.kermshare.workers.dev/Fndroid/clash_for_windows_pkg/releases/download/0.19.1/Clash.for.Windows.Setup.0.19.1.exe\n

速度还行

附录

参考文献

使用CloudflareWorkers?制作镜像站,可访问谷歌-何先生(hexsen.com)Introduction|BoosterLabsxiaoyang-sde/rocket-booster:LightweightandscalablereverseproxyandloadbalancinglibrarybuiltforCloudflareWorkers(github.com)

说明:本项目最初的源码应该是来自2,3两处

但是现在已经更新到新版了。

版权信息

本文原载于kermsite.com,复制请保留原文出处。

好了,关于如何找外文文献源码分享网站和外文文献哪个网站好找的问题到这里结束啦,希望可以解决您的问题哈!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平