如何让别人查不了网站源码分享 怎么让别人看到自己的网站

大家好,今天来为大家解答如何让别人查不了网站源码分享这个问题的一些问题点,包括怎么让别人看到自己的网站也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

本文/教程的主要目的是演示如何通过使用NodeJS构建API代理服务器来隐藏公共API密钥。

在这篇文章/教程中,我们将使用NodeJS创建一个API代理服务器,这背后的主要原因是向您展示如何隐藏公共API密钥,而不是像我过去那样公开它们。我们所有人都创建了一个应用程序,只是为了了解一个新的库或框架,而实现这一点的最佳方法是使用开放API(如TMDB)。

这些开放API中的大多数都需要在发出请求之前在请求URL或标头中添加API密钥。无论哪种方式,API密钥都可能被实际上不拥有此密钥的人窃取和使用。因此,您最终可能会被暂停帐户,或者您的应用程序无法按预期运行。

请记住:API密钥属于应用程序的服务器端。

话不多说,让我们创建这个API代理服务器。为了这篇文章/教程的缘故,我们将使用Wea?therAPI。

要求

在开始编码之前,我们需要具备以下条件:

API密钥打开OpenWeatherMapAPI网站,创建一个免费帐户,转到我的API密钥并创建一个。JavaScript和NodeJS的基础知识java

依赖项和脚本

创建应用程序的项目文件夹

cd~/Documents/tutorials\nmkdirapi-proxy-server&&cdapi-proxy-server\nnpminit-y

安装所需的NPM包

npminstall-Sexpresscorsdotenvaxios\nnpminstall-Dnodemon34;scripts&34;start&34;nodeindex.js&34;dev&34;nodemon–confignodemon.json&34;verbose&34;ignore&34;node_modules/&34;watch&34;./**/*&34;https://api.openweathermap.org/data/2.5/weather&34;1d084c18063128c282ee3b41e91b6740&notactuallyapikey;useavalidone

另一个文件是src/utils/env.js负责读取和导出所有环境变量的文件。

JavaScript

require(&34;).config();\n\nmodule.exports={\nport:Number(process.env.API_PORT)||3000,\nbaseURL:String(process.env.API_BASE_URL)||&34;,\napiKey:String(process.env.API_KEY)||&34;,\n};\n

现在是时候编辑主文件并向这个代理服务器应用程序添加一些逻辑了。

JavaScript

//imports\nconstexpress=require(&34;);\nconstcors=require(&34;);\nconstenv=require(&34;);\n\n//Application\nconstapp=express();\n\n//Middlewares\napp.use(express.json());\napp.use(express.urlencoded({extended:true}));\napp.use(cors());\n\n//Routes\napp.use(&34;,require(&34;));//Everyrequestthatstartswith/apiwillbehandledbythishandler\n\n//Thisroutewillhandlealltherequeststhatarenothandledbyanyotherroutehandler\napp.all(&34;,(request,response,next)=>{\nreturnresponse.status(404).json({message:&34;});\n});\n\n//Bootstrapserver\napp.listen(env.port,()=>{\nconsole.log(`Serverisupandrunningathttp://localhost:${env.port}`);\n});

这里的事情很简单;它是一个基本的ExpressJs服务器应用程序。在顶部,我们有所需的导入。然后我们有一些需要的中间件,例如JSON中间件,它负责解析带有JSON有效负载的传入请求,并且基于body-parser.接下来,我们在此处管理端点及其处理程序的路由。最后,我们得到了服务器的引导。

让我们看一下/api路由的处理程序。

JavaScript

//server/src/routes/index.js\nconstrouter=require(&34;).Router();\nconst{default:axios}=require(&34;);\nconstenv=require(&34;);\n\n//[GET]Currentweatherdata\nrouter.get(&34;,async(request,response,next)=>{\ntry{\nconstquery=request.query||{};\nconstparams={\nappid:env.apiKey,//requiredfield\n…query,\n};\nconst{data}=awaitaxios.get(env.baseURL,{params});\n\nreturnresponse.status(200).json({\nmessage:&34;,\ndetails:{…data},\n});\n}catch(error){\nconst{\nresponse:{data},\n}=error;\nconststatusCode=Number(data.cod)||400;\nreturnresponse\n.status(statusCode)\n.json({message:&34;,details:{…data}});\n}\n});\n\nmodule.exports=router;

请求处理函数将GET我们在调用它时提供的查询字段作为输入。

例如,如果我们没有这个API代理服务器,我们的请求看起来像这样https://api.openweathermap.org/data/2.5/weather?q=Thessaloniki,Greece&appid={APIkey},但是现在我们已经有了它,我们的请求看起来像这样http://localhost/api?q=Thessaloniki,Greece。不需要添加必填字段appid,因为代理服务器自己将其添加为请求参数。当我们在OpenWeatherMapAPI上发出请求时,我们尽量不显示API密钥。

概括

主要概念是将您的公共API密钥隐藏在API代理服务器后面,以防止用户窃取您的密钥。为了实现这一点,它是创建端点来包装实际开放API的端点,在需要此密钥的每个请求中提供代理服务器内的API密钥作为环境变量。这种方法的明显缺点是这是一个耗时的过程,在某些情况下甚至不需要。

您可以在此处获取此API代理服务器的源代码。

下一步是什么

我正在考虑向这个代理服务器添加一些功能。其中之一是添加缓存功能,以便更快地提供最近请求的数据。另一种是添加速率限制器,以防止用户过度使用API并导致服务器崩溃。

如果您想到了另一种隐藏API密钥的解决方案,或者您有任何提示或技巧要告诉我,请发表评论。

关于如何让别人查不了网站源码分享的内容到此结束,希望对大家有所帮助。

Published by

风君子

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