یک سرور پروکسی Node.JS HTTP را در کمتر از 10 دقیقه ساخت

چطور می توانیم ساخت کنیم؟

امروز ما در مورد چگونگی ساخت یک سرور پروکسی پیچیده صحبت خواهیم کرد که می تواند درخواست های HTTP و https از Nodejs را ارائه کند. این امکان را برای دسترسی به برخی از URL ها فراهم می کند. من پیچیدگی را به تدریج افزایش می دهم، بنابراین می توانم خوانندگان را از سطوح مختلف تخصص بپذیرم. حتی اگر شما یک مبتدی در Nodejs هستید، این آموزش را بسیار آسان درک خواهید کرد. اگر شما متوسط ​​هستید، آن را خسته کننده نخواهید یافت. این به ویژه برای استقرار پروکسی Nodejs در VPS اوبونتو نوشته شده است که می تواند برای پیکربندی یک مرورگر فایرفاکس استفاده شود. اما این روند برای سایر سناریوها بسیار مشابه است.

شروع به نصب Nodejs کنید. چندین روش برای نصب Nodejs وجود دارد. از روش راحت تر اینجا استفاده خواهم کرد.

نصب Node.js

ابزار مناسب خود را با فرمان زیر به روز کنید

sudo apt update

ما نیاز داریم که بسته های گره را دریافت کنیم. بنابراین، ابتدا آن را نصب کنید.

sudo apt install curl

اجازه دهید بسته های گره را با حلقه دانلود کنیم.

curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -

زمان نصب node.js در حال حاضر

sudo apt install nodejs

در نهایت، بررسی کنید که آیا node.js با موفقیت نصب شده است یا خیر.

node -v

اگر شما نسخه به درستی دریافت می شود، بدین معنی است که شما می توانید بروید.

ایجاد یک پروکسی عمومی

ایجاد یک سرور پروکسی در Nodejs آسان است. ویرایشگر متن مورد علاقه خود را باز کنید و کد زیر را کپی کنید و آن را به عنوان proxy.js ذخیره کنید. توجه داشته باشید که ما فقط یک متن ساده را در اینجا می فرستیم. از آنجا که قصد ما این است که بررسی کنیم آیا درخواست های ما به درستی پروکسی هستند یا خیر.

 var http = require ('http')؛ 

 var proxy = require ('http-proxy')؛ 

 proxyServer = proxy.createProxyServer {target: 'http: //127.0.0.1: 9000 }}؛ 

 proxyServer.listen (8000)؛ 

 سرور = http.createServer (تابع (req، res) {

   res.writeHead (200، {'Content-Type ':' text / plain '})؛ 

   res.write (' درخواست پروکسی موفق شد! '+'  n '+ JSON.stringify (req.headers، true، 2))؛ 

   res.end ()؛ 

})؛ 

 server.listen (9000)؛ 

از دستور زیر برای اجرای فایل استفاده میکند.

node proxy.js

این همه کار برای ایجاد یک سرور پروکسی کار است. برای استفاده از پروکسی سرور با مرورگر خود، باید آن را پیکربندی کنید. مرورگر فایرفاکس خود را باز کنید و به گزینه هایی از منو در سمت راست بروید و می توانید تنظیمات شبکه را در زیر برگه عمومی در پایین صفحه پیدا کنید.

بعد، به تنظیمات شبکه بروید.

احتمالا شما درک خوبی از این تنظیمات دارید. ما می توانیم پروکسی تازه ایجاد شده ما را با پیکربندی دستی پیکربندی کنیم. توجه داشته باشید که پروکسی ما فقط می تواند درخواست HTTP را ارائه کند.

مقادیری را وارد کنید که در تصویر زیر نشان داده شده است.

زمان آزمایش سرور پروکسی ماست. هر HTTP URL را در مرورگر تایپ کنید. من به http://www.espncricinfo.com بروید.

خنک، پاسخی را که می خواهیم دریافت می کنیم. در حال حاضر، گرفتن این پاسخ، مفید نیست مگر اینکه برای اهداف تست اولیه. زمان خود را برای ارائه مشتری که او می خواهد، محتوای وب سایت او درخواست. برای این کار کد ما را مانند زیر تغییر می دهیم.

 var http = require ('http')؛ 

 var proxy = require ('http-proxy')؛ 

 var url = require ('url')؛ 

 proxyServer = proxy.createProxyServer {target: 'http: //127.0.0.1: 9000'})؛ 

 proxyServer.listen (8000)؛ 

 server = http.createServer (function (req، res) {

 console.log (eq) {

 console.log ("خطا")؛ [proxyserver.config] [؛ req.url]؛ 

 proxyServer.web (req، res، {target: req.url})؛ 

 proxyServer.on در پروکسی تماس ")؛ 

})؛ 

})؛ 

 server.listen (9000)؛ 

