وصل شدن به اسپاتیفای با Node JS

توی این پست میخوام توضیح بدم که چطوری با یه سرور و ۱۴ خط کد نود جی اس یه پراکسی سرور بیاریم بالا و توی اسپاتیفای ازش استفاده کنیم، با ما باشید ???

Photo by Hanny Naibaho on Unsplash
Photo by Hanny Naibaho on Unsplash

تهیه سرور

خوب اولین چیزی که لازم دارید یه سرور با سیستم عامل ترجیحا لینوکسه که از سایت های مختلفی که وی پی اس میفروشن میتونید بخرید، بعد از خرید بهتون یوزرنیم و پسورد میدن و میتونید به سرورتون 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

خروجیش یه چیزی شبیه عکس زیر میشه:

pm2 list
pm2 list

حالا با خیال راحت میتونیم کانکشن اس اس اچمون رو ببندیم

exit

از این پراکسی سرور چجوری توی اسپاتیفای استفاده کنیم؟ (Mac OS, Linux, Windows)

اپ اسپاتیفای رو باز کنید و از منوی بالا سمت راست به تنظیمات برید

به پایین اسکرول میکنیم و show advanced settings رو میزنیم و دوباره به پایین اسکرول میکنیم تا به بخش proxy برسیم

پراکسی تایپ رو روی http میزاریم و ip سرورمون و پورتی که وارد کردیم به علاوه یوزرنیم و پسورد رو وارد میکنیم سپس update proxy رو میزنیم اسپاتیفای ری استارت میشه و تامام!!! از گوش دادن به موسیقی مورد علاقمون لذت میبریم :)

امیدوارم اولین پست من توی ویرگول براتون مفید بوده باشه سوالی اروری چیزی اگه دارین توی کامنت ها یا توییتر (bardiainjast) مطرح کنید حتما جواب میدم ?