مهندس نرم افزار خیلی دون پایه | @bardiarastin در توییتر | سلام ?!
وصل شدن به اسپاتیفای با Node JS
توی این پست میخوام توضیح بدم که چطوری با یه سرور و ۱۴ خط کد نود جی اس یه پراکسی سرور بیاریم بالا و توی اسپاتیفای ازش استفاده کنیم، با ما باشید ???
تهیه سرور
خوب اولین چیزی که لازم دارید یه سرور با سیستم عامل ترجیحا لینوکسه که از سایت های مختلفی که وی پی اس میفروشن میتونید بخرید، بعد از خرید بهتون یوزرنیم و پسورد میدن و میتونید به سرورتون ssh بزنید:
ssh username@server_ip
بعد از اینکه پسوردتون رو وارد کردین و به سرور وصل شدین لازمه که نود جی اس رو روی سرورتون نصب کنید، برای نصب نود جی اس راه حل همیشگی من استفاده از nvm هستش که اجازه میده ورژن های مختلف نود رو به راحتی نصب کنم و بینشون سوییچ کنم، نصب خودش هم خیلی ساده و راحته
نصب nvm و node js
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
آدرس گیتهابش اگه به مشکل برخوردین https://github.com/creationix/nvm
بعد از اینکه nvm رو نصب کردین میتونید با کامند زیر آخرین ورژن نود رو نصب کنید:
nvm install node
nvm use node
وقتی نود جی اس نصب بشه با اجرا کردن کامند های زیر باید خروجی مشابهی بگیرین:
node -v
v10.2.1
npm -v
5.6.0
اگه تا اینجا بدون دردسر و ارور رسیدین تبریک ??????
شروع کار اصلی
با ساختن یه دایرکتوری (پوشه ?) شروع میکنیم توی ترمینال سرورتون کامند زیر رو بزنید:
mkdir proxy && cd proxy
بعد باید با npm یه فایل package.json درست کنیم که بتونیم از کدهای آماده دیگران (پکیج ها) استفاده کنیم:
npm init
رو که بزنید شروع میکنه یه سری سوال پرسیدن که میتونید اینتر رو نگه دارید که همشون مقدار پیش فرض در نظر گرفته بشن (روش تنبل ها ?) یا با حوصله به سوالاش جواب بدین:
package name: (test) proxy
version: (1.0.0) 0.0.0
description: proxy server
entry point: (index.js) main.js
test command:
git repository:
keywords:
author: Bardia Rastin
license: (ISC) MIT
حالا یه فایل main.js میسازیم که اصل کاری یعنی کدمون رو توش بنویسیم:
touch main.js
فایل رو با هر ادیتوری که راحت هستین باز کنید که بتونیم توش کد بزنیم من اینجا vim رو میگم:
vim main.js
حالا اصل کار کدمون:
const ProxyChain = require('proxy-chain');
const server = new ProxyChain.Server({
port: 8000,
verbose: false,
prepareRequestFunction: ({ request, username, password, hostname, port, isHttp }) => {
return {
requestAuthentication: username !== 'myusername' || password !== 'mypassword'
};
},
});
server.listen(() => {
console.log(`Proxy server is listening on port ${8000}`);
});
خوب کد بالا چیکار میکنه؟! ?
خط اول ما یه پکیج به نام proxy-chain رو ایمپورت میکنیم و در خط دوم یه instance جدید ازش میسازیم و به این صورت کانفیگش میکنیم که روی پورت دلخواه (اینجا ۸۰۰۰) و با یوزرنیم و پسوردی که میخوایم (خط ۷ام) اجرا بشه و در خط ۱۲ استارتش میکنیم ?
فایل رو سیو میکنیم و میبندیم ESC و سپس :wq یا :x (اگه تا حالا ویم استفاده نکردین اینجا نقطه خوبی برای اولین بار استفاده کردنش نیست چون واردش بشید خارج شدن ازش خیلی داستان داره برای بار اول)
پکیج proxy-chain رو که توی کدمون استفاده کردیم نصب میکنیم:
npm install proxy-chain
بعدش میتونیم اسکریپتمون رو (main.js) با نود جی اس اجرا کنیم:
node main.js
مشکلی که وجود داره اینه که اگه شما ssh رو قطع کنید اسکریپت شما ام متوقف میشه و خوب نمیشه همیشه اس اس اچ زد که یه اسکریپتی در حال اجرا شدن باشه پس ctrl + c رو بزنید که نود جی اس متوقف بشه، اما راه حل؟
npm install -g pm2
پکیج pm2 اینجا به کمکمون میاد که اجازه میده اسکریپت های مختلف رو توی بک گراند اجرا کنیم و با خیال راحت همیشه اجرا بمونن و کلی کارای دیگه، به صورت گلوبال نصبش میکنیم که همه جا بتونیم ازش استفاده کنیم، برای اینکه اسکریپت ما همیشه روی سرور اجرا بمونه کامند زیر رو اجرا میکنیم:
pm2 start main.js --name "proxy-server"
بعد از اجرا کردن این کامند میتونیم با کامند زیر اسکریپت هایی که توی بک گراند در حال اجرا هستن رو ببینیم:
pm2 list
خروجیش یه چیزی شبیه عکس زیر میشه:
حالا با خیال راحت میتونیم کانکشن اس اس اچمون رو ببندیم
exit
از این پراکسی سرور چجوری توی اسپاتیفای استفاده کنیم؟ (Mac OS, Linux, Windows)
اپ اسپاتیفای رو باز کنید و از منوی بالا سمت راست به تنظیمات برید
به پایین اسکرول میکنیم و show advanced settings رو میزنیم و دوباره به پایین اسکرول میکنیم تا به بخش proxy برسیم
پراکسی تایپ رو روی http میزاریم و ip سرورمون و پورتی که وارد کردیم به علاوه یوزرنیم و پسورد رو وارد میکنیم سپس update proxy رو میزنیم اسپاتیفای ری استارت میشه و تامام!!! از گوش دادن به موسیقی مورد علاقمون لذت میبریم :)
امیدوارم اولین پست من توی ویرگول براتون مفید بوده باشه سوالی اروری چیزی اگه دارین توی کامنت ها یا توییتر (bardiainjast) مطرح کنید حتما جواب میدم ?
مطلبی دیگر از این انتشارات
Sass
مطلبی دیگر از این انتشارات
واقعا Node.js چیه؟!
مطلبی دیگر از این انتشارات
جاوا اسکریپت چه جوری کار میکنه؟ دل و روده ی V8 engine و ۵ تا نکته در مورد کد بهینه نوشتن