Hi fellas,
Beberapa hari ini gw sedikit melibatkan diri untuk proyek bot buat blog gw dengan menggunakan nodejs. Sedih banget ngeliat blog sendiri yang ngunjungin cuma beberapa orang per hari. Paling banter hanya 50 orang per hari yang organik. Kalau kayak gini, blog gw bakal mati dengan sendirinya. Akhirnya gw kepikiran untuk baca blog gw sendiri (sedih banget ya). Sampai akhirnya gw menemukan sebuah cara yang oke, yakni dengan membuat bot yang membaca blog gw sendiri. Nah untuk membuatnya cukup simple dengan menggunakan nodejs. Tetapi perlu diketahui bahwa yang gw masih simple, prototype dan jauh dari sempurna, namun masih bisa lah kalau cuma untuk nambah-nambah view di google analytics.
Untuk memulai proyek ini yang perlu diperhatikan adalah lw harus menggunakan OS linux untuk membuat bot ini berjalan dengan sempurna karena jika tidak, ya bakal bikin hang laptop lw hehe. Daripada banyak basa-basi yuk lanjut saja dengan cara membuatnya.
- Buat file package.json dengan menggunakan npm init. Hasilnya akan seperti berikut.
12345678910111213141516171819{"name": "vpn-web","version": "1.0.0","description": "vpn automation for personal web","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["vpn","personalweb"],"author": "Immanuel Bayu","license": "ISC","dependencies": {"nightmare": "^2.10.0","opn": "^5.1.0"}}Dependecies yang dipakai adalah opn untuk membuka browser secara otomatis ketika menjalankan nodejs. Sedangkan nightmare nantinya akan digunakan untuk interaksi di dalam browser. Hanya saja sampai saat ini gw belum bisa menggunakannya hehe.. Tar klw udah bisa gw akan buat tutorialnya juga.
- Buat file index.js. File inilah yang akan digunakan untuk menjalankan script open browser nantinya. Scriptnya seperti berikut.
1234567891011121314151617181920212223242526272829303132333435363738394041424344const fs = require('fs');const opn = require('opn');let urlData = '';let max = 2, min = 1;let randomMinute = (Math.floor(Math.random() * (max - min + 1)) + min) * 60 * 1000;fs.readFile('blog.txt', 'utf8', function (err,data) {urlData = data.split(";");});function timeout() {setTimeout(function () {console.log("First interval Func : " + randomMinute);let totalCount = urlData.length - 2;let random = Math.floor((Math.random() * totalCount) + 1);console.log("Index url : " + random);console.log("URL Link : " + urlData[random].trim());randomMinute = (Math.floor(Math.random() * (max - min + 1)) + min) * 60 * 1000;console.log("Second interval Func : " + randomMinute);let browserType = [];if(random % 2 == 1){console.log('Browser : Firefox');browserType = ['firefox'];} else if(random % 3 == 1) {console.log('Browser : Opera');browserType = ['opera'];} else {console.log('Browser : Chrome');browserType = ['google-chrome', '--incognito'];}opn(urlData[random].trim(), {app: browserType});timeout();}, randomMinute);};timeout(); - Untuk melakukan uji coba mari kita buat blog.txt. Sebagai contohnya disini gw menggunakan blog gw sendiri hehe. Lumayan buat promosi.
12345678910111213141516171819202122232425262728293031323334353637383940http://immanuelbayu.my.id/salam-pembuka;http://immanuelbayu.my.id/pelajaran-dari-pilkada-dki;http://immanuelbayu.my.id/pengalaman-perpanjang-stnk-di-samsat-depok;http://immanuelbayu.my.id/film-liburan-part-1-sailor-moon;http://immanuelbayu.my.id/film-liburan-part-2-sailor-moon;http://immanuelbayu.my.id/film-liburan-part-3-sailor-moon;http://immanuelbayu.my.id/film-liburan-part-4-sailor-moon;http://immanuelbayu.my.id/film-liburan-part-5-sailor-moon;http://immanuelbayu.my.id/film-liburan-part-6-sailor-moon;http://immanuelbayu.my.id/sejarah-perkembangan-web;http://immanuelbayu.my.id/quality-of-service;http://immanuelbayu.my.id/kode-etik-dan-profesionalisme-it;http://immanuelbayu.my.id/profesi-profesional-dan-profesionalisme;http://immanuelbayu.my.id/kisah-seram-di-puncak;http://immanuelbayu.my.id/film-kartun-masa-lalu-yang-bikin-kangen-part-tv7;http://immanuelbayu.my.id/film-kartun-masa-lalu-yang-bikin-kangen-part-indosiar;http://immanuelbayu.my.id/tutorial-regular-expression-untuk-pemula;http://immanuelbayu.my.id/game-rpg-ps2-yang-keren;http://immanuelbayu.my.id/standard-koding-software-developer-part-1;http://immanuelbayu.my.id/standard-koding-software-developer-part-2;http://immanuelbayu.my.id/pembangunan-infrastruktur-jakarta-selatan;http://immanuelbayu.my.id/instalasi-eslint-sublime-editor;http://immanuelbayu.my.id/akhir-pilkada-dki;http://immanuelbayu.my.id/tutorial-rpc-rabbitmq-dan-node-js;http://immanuelbayu.my.id/tutorial-migration-dengan-node-js;http://immanuelbayu.my.id/membaca-file-xml-dengan-php;http://immanuelbayu.my.id/pengalaman-perpanjang-stnk-dan-sim-di-samsat-alam-sutera;http://immanuelbayu.my.id/create-a-heart-symbol-using-css;http://immanuelbayu.my.id/clean-code-software-developer-part-1;http://immanuelbayu.my.id/clean-code-software-developer-part-2;http://immanuelbayu.my.id/clean-code-software-developer-part-3;http://immanuelbayu.my.id/install-eslint-sublime-editor;http://immanuelbayu.my.id/tutorial-rpc-using-rabbitmq-nodejs;http://immanuelbayu.my.id/tutorial-migration-nodejs;http://immanuelbayu.my.id/setup-email-g-suite-via-niagahoster;http://immanuelbayu.my.id/portfolio/circuit-backhand-tattoo;http://immanuelbayu.my.id/portfolio/elephant-beast-tattoo;http://immanuelbayu.my.id/portfolio/aztec-eagle-tattoo;http://immanuelbayu.my.id/portfolio/sangiang-trip-coast-view;http://immanuelbayu.my.id/portfolio/sangiang-trip-lake-view;Nah yang perlu diperhatikan adalah tidak boleh ada extra line setelah line terakhir. Begitu juga untuk pemisahnya menggunakan semicolon dan tidak boleh extra spasi dibelakang semicolon. Karena kalau ada nanti bisa menimbulkan error.
- Yang berikutnya adalah membuat script untuk mengkill browser. Sebenarnya ini menurut gw kurang baik karena harus ngekill browser namun apa daya karena gw ga bisa buat otomatis script untuk matiin tab yang dibuka via nodejs maka gw kill browsernya. Disini yang gw contohkan baru versi linux, karena kita butuh membuat bash script terlebih dahulu. Berikut contoh bash scriptnya.
1234#!/bin/bashps -e | grep chrome | sed 's/\(.[0-9]*\).*/\1/' | xargs killps -e | grep firefox | sed 's/\(.[0-9]*\).*/\1/' | xargs killps -e | grep opera | sed 's/\(.[0-9]*\).*/\1/' | xargs kill
1234567891011121314151617181920let exec = require('child_process').exec;let child;function timeout() {setTimeout(function () {child = exec("./kill_browser.sh", function (error, stdout, stderr) {console.log('stdout: ' + stdout);console.log('stderr: ' + stderr);if (error !== null) {console.log('exec error: ' + error);}});timeout();}, 30 * 60 * 1000);};timeout(); - Bagian yang terakhir sendiri sifatnya additional saja. Bisa dipake atau tidak. Tentunya tidak bagus kalau buat bot nembak dari ip yang sama terus. Oleh karena itu dibutuhkan vpn yang mampu mengacak ip kita. Nah disini gw akan menggunakan expressvpn. Untuk mendaftar silahkan klik disini. Nah setelah mendaftar, download tutorial instalasinya disini. Yang pertama perlu dilakukan adalah membuat koneksi ke expressvpn dengan menggunakan bash script. Berikut scriptnya.
123456789101112#!/bin/bashrandomVpn=(id1 smart jpto1 ausy2 usla1 ukel nlam defr1 itmi se1 krsk uz1)randomNumber=$(( $RANDOM % 12 ));expressvpn connect "${randomVpn[randomNumber]}"if [ "Already connected! Please disconnect first" ]; thenexpressvpn disconnectexpressvpn connect "${randomVpn[randomNumber]}"fi
123456789101112131415161718192021let exec = require('child_process').exec;let child;function timeout() {setTimeout(function () {child = exec("./express.sh", function (error, stdout, stderr) {console.log('stdout: ' + stdout);console.log('stderr: ' + stderr);if (error !== null) {console.log('exec error: ' + error);}});timeout();}, 10 * 60 * 1000);};timeout();
Demikian sedikit tutorial singkat dari gw, mungkin simple banget. Tetapi gw akan terus mengupdate code ini agar bisa menjadi code yang lebih oke dan bisa digunakan bagi para cheaters wkwk. Kalau yang mau bantu update bisa fork github gw disini.