const fetch = require('node-fetch');
const fs = require('fs');
const { faker } = require('@faker-js/faker');
var { HttpsProxyAgent } = require('https-proxy-agent');
const delay = require('delay');
const randstr = length => {
var text = "";
var possible =
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < length; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
};
const randnmr = length => {
var text = "";
var possible =
"0123456789109876543210";
for (var i = 0; i < length; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
};
const get_daftar = (email, password) => new Promise((resolve, reject) => {
fetch(`https://www.vidio.com/api/register`, {
method: "POST",
headers: {
'Host': 'api.vidio.com',
'referer': 'android-app://com.vidio.android',
'x-api-platform': 'app-android',
'x-api-auth': 'laZOmogezono5ogekaso5oz4Mezimew1',
'user-agent': 'vidioandroid/6.7.5-68a0b87f64 (3189545)',
'x-api-app-info': 'android/9/6.7.5-68a0b87f64-3189545',
'accept-language': 'id',
'content-type': 'application/x-www-form-urlencoded',
'content-length': '53',
'accept-encoding': 'gzip',
'x-visitor-id': `${randstr(16)}`
},
body: `email=${email}&password=${password}`
})
.then(res => res.json())
.then(res => resolve(res))
.catch(err => reject(err))
});
const get_start = (proxyAgent, tclId) => new Promise((resolve, reject) => {
fetch(`https://api.vidio.com/api/partner/auth`, {
method: "POST",
agent: proxyAgent,
headers: {
'Host': 'api.vidio.com',
'Referer': 'androidtv-app://com.vidio.android.tv',
'X-Api-Platform': 'tv-android',
'X-Api-Auth': 'laZOmogezono5ogekaso5oz4Mezimew1',
'User-Agent': 'tv-android/1.92.1 (437)',
'X-Api-App-Info': 'tv-android/9/1.92.1-437',
'Accept-Language': 'id',
'X-Visitor-Id': '25433dc9-24cb-483c-bcd5-9d5d3e3afe41',
'Content-Type': 'application/json; charset=UTF-8',
'Content-Length': '58',
'Accept-Encoding': 'gzip, deflate'
},
body: JSON.stringify({
'serial_number': tclId,
'partner_agent': 'QA85QN900BKXXD'
})
})
.then(res => res.json())
.then(res => resolve(res))
.catch(err => reject(err))
});
const get_claimsubs = (proxyAgent, emailPartner, tokenPartner, email, password) =>
new Promise((resolve, reject) => {
fetch(`https://www.vidio.com/api/login`, {
method: "POST",
agent: proxyAgent,
headers: {
'referer': 'androidtv-app://com.vidio.android.tv',
'x-api-platform': 'tv-android',
'x-api-auth': 'laZOmogezono5ogekaso5oz4Mezimew1',
'user-agent': 'tv-android/1.84.0 (405)',
'x-api-app-info': 'tv-android/7.1.2/1.84.0-405',
'accept-language': 'en',
'x-visitor-id': `${randstr(16)}`,
'x-user-email': `${emailPartner}`,
'x-user-token': `${tokenPartner}`,
'content-type': 'application/x-www-form-urlencoded',
'accept-encoding': 'gzip',
},
body: `login=${email}&password=${password}`
})
.then(res => res.json())
.then(res => resolve(res))
.catch(err => reject(err))
});
const get_usertoken = (proxyAgent, email, password, visitorid) => new
Promise((resolve, reject) => {
fetch(`https://api.vidio.com/api/login`, {
method: "POST",
agent: proxyAgent,
headers: {
'referer': 'android-app://com.vidio.android',
'x-api-platform': 'app-android',
'x-api-auth': 'laZOmogezono5ogekaso5oz4Mezimew1',
'user-agent': 'vidioandroid/6.7.5-68a0b87f64 (3189545)',
'x-api-app-info': 'android/9/6.7.5-68a0b87f64-3189545',
'accept-language': 'id',
'accept-encoding': 'gzip',
'x-visitor-id': `${visitorid}`,
'content-type': 'application/x-www-form-urlencoded',
},
body: `login=${email}&password=${password}`
})
.then(res => res.json())
.then(res => resolve(res))
.catch(err => reject(err))
});
const get_subs = (proxyAgent, email, tokenUser, authtokenUser, visitorid) => new
Promise((resolve, reject) => {
fetch(`https://api.vidio.com/api/users/subscriptions`, {
method: "GET",
agent: proxyAgent,
headers: {
'referer': 'android-app://com.vidio.android',
'x-api-platform': 'app-android',
'x-api-auth': 'laZOmogezono5ogekaso5oz4Mezimew1',
'user-agent': 'vidioandroid/6.7.5-68a0b87f64 (3189545)',
'x-api-app-info': 'android/9/6.7.5-68a0b87f64-3189545',
'accept-language': 'id',
'accept-encoding': 'gzip',
'if-modified-since': 'Sun, 02 Jul 2023 08:22:00 GMT',
'x-user-email': `${email}`,
'x-user-token': `${authtokenUser}`,
'x-visitor-id': `${visitorid}`,
'x-authorization': `${tokenUser}`,
}
})
.then(res => res.json())
.then(res => resolve(res))
.catch(err => reject(err))
});
(async () => {
console.log("////////////////////////////////////// ")
console.log("////////// Vidio nodejs //////////// ")
console.log("///// Auto create & Subscription ///// ")
console.log("//////////// By Wahdalo ////////////// ")
console.log("////////////////////////////////////// ")
console.log("\n")
const read4 = fs.readFileSync('proxy.txt', 'UTF-8');
const list4 = read4.split(/\r?\n/);
for (let index = 0; index < list4.length; index++) {
try {
const lineCount = list4.length
const randomLineNumber = Math.floor(Math.random() * lineCount)
var proxy = list4[randomLineNumber];
const proxyAgent = new HttpsProxyAgent(`http://${proxy}`);
const firstName = faker.name.firstName();
const lastName = faker.name.lastName();
const usern = `${firstName}${lastName}${await
randnmr(5)}`.toLowerCase();
const email = `${usern}@gmail.com`.toLowerCase();
const password = 'Tytydkuda123#';
const tclId = Math.floor(Math.random() * 900000000) + 100000000;
console.log(`[+] ${proxy}`)
process.stdout.write(`[!] Daftar Akun Baru : `)
const daftar = await get_daftar(email, password);
if (daftar.auth.active == true) {
process.stdout.write(`Sukses\n`);
process.stdout.write("[!] Proses Upgrade Akun : ");
const start = await get_start(proxyAgent, tclId);
if (start.auth.active == true) {
const emailPartner = start.auth.email
const tokenPartner = start.auth.authentication_token
const claim_subs = await get_claimsubs(proxyAgent,
emailPartner, tokenPartner, email, password);
if (claim_subs.auth.active == true) {
process.stdout.write("Sukses\n")
const visitorid = await randstr(16)
const login_subs = await get_usertoken(proxyAgent,
email, password, visitorid);
const tokenUser = login_subs.auth_tokens.access_token
const authtokenUser =
login_subs.auth.authentication_token
const cek_subs = await get_subs(proxyAgent, email,
tokenUser, authtokenUser, visitorid);
const namasubs = cek_subs.subscriptions[0].package.name
const durations =
cek_subs.subscriptions[0].package.day_duration
console.log("[=] Email :", email);
console.log(`[=] Subs : ${namasubs} ${durations}
Days`);
const inputData = `${email}|${password}|${namasubs} $
{durations} Days\n`;
await fs.appendFile('vidio.txt', inputData, (err) => {
if (err) throw err;
console.log(`[=] Data disimpan di vidio.txt`);
});
} else {
process.stdout.write("Gagal\n")
}
} else {
process.stdout.write("Gagal\n")
}
} else {
process.stdout.write("Gagal\n")
}
console.log("\n")
} catch (err) {
console.log("Gagal, Proxy Error\n")
}
}
})();