خوب، دوباره اسکریپت خود را اجرا کنید. مرورگر خود را باز کنید و تایپ کنید http://espncricifno.com

عالی است. این بار ما آنچه را می خواهیم دریافت می کنیم. ما می توانیم محتوای وب سایت را ببینیم.

URL های بلوک

اگر شما در حال ایجاد یک سرور پروکسی برای کارکنان خود برای استفاده، قطعا نمی خواهید آنها را در زمان خود در فیس بوک هدر ندهید. دلایل متعددی وجود دارد که چرا می خواهید کاربران را از دسترسی به URL های خاص جلوگیری کنید. گاهی اوقات شما نمی خواهید مجوز ها را برای دیدن سایت های نامناسب از سرور پروکسی خود بدهید. شما احتمالا دوست ندارید به افراد اجازه دهید وب سایت ها با مشکلات امنیتی، وب سایت های غیر قانونی با پروکسی سرور خود را بازدید کنند. با Nodejs، می توانید این کار را تنها با چند خط دیگر انجام دهید.

ما یک فایل با نام blocked.txt ایجاد خواهیم کرد و URL هایی را که می خواهید مسدود کنید اضافه کنید. بعد، ما پروکسی سرور را با منطق سفارشی ایجاد می کنیم تا از دسترسی آنها جلوگیری شود.

کد زیر را به سرور پروکسی اضافه کنید:

 var blocked = []؛ 

 fs.watchFile ('./ blocked.txt'، function (c، p) {update_blocked_list ()؛}) ؛ 

 function update_blocked_list () {

   sys.log («بهروزرسانی فایلهای مسدود شده»)؛ 

   blocked = fs.readFileSync ('./ مسدود شده. (تابع (rx))   . نقشه (تابع (rx)) (19659019)  {بازگشت RegExp (rx)})؛ 

} 

 http.createServer (تابع (درخواست، پاسخ) {

   برای (من در مسدود) {

  اگر (مسدود شده [i] .test (request.url)) {

   sys.log ("رد شد:" + request.method + "" + request.url)؛ 

   response.end ()؛ 

   بازگشت؛ 

  } 

  } 

}

افزودن http://facebook.com به فایل شما. فایل را اجرا کنید و به http://facebook.com از مرورگر خود بروید.

عالی است، ما پیام دسترسی را رد میکنیم. در حال حاضر، هیچ کس قادر به دسترسی به فیس بوک

از سرور پروکسی شما نخواهد بود.

HTTPS را فعال کنید در سرور پروکسی ما

آیا شما با آنچه شما تا به حال انجام داده اید خوشحال هستید؟ اما چیزی وجود دارد. یک مشکل بزرگ با سرور ما وجود دارد. حتی اگر مشتریان شما قادر به رفتن به http://facebook.com مشتریان شما نمی توانند به https://www.facebook.com بروید. اما، این بدترین حالت نیست. سعی کنید به google.com دسترسی پیدا کنید می بینید که نمیتوانید به http://www.google.com دسترسی پیدا کنید. از آنجا که گوگل وب سایت HTTP ندارد تقریبا بی فایده است که یک پروکسی HTTP تنها در اینترنت فعلی داشته باشد. بنابراین، چرا آنجا ایستاده اید؟ بگذارید سرور ما را به درخواست های https https نیز پیاده کنیم.

 var fs = require ('fs')؛ 

 var http = require ('http')، 

 var https = require ('https')، 

 var httpProxy = require ('http- (19659019) var options = {

   ssl: {

   کلید: fs.readFileSync ('معتبر کلید.   



 proxyServer = proxy.createProxyServer ({target: 'http: //127.0.0.1: 9000'})؛ 

 proxyServer.listen (8000)؛ 

 if (isHttps) {

   server = https.createServer (options.ssl، function (req، res) {

   console.log (درخواست https) 

   proxyServer.web (req، res، {target : req.url})؛ 

   proxyServer.on ('خطای'، عملکرد (e) {

 console.log ("خطا در تماس پروکسی")؛ 

  })؛ [1965901  proxyServer.listen (443)؛ 

   (19659019) proxyServer.web (req، res، {target: req.url})؛ 

 proxyServer.on ('error'، function ( e) {

 console.log («خطا در تماس پروکسی»)؛ 

})؛ 

  

} 

 server.listen (9000)؛

اکنون مرورگر وب خود را پیکربندی کنید تا درخواست https را قبول کنید. با کلیک بر روی جعبه "استفاده از این پروکسی سرور برای تمام درخواست ها" در صفحه پیکربندی شبکه.

 

این است که. سعی کنید دوباره به google.com دسترسی پیدا کنید این بار شما موفق خواهید بود. شما همچنین می توانید ویژگی های دیگر را امتحان کنید. Node.js یک چارچوب عالی برای کارهای شما را فراهم می کند. بنابراین، وقت آن است که از سرور پروکسی تازه ساخته شده خود لذت ببرید.