├── .github
└── workflows
│ └── codeql-analysis.yml
├── Instagram2016_white-(64px).png
├── LICENSE
├── README.md
├── SECURITY.md
├── bomkomen.js
├── bomlike.js
├── bomlikeall
├── botlike.js
├── botlike2.js
├── cdl.js
├── cek.js
├── dellallphoto.js
├── fah.js
├── fft.js
├── fftasli.js
├── fftauto.js
├── fftdm.js
├── fftold.js
├── fftsleep.js
├── fl.js
├── flaauto.js
├── flm.js
├── flmauto.js
├── index.js
├── komen.txt
├── komenlike.js
├── likekomen.js
├── node_modules.zip
├── package-lock.json
├── package.json
├── unfollall.js
├── unfollnotfollback.js
└── unli_bom.txt
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | #
12 | name: "CodeQL"
13 |
14 | on:
15 | push:
16 | branches: [ master ]
17 | pull_request:
18 | # The branches below must be a subset of the branches above
19 | branches: [ master ]
20 | schedule:
21 | - cron: '22 14 * * 2'
22 |
23 | jobs:
24 | analyze:
25 | name: Analyze
26 | runs-on: ubuntu-latest
27 |
28 | strategy:
29 | fail-fast: false
30 | matrix:
31 | language: [ 'javascript' ]
32 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
33 | # Learn more:
34 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
35 |
36 | steps:
37 | - name: Checkout repository
38 | uses: actions/checkout@v2
39 |
40 | # Initializes the CodeQL tools for scanning.
41 | - name: Initialize CodeQL
42 | uses: github/codeql-action/init@v1
43 | with:
44 | languages: ${{ matrix.language }}
45 | # If you wish to specify custom queries, you can do so here or in a config file.
46 | # By default, queries listed here will override any specified in a config file.
47 | # Prefix the list here with "+" to use these queries and those in the config file.
48 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
49 |
50 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
51 | # If this step fails, then you should remove it and run the build manually (see below)
52 | - name: Autobuild
53 | uses: github/codeql-action/autobuild@v1
54 |
55 | # ℹ️ Command-line programs to run using the OS shell.
56 | # 📚 https://git.io/JvXDl
57 |
58 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
59 | # and modify them (or add more) to build your code if your project
60 | # uses a compiled language
61 |
62 | #- run: |
63 | # make bootstrap
64 | # make release
65 |
66 | - name: Perform CodeQL Analysis
67 | uses: github/codeql-action/analyze@v1
68 |
--------------------------------------------------------------------------------
/Instagram2016_white-(64px).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ClassNightcore/worktools/d62b5a55f166351ee6a6c63459a160ad5c053d40/Instagram2016_white-(64px).png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 TeamSyntaxRevolution
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # .png) Instagram NODE JS API V1
2 |
3 |
4 | ## How to install (DEFAULT or BASIC USAGE)
5 | * git clone https://github.com/ikiganteng/bot-igeh.git
6 | * cd bot-igeh
7 | * unzip node_modules.zip
8 | * npm install https://github.com/huttarichard/instagram-private-api
9 | * npm audit fix
10 | * ls
11 | * Then select the tool you want to use!
12 | * node filename
13 |
14 |
15 | ## For PC/Laptop ONLY:
16 | * Download GIT for Windows (https://git-scm.com/download/) *Choose WIN & 32bit/64bit
17 | * Download NodeJS (https://nodejs.org/en/download/) *Choose .msi & 32bit/64bit
18 | * INSTALL GIT for Windows & NodeJS
19 | * Download File on Github (https://github.com/ikiganteng/bot-igeh.git)
20 | * Extract File bot-igeh and enter the folder
21 | * Right Click on Mouse, Then Select "Git Bash Here" (Make sure you are in the bot-igeh folder!!!)
22 | * Then type: unzip node_modules.zip
23 | * npm install https://github.com/huttarichard/instagram-private-api
24 | * npm audit fix
25 | * To View The Contents Of a folder in bash, type: "ls" (without "")
26 | * Then select the tool you want to use!
27 | * node filename
28 |
29 |
30 | ## For TERMUX ONLY:
31 | * Install Termux (PlayStore)
32 | * Open Termux and Wait for Automatic Install of Termux.
33 | * pkg install git
34 | * pkg install nodejs
35 | * git clone https://github.com/ikiganteng/bot-igeh.git
36 | * cd bot-igeh
37 | * unzip node_modules.zip
38 | * npm install https://github.com/huttarichard/instagram-private-api
39 | * npm audit fix
40 | * ls
41 | * Then select the tool you want to use!
42 | * node filename
43 |
44 |
45 |
46 | ## For CodeAnywhere/VPS (Centos):
47 | * sudo yum -y update
48 | * sudo yum -y install git
49 | * sudo yum -y install unzip
50 | * sudo yum -y install screen
51 | * curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
52 | * sudo yum -y install nodejs
53 |
54 | =========== Basic Usage ==============
55 | * git clone https://github.com/ikiganteng/bot-igeh.git
56 | * cd bot-igeh
57 | * unzip node_modules.zip
58 | * npm install https://github.com/huttarichard/instagram-private-api
59 | * npm audit fix
60 | * ls
61 | * Then select the tool you want to use!
62 | * node filename
63 |
64 | Kita buat session dulu ya!
65 | * screen -S Instagram1 (Instagram1 = Nama Session)
66 | Keluar dari session
67 | * CTRL + A + D
68 | Jika ingin mngecek prosesnya / kembali ke session Instagram1
69 | * screen -r Instagram1
70 | Kita buat session baru dulu ya!
71 | * screen -S Instagram2 (Instagram2 = Nama Session Baru)
72 | Keluar dari session
73 | * CTRL + A + D
74 | Jika ingin mngecek prosesnya / kembali ke session Instagram2
75 | * screen -r Instagram2
76 | Cara memberhentikan/stop tools
77 | * screen -S Instagram1 -X kill (Instagram1 = Nama Session yang ingin di berhentikan)
78 | Untuk melihat list session yang sedang berjalan
79 | * screen -list
80 |
81 |
82 | ## For C9/VPS (Ubuntu & Debian):
83 | * sudo apt update
84 | * sudo apt install git
85 | * sudo apt install unzip
86 | * sudo apt install screen
87 | * sudo apt install build-essential libssl-dev
88 | * curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
89 | * source ~/.bashrc
90 | * nvm install 10.7.0
91 |
92 | =========== Basic Usage ==============
93 | * git clone https://github.com/ikiganteng/bot-igeh.git
94 | * cd bot-igeh
95 | * unzip node_modules.zip
96 | * nvm use 10.7.0
97 | * npm install https://github.com/huttarichard/instagram-private-api
98 | * npm audit fix
99 | * ls
100 | * Then select the tool you want to use!
101 | * node filename
102 | * untuk buat session sama seperti VPS Centos
103 |
104 |
105 | ## INFORMATION:
106 | * dellallphoto "DELETE ALL POST IG" (WORK & TESTED)
107 | * fl "SELECTED WITH TARGET IG" (WORK & TESTED)
108 | * fah "SELECTED WITH HASTAG IG" (WORK & TESTED)
109 | * fftsleep "SELECTED WITH TARGET IG" (WORK & TESTED)
110 | * fftdm "SELECTED WITH TARGET IG" (WORK & TESTED)
111 | * fftauto "SELECTED WITH TARGET IG" (WORK & TESTED)
112 | * fft "SELECTED WITH TARGET IG" (WORK & TESTED)
113 | * fftold "SELECTED WITH TARGET IG" (WORK & TESTED)
114 | * fftasli "SELECTED WITH TARGET IG" (WORK & TESTED)
115 | * flaauto "SELECTED WITH LOCATION IG" (WORK & TESTED)
116 | * flmauto "SELECTED WITH MEDIA IG" (WORK & TESTED)
117 | * unfollall "UNFOLOW ALL FOLLOWING IG" (WORK & TESTED)
118 | * unfollnotfollback "UNFOLLOW NOT FOLLOWBACK IG" (WORK & TESTED)
119 | * botlike "LIKE/LOVE TIMELINE IG" (WORK & TESTED)
120 | * botlike2 "LIKE/LOVE TIMELINE IG" (WORK & TESTED)
121 | * bomlike "BOM LIKE POST TARGET" (WORK & TESTED)
122 | * bomkomen "BOM KOMEN POST TARGET" (WORK & TESTED)
123 | * likekomen "SELECTED WITH POST TARGET" (WORK & TESTED)
124 | * komenlike "SELECTED WITH HASTAG TARGET" (WORK & TESTED)
125 | * cdl "SELECTED WITH TARGET IG" (WORK & TESTED)
126 | * cek "CHECK USERNAME IG TARGET" (WORK & TESTED)
127 |
128 |
129 |
130 |
131 | ## WARNING
132 | "Use tools at your own risk!!!"
133 | "Use this Tool for personal use, not for sale!!!"
134 | "Make sure your account is not in private to use this tool!!!"
135 |
136 |
137 | ## UPDATE
138 | 1. Fix Error No Detect Followers Target
139 | 2. Input Target/delay Manual (ITTYW)
140 | 3. + Improvements In Display Program
141 | 4. FFTAUTO & FFT must make file komen.txt and save your comment in there
142 | 5. BOMLIKE & BOMKOMEN if you want unlimited read unli_bom.txt
143 | 6. FFTSLEEP with random sleep
144 |
145 |
146 | ## SPECIAL THANKS TO:
147 | * Code by Ccocot (ccocot@bc0de.net)
148 | * Fixing and Testing by Putu Syntax
149 | * SGB TEAM REBORN
150 | * BC0DE.NET | NAONLAH.NET - WingKocoli
151 | * Ilyasa Fathur Rahman (Tutorial dari VPS Centos)
152 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | Use this section to tell people about which versions of your project are
6 | currently being supported with security updates.
7 |
8 | | Version | Supported |
9 | | ------- | ------------------ |
10 | | 5.1.x | :white_check_mark: |
11 | | 5.0.x | :x: |
12 | | 4.0.x | :white_check_mark: |
13 | | < 4.0 | :x: |
14 |
15 | ## Reporting a Vulnerability
16 |
17 | Use this section to tell people how to report a vulnerability.
18 |
19 | Tell them where to go, how often they can expect to get an update on a
20 | reported vulnerability, what to expect if the vulnerability is accepted or
21 | declined, etc.
22 |
--------------------------------------------------------------------------------
/bomkomen.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 | const Login = async function(User){
70 |
71 | const Device = new Client.Device(User.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 |
75 | try {
76 | await Client.Session.create(Device, Storage, User.username, User.password)
77 | const account = await session.getAccount();
78 | return Promise.resolve({session,account});
79 | } catch (err) {
80 | return Promise.reject(err);
81 | }
82 |
83 | }
84 | const Target = async function(username){
85 | const url = 'https://www.instagram.com/'+username+'/'
86 | const option = {
87 | url: url,
88 | method: 'GET'
89 | }
90 | try{
91 | const account = await rp(option);
92 | const data = S(account).between('').s
93 | const json = JSON.parse(data);
94 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
95 | return Promise.reject('Target is private Account');
96 | } else {
97 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
98 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
99 | return Promise.resolve({id,followers});
100 | }
101 | } catch (err){
102 | return Promise.reject(err);
103 | }
104 |
105 | }
106 |
107 | const Media = async function(session, id){
108 | const Media = new Client.Feed.UserMedia(session, id);
109 |
110 | try {
111 | const Poto = [];
112 | var cursor;
113 | if (cursor) Media.setCursor(cursor);
114 | const getPoto = await Media.get();
115 | await Promise.all(getPoto.map(async(poto) => {
116 | Poto.push({
117 | id:poto.id,
118 | link:poto.params.webLink
119 | });
120 | }))
121 | cursor = await Media.getCursor()
122 | return Promise.resolve(Poto);
123 | } catch (err){
124 | return Promise.reject(err);
125 | }
126 | }
127 |
128 | async function ngeComment(session, id, text){
129 | try {
130 | await Client.Comment.create(session, id, text);
131 | return true;
132 | } catch(e){
133 | return false;
134 | }
135 | }
136 |
137 | const Excute = async function(User, TargetUsername, Text, sleep, mysyntx){
138 | try {
139 |
140 | /** TRY TO LOGIN **/
141 | console.log('\n');
142 | console.log('[?] Try to Login . . .');
143 | const doLogin = await Login(User);
144 | console.log(chalk`{bold.green [!] Login Succsess!}`);
145 |
146 | /** TRY TO GET ALL MEDIA **/
147 | console.log('[?] Try to get Media . . .')
148 | const getTarget = await Target(TargetUsername);
149 | var getMedia = await Media(doLogin.session, getTarget.id);
150 | console.log(chalk`{bold.green [!] Succsess to get Media From [${TargetUsername}] }\n`);
151 | getMedia = _.chunk(getMedia, mysyntx);
152 |
153 | /** TRY TO DELETE ALL MEDIA **/
154 | for (let i = 0; i < getMedia.length; i++) {
155 | console.log('[?] Try to Like Photo/Delay \n')
156 | await Promise.all(getMedia[i].map(async(media) => {
157 | var ranText = Text[Math.floor(Math.random() * Text.length)];
158 | const ngeDo = await ngeComment(doLogin.session, media.id, ranText)
159 | const PrintOut = chalk`${ngeDo ? chalk`{bold.green Sukses Komen}` : chalk`{bold.red Gagal Komen}`}`
160 | console.log(chalk`> ${media.link} => ${PrintOut} [${ranText}]`);
161 | }))
162 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
163 | await delay(sleep)
164 | }
165 | console.log(chalk`{bold.green [+] Bom Komen Post Succsess}`)
166 | } catch (err) {
167 | console.log(err);
168 | }
169 | }
170 | console.log(chalk`
171 | {bold.cyan
172 | —————————————————— [INFORMATION] ————————————————————
173 |
174 | [?] {bold.green BOM KOMEN POST TARGET *SET SLEEP!}
175 |
176 | —————————————————— [THANKS TO] ————————————————————
177 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
178 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
179 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
180 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
181 | —————————————————————————————————————————————————————
182 | What's new?
183 | 1. Input Target/delay Manual (ITTYW)
184 | —————————————————————————————————————————————————————}
185 | `);
186 | //ikiganteng
187 | inquirer.prompt(User)
188 | .then(answers => {
189 | var text = answers.text.split('|');
190 | Excute({
191 | username:answers.username,
192 | password:answers.password
193 | },answers.target,text,answers.sleep,answers.mysyntx);
194 | })
195 |
--------------------------------------------------------------------------------
/bomlike.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'mysyntx',
41 | message:'[>] Input Total of Target You Want (ITTYW):',
42 | validate: function(value){
43 | value = value.match(/[0-9]/);
44 | if (value) return true;
45 | return 'Use Number Only!';
46 | }
47 | },
48 | {
49 | type:'input',
50 | name:'sleep',
51 | message:'[>] Insert Sleep (MiliSeconds):',
52 | validate: function(value){
53 | value = value.match(/[0-9]/);
54 | if (value) return true;
55 | return 'Delay is number';
56 | }
57 | }
58 | ]
59 |
60 | const Login = async function(User){
61 |
62 | const Device = new Client.Device(User.username);
63 | const Storage = new Client.CookieMemoryStorage();
64 | const session = new Client.Session(Device, Storage);
65 |
66 | try {
67 | await Client.Session.create(Device, Storage, User.username, User.password)
68 | const account = await session.getAccount();
69 | return Promise.resolve({session,account});
70 | } catch (err) {
71 | return Promise.reject(err);
72 | }
73 |
74 | }
75 | const Target = async function(username){
76 | const url = 'https://www.instagram.com/'+username+'/'
77 | const option = {
78 | url: url,
79 | method: 'GET'
80 | }
81 | try{
82 | const account = await rp(option);
83 | const data = S(account).between('').s
84 | const json = JSON.parse(data);
85 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
86 | return Promise.reject('Target is private Account');
87 | } else {
88 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
89 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
90 | return Promise.resolve({id,followers});
91 | }
92 | } catch (err){
93 | return Promise.reject(err);
94 | }
95 |
96 | }
97 |
98 | const Media = async function(session, id){
99 | const Media = new Client.Feed.UserMedia(session, id);
100 |
101 | try {
102 | const Poto = [];
103 | var cursor;
104 | if (cursor) Media.setCursor(cursor);
105 | const getPoto = await Media.get();
106 | await Promise.all(getPoto.map(async(poto) => {
107 | Poto.push({
108 | id:poto.id,
109 | link:poto.params.webLink
110 | });
111 | }))
112 | cursor = await Media.getCursor()
113 | return Promise.resolve(Poto);
114 | } catch (err){
115 | return Promise.reject(err);
116 | }
117 | }
118 |
119 | async function ngeLike(session, id){
120 | try{
121 | await Client.Like.create(session, id)
122 | return true;
123 | } catch(e) {
124 | return false;
125 | }
126 | }
127 |
128 | const Excute = async function(User, TargetUsername, mysyntx, sleep){
129 | try {
130 |
131 | /** TRY TO LOGIN **/
132 | console.log('\n');
133 | console.log('[?] Try to Login . . .');
134 | const doLogin = await Login(User);
135 | console.log(chalk`{bold.green [!] Login Succsess!}`);
136 |
137 | /** TRY TO GET ALL MEDIA **/
138 | console.log('[?] Try to get Media . . .')
139 | const getTarget = await Target(TargetUsername);
140 | var getMedia = await Media(doLogin.session, getTarget.id);
141 | console.log(chalk`{bold.green [!] Succsess to get Media From [${TargetUsername}] }\n`);
142 | getMedia = _.chunk(getMedia, mysyntx);
143 |
144 | /** TRY TO DELETE ALL MEDIA **/
145 | for (let i = 0; i < getMedia.length; i++) {
146 | console.log('[?] Try to Like Photo/Delay \n')
147 | await Promise.all(getMedia[i].map(async(media) => {
148 | const doDelete = await ngeLike(doLogin.session, media.id);
149 | const PrintOut = chalk`> ${media.link} => ${doDelete ? chalk`{bold.green Sukses Like}` : chalk`{bold.red Gagal Like}`}`
150 | console.log(PrintOut);
151 | }))
152 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
153 | await delay(sleep)
154 | }
155 | console.log(chalk`{bold.green [+] Bom Like Post Succsess}`)
156 | } catch (err) {
157 | console.log(err);
158 | }
159 | }
160 | console.log(chalk`
161 | {bold.cyan
162 | —————————————————— [INFORMATION] ————————————————————
163 |
164 | [?] {bold.green BOM LIKE POST TARGET *SET SLEEP!}
165 |
166 | —————————————————— [THANKS TO] ————————————————————
167 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
168 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
169 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
170 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
171 | —————————————————————————————————————————————————————
172 | What's new?
173 | 1. Input Target/delay Manual (ITTYW)
174 | —————————————————————————————————————————————————————}
175 | `);
176 | //ikiganteng
177 | inquirer.prompt(User)
178 | .then(answers => {
179 | Excute({
180 | username:answers.username,
181 | password:answers.password
182 | },answers.target,answers.mysyntx,answers.sleep);
183 | })
184 |
--------------------------------------------------------------------------------
/bomlikeall:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'mysyntx',
41 | message:'[>] Input Total of Target You Want (ITTYW):',
42 | validate: function(value){
43 | value = value.match(/[0-9]/);
44 | if (value) return true;
45 | return 'Use Number Only!';
46 | }
47 | },
48 | {
49 | type:'input',
50 | name:'sleep',
51 | message:'[>] Insert Sleep (MiliSeconds):',
52 | validate: function(value){
53 | value = value.match(/[0-9]/);
54 | if (value) return true;
55 | return 'Delay is number';
56 | }
57 | }
58 | ]
59 |
60 | const Login = async function(User){
61 |
62 | const Device = new Client.Device(User.username);
63 | const Storage = new Client.CookieMemoryStorage();
64 | const session = new Client.Session(Device, Storage);
65 |
66 | try {
67 | await Client.Session.create(Device, Storage, User.username, User.password)
68 | const account = await session.getAccount();
69 | return Promise.resolve({session,account});
70 | } catch (err) {
71 | return Promise.reject(err);
72 | }
73 |
74 | }
75 | const Target = async function(username){
76 | const url = 'https://www.instagram.com/'+username+'/'
77 | const option = {
78 | url: url,
79 | method: 'GET'
80 | }
81 | try{
82 | const account = await rp(option);
83 | const data = S(account).between('').s
84 | const json = JSON.parse(data);
85 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
86 | return Promise.reject('Target is private Account');
87 | } else {
88 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
89 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
90 | return Promise.resolve({id,followers});
91 | }
92 | } catch (err){
93 | return Promise.reject(err);
94 | }
95 |
96 | }
97 |
98 | const Media = async function(session, id){
99 | const Media = new Client.Feed.UserMedia(session, id);
100 |
101 | try {
102 | const Poto = [];
103 | var cursor;
104 | do {
105 | if (cursor) Media.setCursor(cursor);
106 | const getPoto = await Media.get();
107 | await Promise.all(getPoto.map(async(poto) => {
108 | Poto.push({
109 | id:poto.id,
110 | link:poto.params.webLink
111 | });
112 | }))
113 | cursor = await Media.getCursor()
114 | } while (Media.isMoreAvailable());
115 | return Promise.resolve(Poto);
116 | } catch (err){
117 | return Promise.reject(err);
118 | }
119 | }
120 |
121 | async function ngeLike(session, id){
122 | try{
123 | await Client.Like.create(session, id)
124 | return true;
125 | } catch(e) {
126 | return false;
127 | }
128 | }
129 |
130 | const Excute = async function(User, TargetUsername, mysyntx, sleep){
131 | try {
132 |
133 | /** TRY TO LOGIN **/
134 | console.log('\n');
135 | console.log('[?] Try to Login . . .');
136 | const doLogin = await Login(User);
137 | console.log(chalk`{bold.green [!] Login Succsess!}`);
138 |
139 | /** TRY TO GET ALL MEDIA **/
140 | console.log('[?] Try to get Media . . .')
141 | const getTarget = await Target(TargetUsername);
142 | var getMedia = await Media(doLogin.session, getTarget.id);
143 | console.log(chalk`{bold.green [!] Succsess to get Media From [${TargetUsername}] }\n`);
144 | getMedia = _.chunk(getMedia, mysyntx);
145 |
146 | /** TRY TO DELETE ALL MEDIA **/
147 | for (let i = 0; i < getMedia.length; i++) {
148 | console.log('[?] Try to Like Photo/Delay \n')
149 | await Promise.all(getMedia[i].map(async(media) => {
150 | const doDelete = await ngeLike(doLogin.session, media.id);
151 | const PrintOut = chalk`> ${media.link} => ${doDelete ? chalk`{bold.green Sukses Like}` : chalk`{bold.red Gagal Like}`}`
152 | console.log(PrintOut);
153 | }))
154 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
155 | await delay(sleep)
156 | }
157 | console.log(chalk`{bold.green [+] Bom Like Post Succsess}`)
158 | } catch (err) {
159 | console.log(err);
160 | }
161 | }
162 | console.log(chalk`
163 | {bold.cyan
164 | —————————————————— [INFORMATION] ————————————————————
165 | [?] {bold.green BOM LIKE POST TARGET *SET SLEEP!}
166 | —————————————————— [THANKS TO] ————————————————————
167 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
168 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
169 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
170 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
171 | —————————————————————————————————————————————————————
172 | What's new?
173 | 1. Input Target/delay Manual (ITTYW)
174 | —————————————————————————————————————————————————————}
175 | `);
176 | //ikiganteng
177 | inquirer.prompt(User)
178 | .then(answers => {
179 | Excute({
180 | username:answers.username,
181 | password:answers.password
182 | },answers.target,answers.mysyntx,answers.sleep);
183 | })
184 |
--------------------------------------------------------------------------------
/botlike.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const delay = require('delay');
5 | const chalk = require('chalk');
6 | const _ = require('lodash');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'sleep',
32 | message:'[>] Insert Sleep (MiliSeconds):',
33 | validate: function(value){
34 | value = value.match(/[0-9]/);
35 | if (value) return true;
36 | return 'Delay is number';
37 | }
38 | }
39 | ]
40 |
41 | const Login = async function(User){
42 |
43 | /** Save Account **/
44 | const Device = new Client.Device(User.username);
45 | const Storage = new Client.CookieMemoryStorage();
46 | const session = new Client.Session(Device, Storage);
47 |
48 | try {
49 | await Client.Session.create(Device, Storage, User.username, User.password)
50 | const account = await session.getAccount();
51 | return Promise.resolve({session,account});
52 | } catch (err) {
53 | return Promise.reject(err);
54 | }
55 |
56 | }
57 |
58 | const Like = async function(session,media){
59 | try {
60 | if (media.params.hasLiked) {
61 | return chalk`{bold.blue Already Liked}`;
62 | }
63 | await Client.Like.create(session, media.id);
64 | return chalk`{bold.green Success Like}`;
65 | } catch (err) {
66 | return chalk`{bold.red Failed Like}`;
67 | }
68 | }
69 |
70 | const Excute = async function(User, sleep){
71 | try {
72 | console.log(chalk`\n{yellow [?] Try to Login . . .}`);
73 | const doLogin = await Login(User);
74 | console.log(chalk`{green [!] Login Succsess}, {yellow [?] Try Like All Media in Feed / Timeline . . .\n}`);
75 | const feed = new Client.Feed.Timeline(doLogin.session);
76 | var cursor;
77 | do {
78 | if (cursor) feed.setCursor(cursor);
79 | var media = await feed.get();
80 | media = _.chunk(media, 10);
81 | for (var i = 0; i < media.length; i++) {
82 | await Promise.all(media[i].map(async (media) => {
83 | const doLike = await Like(doLogin.session, media);
84 | console.log(chalk`[{bold.green Username:}] ${media.params.user.username}\n[{cyan ${media.id}}] => [${doLike}]`);
85 | }))
86 | await console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`);
87 | await delay(sleep);
88 | }
89 | } while(feed.isMoreAvailable());
90 | } catch (err) {
91 | console.log(err);
92 | }
93 | }
94 |
95 | console.log(chalk`
96 | {bold.cyan
97 | —————————————————— [INFORMATION] ————————————————————
98 |
99 | [?] {bold.green BOTLIKEv1 | Like/Love TL IG *SET SLEEP!}
100 |
101 | —————————————————— [THANKS TO] ————————————————————
102 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
103 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
104 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
105 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
106 | —————————————————————————————————————————————————————}
107 | `);
108 |
109 | inquirer.prompt(User)
110 | .then(answers => {
111 | Excute({
112 | username:answers.username,
113 | password:answers.password
114 | },answers.sleep);
115 | })
116 |
--------------------------------------------------------------------------------
/botlike2.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const delay = require('delay');
5 | const chalk = require('chalk');
6 | const inquirer = require('inquirer');
7 |
8 | const User = [
9 | {
10 | type:'input',
11 | name:'username',
12 | message:'[>] Insert Username:',
13 | validate: function(value){
14 | if(!value) return 'Can\'t Empty';
15 | return true;
16 | }
17 | },
18 | {
19 | type:'password',
20 | name:'password',
21 | message:'[>] Insert Password:',
22 | mask:'*',
23 | validate: function(value){
24 | if(!value) return 'Can\'t Empty';
25 | return true;
26 | }
27 | }
28 | ]
29 |
30 | const Login = async function(User){
31 |
32 | /** Save Account **/
33 | const Device = new Client.Device(User.username);
34 | const Storage = new Client.CookieMemoryStorage();
35 | const session = new Client.Session(Device, Storage);
36 |
37 | try {
38 | await Client.Session.create(Device, Storage, User.username, User.password)
39 | const account = await session.getAccount();
40 | return Promise.resolve({session,account});
41 | } catch (err) {
42 | return Promise.reject(err);
43 | }
44 |
45 | }
46 |
47 | const Timeline = async function(session,count,cursor){
48 | var getCursor;
49 | count++;
50 | /** New Feed **/
51 | const feed = new Client.Feed.Timeline(session);
52 |
53 | /** Cursor Detect **/
54 | if (cursor) {
55 | feed.setCursor(cursor);
56 | }
57 |
58 | try {
59 | const media = await feed.get();
60 | console.log('\n[+] Cursor => %s\n', count);
61 | await Promise.all(media.map(async(media) => {
62 | Like(session,media);
63 | }));
64 | if (count < 3) {
65 | getCursor = await feed.getCursor();
66 | await Timeline(session,count,getCursor);
67 | } else {
68 | console.log('\n[-] Repeat from scratch (Delay 60s)\n');
69 | await delay(60000);
70 | count=0;
71 | await Timeline(session,count);
72 | }
73 | } catch(err) {
74 | return Promise.reject(err);
75 | }
76 |
77 | }
78 |
79 | const Like = async function(session,media){
80 |
81 | try {
82 | if (media.params.hasLiked === false){
83 | const Like = await Client.Like.create(session, media.params.id);
84 | console.log(chalk`[{bold.cyan ${media.id}}] Username : ${media.params.user.username} => {bold.green Liked}`);
85 | } else {
86 | console.log(chalk`[{bold.cyan ${media.id}}] Username : ${media.params.user.username} => {bold.red Already Liked}`);
87 | }
88 | } catch (err) {
89 | return Promise.reject(err);
90 | }
91 |
92 | }
93 |
94 | const Excute = async function(User){
95 | try {
96 | const count = 0;
97 | const doLogin = await Login(User);
98 | await Timeline(doLogin.session,count);
99 | } catch (err) {
100 | console.log(err);
101 | }
102 | }
103 | console.log(chalk`
104 | {bold.cyan
105 | —————————————————— [INFORMATION] ————————————————————
106 |
107 | [?] {bold.green BOTLIKEv2 | Like/Love TL IG *AUTO!}
108 |
109 | —————————————————— [THANKS TO] ————————————————————
110 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
111 | [✓] FIXING & TESTING BY SYNTAX (@teamsyntaxid)
112 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
113 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
114 | —————————————————————————————————————————————————————}
115 | `);
116 |
117 | inquirer.prompt(User)
118 | .then(answers => {
119 | Excute({
120 | username:answers.username,
121 | password:answers.password
122 | });
123 | })
124 |
--------------------------------------------------------------------------------
/cdl.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 | var fs = require('fs'),
9 | request = require('request');
10 |
11 | const User = [
12 | {
13 | type:'input',
14 | name:'username',
15 | message:'[>] Insert Username:',
16 | validate: function(value){
17 | if(!value) return 'Can\'t Empty';
18 | return true;
19 | }
20 | },
21 | {
22 | type:'password',
23 | name:'password',
24 | message:'[>] Insert Password:',
25 | mask:'*',
26 | validate: function(value){
27 | if(!value) return 'Can\'t Empty';
28 | return true;
29 | }
30 | },
31 | {
32 | type:'input',
33 | name:'target',
34 | message:'[>] Insert Username Target (Without @[at]):',
35 | validate: function(value){
36 | if(!value) return 'Can\'t Empty';
37 | return true;
38 | }
39 | },
40 | {
41 | type:'input',
42 | name:'mysyntx',
43 | message:'[>] Input Total of Target You Want (ITTYW):',
44 | validate: function(value){
45 | value = value.match(/[0-9]/);
46 | if (value) return true;
47 | return 'Use Number Only!';
48 | }
49 | },
50 | {
51 | type:'input',
52 | name:'sleep',
53 | message:'[>] Insert Sleep (MiliSeconds):',
54 | validate: function(value){
55 | value = value.match(/[0-9]/);
56 | if (value) return true;
57 | return 'Delay is number';
58 | }
59 | }
60 | ]
61 |
62 | const Login = async function(User){
63 |
64 | const Device = new Client.Device(User.username);
65 | const Storage = new Client.CookieMemoryStorage();
66 | const session = new Client.Session(Device, Storage);
67 |
68 | try {
69 | await Client.Session.create(Device, Storage, User.username, User.password)
70 | const account = await session.getAccount();
71 | return Promise.resolve({session,account});
72 | } catch (err) {
73 | return Promise.reject(err);
74 | }
75 |
76 | }
77 |
78 | const Target = async function(username){
79 | const url = 'https://www.instagram.com/'+username+'/'
80 | const option = {
81 | url: url,
82 | method: 'GET'
83 | }
84 | try{
85 | const account = await rp(option);
86 | const data = S(account).between('').s
87 | const json = JSON.parse(data);
88 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
89 | return Promise.reject('Target is private Account');
90 | } else {
91 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
92 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
93 | return Promise.resolve({id,followers});
94 | }
95 | } catch (err){
96 | return Promise.reject(err);
97 | }
98 |
99 | }
100 |
101 | async function ngeComment(session, id, text){
102 | try {
103 | await Client.Comment.create(session, id, text);
104 | return true;
105 | } catch(e){
106 | return false;
107 | }
108 | }
109 |
110 | async function ngeLike(session, id){
111 | try{
112 | await Client.Like.create(session, id)
113 | return true;
114 | } catch(e) {
115 | return false;
116 | }
117 | }
118 |
119 | async function ngeDM(session, users, text){
120 | try{
121 | await Client.Thread.configureText(session, users, text)
122 | return true;
123 | } catch(e) {
124 | return false;
125 | }
126 | }
127 |
128 | const CommentLikeDM = async function(session, accountId, text){
129 | var result;
130 |
131 | const feed = new Client.Feed.UserMedia(session, accountId);
132 |
133 | try {
134 | result = await feed.get();
135 | } catch (err) {
136 | return chalk`{bold.red ${err}}`;
137 | }
138 |
139 | if (result.length > 0) {
140 | const task = [
141 | ngeComment(session, result[0].params.id, text),
142 | ngeDM(session, accountId, text),
143 | ngeLike(session, result[0].params.id)
144 | ]
145 | const [Comment,DM,Like] = await Promise.all(task);
146 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
147 | const printDM = DM ? chalk`{green DM}` : chalk`{red DM}`;
148 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
149 | return chalk`{bold.green ${printComment},${printDM},${printLike} [${text}]}`;
150 | }
151 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
152 | };
153 |
154 | const Followers = async function(session, id){
155 | const feed = new Client.Feed.AccountFollowers(session, id);
156 | try{
157 | const Pollowers = [];
158 | var cursor;
159 | do {
160 | if (cursor) feed.setCursor(cursor);
161 | const getPollowers = await feed.get();
162 | await Promise.all(getPollowers.map(async(akun) => {
163 | Pollowers.push(akun.id);
164 | }))
165 | cursor = await feed.getCursor();
166 | } while(feed.isMoreAvailable());
167 | return Promise.resolve(Pollowers);
168 | } catch(err){
169 | return Promise.reject(err);
170 | }
171 | }
172 |
173 | const Excute = async function(User, TargetUsername, Sleep, mysyntx){
174 | try {
175 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
176 | const doLogin = await Login(User);
177 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
178 | const getTarget = await Target(TargetUsername);
179 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
180 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
181 | console.log(chalk`{cyan [?] Try to Follow, Comment, DM, and Like Followers Target . . . \n}`)
182 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
183 | var TargetCursor;
184 | do {
185 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
186 | var TargetResult = await Targetfeed.get();
187 | TargetResult = _.chunk(TargetResult, mysyntx);
188 | for (let i = 0; i < TargetResult.length; i++) {
189 | var timeNow = new Date();
190 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
191 | await Promise.all(TargetResult[i].map(async(akun) => {
192 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
193 | var Text = fs.readFileSync('komen.txt', 'utf8').split('|');
194 | var ranText = Text[Math.floor(Math.random() * Text.length)];
195 | const ngeDo = await CommentLikeDM(doLogin.session, akun.id, ranText)
196 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
197 | } else {
198 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
199 | }
200 | }));
201 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
202 | await delay(Sleep);
203 | }
204 | TargetCursor = await Targetfeed.getCursor();
205 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
206 | await delay(Sleep);
207 | } while(Targetfeed.isMoreAvailable());
208 | } catch (err) {
209 | console.log(err);
210 | }
211 | }
212 |
213 | console.log(chalk`
214 | {bold.cyan
215 | —————————————————— [INFORMATION] ————————————————————
216 |
217 | [?] {bold.green Using Account/User Target!}
218 | [?] {bold.green Comment, DM & Like}
219 | [?] {bold.green Gunakan komen.txt untk komen!}
220 |
221 | —————————————————— [THANKS TO] ————————————————————
222 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
223 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
224 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
225 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
226 | —————————————————————————————————————————————————————
227 | What's new?
228 | 1. Input Target/delay Manual (ITTYW)
229 | —————————————————————————————————————————————————————}
230 | `);
231 | //ikiganteng
232 | inquirer.prompt(User)
233 | .then(answers => {
234 | Excute({
235 | username:answers.username,
236 | password:answers.password
237 | },answers.target,answers.sleep,answers.mysyntx);
238 | })
239 |
--------------------------------------------------------------------------------
/cek.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 | const User = [
9 | {
10 | type:'input',
11 | name:'username',
12 | message:'[>] Insert Username:',
13 | validate: function(value){
14 | if(!value) return 'Can\'t Empty';
15 | return true;
16 | }
17 | },
18 | {
19 | type:'password',
20 | name:'password',
21 | message:'[>] Insert Password:',
22 | mask:'*',
23 | validate: function(value){
24 | if(!value) return 'Can\'t Empty';
25 | return true;
26 | }
27 | },
28 | {
29 | type:'input',
30 | name:'mysyntx',
31 | message:'[>] Input Total of Amount You Want :',
32 | validate: function(value){
33 | value = value.match(/[0-9]/);
34 | if (value) return true;
35 | return 'Use Number Only!';
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'sleep',
41 | message:'[>] Insert Sleep (MiliSeconds):',
42 | validate: function(value){
43 | value = value.match(/[0-9]/);
44 | if (value) return true;
45 | return 'Delay is number';
46 | }
47 | }
48 | ]
49 | const Login = async function(User){
50 |
51 | const Device = new Client.Device(User.username);
52 | const Storage = new Client.CookieMemoryStorage();
53 | const session = new Client.Session(Device, Storage);
54 |
55 | try {
56 | await Client.Session.create(Device, Storage, User.username, User.password)
57 | const account = await session.getAccount();
58 | return Promise.resolve({session,account});
59 | } catch (err) {
60 | return Promise.reject(err);
61 | }
62 |
63 | }
64 |
65 | function randomString1() {
66 | var chars = "abcdefghiklmnopqrstuvwxyz";
67 | var string_length = 5;
68 | var randomstring = '';
69 | for (var i=0; i ${getTarget} \n`, function (err) {
118 | if (err) {
119 | // append failed
120 | } else {
121 | // done
122 | }
123 | })
124 | console.log(chalk`\n [{magenta ${timeNow}}] {bold.green [>]} [Username: ${iki}] => ${getTarget}`)
125 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
126 | await delay(Sleep);
127 | }
128 | } catch (err){
129 | console.log(err);
130 | }
131 | }
132 | console.log(chalk`
133 | {bold.cyan
134 | —————————————————— [INFORMATION] ————————————————————
135 |
136 | [?] {bold.green Check Username Account *AUTO!}
137 | [?] {bold.green Save Result to Log.txt}
138 |
139 | —————————————————— [THANKS TO] ————————————————————
140 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
141 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
142 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
143 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
144 | —————————————————————————————————————————————————————}
145 | `);
146 | //ikiganteng
147 | inquirer.prompt(User)
148 | .then(answers => {
149 | Excute({
150 | username:answers.username,
151 | password:answers.password
152 | },answers.sleep,answers.mysyntx);
153 | })
154 |
--------------------------------------------------------------------------------
/dellallphoto.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const delay = require('delay');
5 | const chalk = require('chalk');
6 | const _ = require('lodash');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'sleep',
32 | message:'[>] Insert Sleep (MiliSeconds):',
33 | validate: function(value){
34 | value = value.match(/[0-9]/);
35 | if (value) return true;
36 | return 'Delay is number';
37 | }
38 | }
39 | ]
40 |
41 | const Login = async function(User){
42 |
43 | const Device = new Client.Device(User.username);
44 | const Storage = new Client.CookieMemoryStorage();
45 | const session = new Client.Session(Device, Storage);
46 |
47 | try {
48 | await Client.Session.create(Device, Storage, User.username, User.password)
49 | const account = await session.getAccount();
50 | return Promise.resolve({session,account});
51 | } catch (err) {
52 | return Promise.reject(err);
53 | }
54 |
55 | }
56 |
57 | const Media = async function(session, id){
58 | const Media = new Client.Feed.UserMedia(session, id);
59 |
60 | try {
61 | const Poto = [];
62 | var cursor;
63 | do {
64 | if (cursor) Media.setCursor(cursor);
65 | const getPoto = await Media.get();
66 | await Promise.all(getPoto.map(async(poto) => {
67 | Poto.push({
68 | id:poto.id,
69 | link:poto.params.webLink
70 | });
71 | }))
72 | cursor = await Media.getCursor()
73 | } while (Media.isMoreAvailable());
74 | return Promise.resolve(Poto);
75 | } catch (err){
76 | return Promise.reject(err);
77 | }
78 | }
79 |
80 | const Delete = async function(session, id){
81 | try {
82 | await Client.Media.delete(session,id);
83 | return true;
84 | } catch (err) {
85 | return false;
86 | }
87 | }
88 |
89 |
90 | const Excute = async function(User,sleep){
91 | try {
92 |
93 | /** TRY TO LOGIN **/
94 | console.log('\n [?] Try to Login . . .');
95 | const doLogin = await Login(User);
96 | console.log(chalk`{bold.green [!] Login Succsess!}`);
97 |
98 | /** TRY TO GET ALL MEDIA **/
99 | console.log('[?] Try to get Media . . .')
100 | var getMedia = await Media(doLogin.session, doLogin.account.id);
101 | console.log(chalk`{bold.green [!] Succsess to get Media. Media Length : ${getMedia.length}}\n`);
102 | getMedia = _.chunk(getMedia, 10);
103 |
104 | /** TRY TO DELETE ALL MEDIA **/
105 | for (let i = 0; i < getMedia.length; i++) {
106 | console.log('[?] Try to Delete 10 Photo/Delay \n')
107 | await Promise.all(getMedia[i].map(async(media) => {
108 | const doDelete = await Delete(doLogin.session, media.id);
109 | const PrintOut = chalk`> ${media.link} => ${doDelete ? chalk`{bold.green Sukses}` : chalk`{bold.red Gagal}`}`
110 | console.log(PrintOut);
111 | }))
112 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
113 | await delay(sleep)
114 | }
115 |
116 | } catch (err) {
117 | console.log(err);
118 | }
119 | }
120 | console.log(chalk`
121 | {bold.cyan
122 | —————————————————— [INFORMATION] ————————————————————
123 |
124 | [?] {bold.green MASS DELETE ALL PHOTO IG *SET SLEEP!}
125 |
126 | —————————————————— [THANKS TO] ————————————————————
127 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
128 | [✓] FIXING & TESTING BY SYNTAX (@teamsyntaxid)
129 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
130 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
131 | —————————————————————————————————————————————————————}
132 | `);
133 |
134 | inquirer.prompt(User)
135 | .then(answers => {
136 | Excute({
137 | username:answers.username,
138 | password:answers.password
139 | },answers.sleep);
140 | })
141 |
--------------------------------------------------------------------------------
/fah.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const chalk = require('chalk');
5 | const delay = require('delay');
6 | const _ = require('lodash');
7 | const inquirer = require('inquirer');
8 |
9 | const question = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'hastag',
32 | message:'[>] Insert Hashtag (Without #)(Use [|] if more than 1)(jangan dispasi):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (In MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 |
70 | const doLogin = async (params) => {
71 | const Device = new Client.Device(params.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 | try {
75 | await Client.Session.create(Device, Storage, params.username, params.password)
76 | const account = await session.getAccount();
77 | return Promise.resolve({session,account});
78 | } catch (err) {
79 | return Promise.reject(err);
80 | }
81 | }
82 |
83 | const grabFollowers = async (session, id) => {
84 | const feed = new Client.Feed.AccountFollowers(session, id);
85 | try{
86 | feed.map = item => item.params;
87 | return Promise.resolve(feed.all());
88 | }catch (e){
89 | return Promise.reject(err);
90 | }
91 | }
92 |
93 | const doFollow = async (session, id) => {
94 | try {
95 | await Client.Relationship.create(session, id);
96 | return true;
97 | } catch (e) {
98 | return false;
99 | }
100 | }
101 |
102 | const doComment = async (session, id, text) => {
103 | try {
104 | await Client.Comment.create(session, id, text);
105 | return true;
106 | } catch(e){
107 | return false;
108 | }
109 | }
110 |
111 | const doLike = async (session, id) => {
112 | try{
113 | await Client.Like.create(session, id);
114 | return true;
115 | } catch(e) {
116 | return false;
117 | }
118 | }
119 |
120 | const doAction = async (session, params, text) => {
121 | const task = [
122 | doFollow(session, params.account.id),
123 | doLike(session, params.id),
124 | doComment(session, params.id, text)
125 | ];
126 | var [Follow,Like,Comment] = await Promise.all(task);
127 | Follow = Follow ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
128 | Comment = Comment ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
129 | Like = Like ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
130 | return chalk`[Follow: ${Follow}] [Like: ${Like}] [Comment: ${Comment} ({cyan ${text}})]`;
131 | }
132 |
133 | const doMain = async (account, hastag, sleep, text, mysyntx) => {
134 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
135 | account = await doLogin(account);
136 | console.log(chalk`{green [!] Login Success!}`)
137 | try {
138 | const ranhastag = hastag[Math.floor(Math.random() * hastag.length)];
139 | const feed = new Client.Feed.TaggedMedia(account.session, ranhastag);
140 | console.log(chalk`{cyan [?] Try to Follow, Like and Comment All Account In Hashtag: #${ranhastag}}`);
141 | var cursor;
142 | var count = 0;
143 | console.log(chalk`{yellow \n [#][>] START WITH RATIO ${mysyntx}/${sleep} MiliSeconds [<][#] \n}`)
144 | do {
145 | if (cursor) feed.setCursor(cursor);
146 | count++;
147 | var media = await feed.get();
148 | media = _.chunk(media, mysyntx);
149 | for (media of media) {
150 | var timeNow = new Date();
151 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
152 | await Promise.all(media.map(async(media)=>{
153 | const ranText = text[Math.floor(Math.random() * text.length)];
154 | const resultAction = await doAction(account.session, media.params, ranText);
155 | console.log(chalk`[{magenta ${timeNow}}] ${media.id} | {cyanBright @${media.params.account.username}} \n=> ${resultAction}`);
156 | }))
157 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
158 | await delay(sleep);
159 | }
160 | cursor = await feed.getCursor();
161 | console.log(chalk`[Cursor: {bold.cyan ${cursor ? cursor : 'null'}} | Count: {bold.cyan ${count}} | Total Media: {bold.cyan ${media.length}} | Delay: ${sleep} MiliSeconds ]`);
162 | } while(feed.isMoreAvailable());
163 | } catch(e) {
164 | console.log(e);
165 | }
166 | }
167 |
168 | console.log(chalk`
169 | {bold.cyan
170 | —————————————————— [INFORMATION] ————————————————————
171 |
172 | [?] {bold.green FAH | Using Hastag Media Target!}
173 |
174 | —————————————————— [THANKS TO] ————————————————————
175 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
176 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
177 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
178 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
179 | —————————————————————————————————————————————————————
180 | What's new?
181 | 1. Input Target/delay Manual (ITTYW)
182 | —————————————————————————————————————————————————————}
183 | `);
184 |
185 | inquirer.prompt(question)
186 | .then(answers => {
187 | var text = answers.text.split('|');
188 | var hastag = answers.hastag.split('|');
189 | doMain({
190 | username:answers.username,
191 | password:answers.password},hastag,answers.sleep,text,answers.mysyntx);
192 | })
193 | .catch(e => {
194 | console.log(e);
195 | })
196 |
--------------------------------------------------------------------------------
/fft.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const chalk = require('chalk');
5 | const delay = require('delay');
6 | const _ = require('lodash');
7 | const inquirer = require('inquirer');
8 |
9 | const question = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'hastag',
32 | message:'[>] Insert Hashtag (Without #)(Use [|] if more than 1)(jangan dispasi):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (In MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 |
70 | const doLogin = async (params) => {
71 | const Device = new Client.Device(params.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 | try {
75 | await Client.Session.create(Device, Storage, params.username, params.password)
76 | const account = await session.getAccount();
77 | return Promise.resolve({session,account});
78 | } catch (err) {
79 | return Promise.reject(err);
80 | }
81 | }
82 |
83 | const grabFollowers = async (session, id) => {
84 | const feed = new Client.Feed.AccountFollowers(session, id);
85 | try{
86 | feed.map = item => item.params;
87 | return Promise.resolve(feed.all());
88 | }catch (e){
89 | return Promise.reject(err);
90 | }
91 | }
92 |
93 | const doFollow = async (session, id) => {
94 | try {
95 | await Client.Relationship.create(session, id);
96 | return true;
97 | } catch (e) {
98 | return false;
99 | }
100 | }
101 |
102 | const doComment = async (session, id, text) => {
103 | try {
104 | await Client.Comment.create(session, id, text);
105 | return true;
106 | } catch(e){
107 | return false;
108 | }
109 | }
110 |
111 | const doLike = async (session, id) => {
112 | try{
113 | await Client.Like.create(session, id);
114 | return true;
115 | } catch(e) {
116 | return false;
117 | }
118 | }
119 |
120 | const doAction = async (session, params, text) => {
121 | const task = [
122 | doFollow(session, params.account.id),
123 | doLike(session, params.id),
124 | doComment(session, params.id, text)
125 | ];
126 | var [Follow,Like,Comment] = await Promise.all(task);
127 | Follow = Follow ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
128 | Comment = Comment ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
129 | Like = Like ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
130 | return chalk`[Follow: ${Follow}] [Like: ${Like}] [Comment: ${Comment} ({cyan ${text}})]`;
131 | }
132 |
133 | const doMain = async (account, hastag, sleep, text, mysyntx) => {
134 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
135 | account = await doLogin(account);
136 | console.log(chalk`{green [!] Login Success!}`)
137 | try {
138 | const ranhastag = hastag[Math.floor(Math.random() * hastag.length)];
139 | const feed = new Client.Feed.TaggedMedia(account.session, ranhastag);
140 | console.log(chalk`{cyan [?] Try to Follow, Like and Comment All Account In Hashtag: #${ranhastag}}`);
141 | var cursor;
142 | var count = 0;
143 | console.log(chalk`{yellow \n [#][>] START WITH RATIO ${mysyntx}/${sleep} MiliSeconds [<][#] \n}`)
144 | do {
145 | if (cursor) feed.setCursor(cursor);
146 | count++;
147 | var media = await feed.get();
148 | media = _.chunk(media, mysyntx);
149 | for (media of media) {
150 | var timeNow = new Date();
151 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
152 | await Promise.all(media.map(async(media)=>{
153 | const ranText = text[Math.floor(Math.random() * text.length)];
154 | const resultAction = await doAction(account.session, media.params, ranText);
155 | console.log(chalk`[{magenta ${timeNow}}] ${media.id} | {cyanBright @${media.params.account.username}} \n=> ${resultAction}`);
156 | }))
157 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
158 | await delay(sleep);
159 | }
160 | cursor = await feed.getCursor();
161 | console.log(chalk`[Cursor: {bold.cyan ${cursor ? cursor : 'null'}} | Count: {bold.cyan ${count}} | Total Media: {bold.cyan ${media.length}} | Delay: ${sleep} MiliSeconds ]`);
162 | } while(feed.isMoreAvailable());
163 | } catch(e) {
164 | console.log(e);
165 | }
166 | }
167 |
168 | console.log(chalk`
169 | {bold.cyan
170 | —————————————————— [INFORMATION] ————————————————————
171 |
172 | [?] {bold.green FAH | Using Hastag Media Target!}
173 |
174 | —————————————————— [THANKS TO] ————————————————————
175 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
176 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
177 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
178 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
179 | —————————————————————————————————————————————————————
180 | What's new?
181 | 1. Input Target/delay Manual (ITTYW)
182 | —————————————————————————————————————————————————————}
183 | `);
184 |
185 | inquirer.prompt(question)
186 | .then(answers => {
187 | var text = answers.text.split('|');
188 | var hastag = answers.hastag.split('|');
189 | doMain({
190 | username:answers.username,
191 | password:answers.password},hastag,answers.sleep,text,answers.mysyntx);
192 | })
193 | .catch(e => {
194 | console.log(e);
195 | })
196 |
--------------------------------------------------------------------------------
/fftasli.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 | const Login = async function(User){
70 |
71 | const Device = new Client.Device(User.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 |
75 | try {
76 | await Client.Session.create(Device, Storage, User.username, User.password)
77 | const account = await session.getAccount();
78 | return Promise.resolve({session,account});
79 | } catch (err) {
80 | return Promise.reject(err);
81 | }
82 |
83 | }
84 |
85 | const Target = async function(username){
86 | const url = 'https://www.instagram.com/'+username+'/'
87 | const option = {
88 | url: url,
89 | method: 'GET'
90 | }
91 | try{
92 | const account = await rp(option);
93 | const data = S(account).between('').s
94 | const json = JSON.parse(data);
95 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
96 | return Promise.reject('Target is private Account');
97 | } else {
98 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
99 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
100 | return Promise.resolve({id,followers});
101 | }
102 | } catch (err){
103 | return Promise.reject(err);
104 | }
105 |
106 | }
107 |
108 | async function ngefollow(session,accountId){
109 | try {
110 | await Client.Relationship.create(session, accountId);
111 | return true
112 | } catch (e) {
113 | return false
114 | }
115 | }
116 |
117 | async function ngeComment(session, id, text){
118 | try {
119 | await Client.Comment.create(session, id, text);
120 | return true;
121 | } catch(e){
122 | return false;
123 | }
124 | }
125 |
126 | async function ngeLike(session, id){
127 | try{
128 | await Client.Like.create(session, id)
129 | return true;
130 | } catch(e) {
131 | return false;
132 | }
133 | }
134 |
135 | const CommentAndLike = async function(session, accountId, text){
136 | var result;
137 |
138 | const feed = new Client.Feed.UserMedia(session, accountId);
139 |
140 | try {
141 | result = await feed.get();
142 | } catch (err) {
143 | return chalk`{bold.red ${err}}`;
144 | }
145 |
146 | if (result.length > 0) {
147 | const task = [
148 | ngefollow(session, accountId),
149 | ngeComment(session, result[0].params.id, text),
150 | ngeLike(session, result[0].params.id)
151 | ]
152 | const [Follow,Comment,Like] = await Promise.all(task);
153 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
154 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
155 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
156 | return chalk`{bold.green ${printFollow},${printComment},${printLike} [${text}]}`;
157 | }
158 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
159 | };
160 |
161 | const Followers = async function(session, id){
162 | const feed = new Client.Feed.AccountFollowers(session, id);
163 | try{
164 | const Pollowers = [];
165 | var cursor;
166 | do {
167 | if (cursor) feed.setCursor(cursor);
168 | const getPollowers = await feed.get();
169 | await Promise.all(getPollowers.map(async(akun) => {
170 | Pollowers.push(akun.id);
171 | }))
172 | cursor = await feed.getCursor();
173 | } while(feed.isMoreAvailable());
174 | return Promise.resolve(Pollowers);
175 | } catch(err){
176 | return Promise.reject(err);
177 | }
178 | }
179 |
180 | const Excute = async function(User, TargetUsername, Text, Sleep, mysyntx){
181 | try {
182 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
183 | const doLogin = await Login(User);
184 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
185 | const getTarget = await Target(TargetUsername);
186 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
187 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
188 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
189 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
190 | var TargetCursor;
191 | do {
192 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
193 | var TargetResult = await Targetfeed.get();
194 | TargetResult = _.chunk(TargetResult, mysyntx);
195 | for (let i = 0; i < TargetResult.length; i++) {
196 | var timeNow = new Date();
197 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
198 | await Promise.all(TargetResult[i].map(async(akun) => {
199 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
200 | var ranText = Text[Math.floor(Math.random() * Text.length)];
201 | const ngeDo = await CommentAndLike(doLogin.session, akun.id, ranText)
202 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
203 | } else {
204 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
205 | }
206 | }));
207 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
208 | await delay(Sleep);
209 | }
210 | TargetCursor = await Targetfeed.getCursor();
211 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
212 | await delay(Sleep);
213 | } while(Targetfeed.isMoreAvailable());
214 | } catch (err) {
215 | console.log(err);
216 | }
217 | }
218 |
219 | console.log(chalk`
220 | {bold.cyan
221 | —————————————————— [INFORMATION] ————————————————————
222 |
223 | [?] {bold.green FFTauto | Using Account/User Target!}
224 |
225 | —————————————————— [THANKS TO] ————————————————————
226 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
227 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
228 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
229 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
230 | —————————————————————————————————————————————————————
231 | What's new?
232 | 1. Input Target/delay Manual (ITTYW)
233 | —————————————————————————————————————————————————————}
234 | `);
235 |
236 | inquirer.prompt(User)
237 | .then(answers => {
238 | var text = answers.text.split('|');
239 | Excute({
240 | username:answers.username,
241 | password:answers.password
242 | },answers.target,text,answers.sleep,answers.mysyntx);
243 | })
244 |
--------------------------------------------------------------------------------
/fftauto.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 | var fs = require('fs'),
9 | request = require('request');
10 |
11 | const User = [
12 | {
13 | type:'input',
14 | name:'username',
15 | message:'[>] Insert Username:',
16 | validate: function(value){
17 | if(!value) return 'Can\'t Empty';
18 | return true;
19 | }
20 | },
21 | {
22 | type:'password',
23 | name:'password',
24 | message:'[>] Insert Password:',
25 | mask:'*',
26 | validate: function(value){
27 | if(!value) return 'Can\'t Empty';
28 | return true;
29 | }
30 | },
31 | {
32 | type:'input',
33 | name:'target',
34 | message:'[>] Insert Username Target (Without @[at]):',
35 | validate: function(value){
36 | if(!value) return 'Can\'t Empty';
37 | return true;
38 | }
39 | },
40 | {
41 | type:'input',
42 | name:'mysyntx',
43 | message:'[>] Input Total of Target You Want (ITTYW):',
44 | validate: function(value){
45 | value = value.match(/[0-9]/);
46 | if (value) return true;
47 | return 'Use Number Only!';
48 | }
49 | },
50 | {
51 | type:'input',
52 | name:'sleep',
53 | message:'[>] Insert Sleep (MiliSeconds):',
54 | validate: function(value){
55 | value = value.match(/[0-9]/);
56 | if (value) return true;
57 | return 'Delay is number';
58 | }
59 | }
60 | ]
61 |
62 | const Login = async function(User){
63 |
64 | const Device = new Client.Device(User.username);
65 | const Storage = new Client.CookieMemoryStorage();
66 | const session = new Client.Session(Device, Storage);
67 |
68 | try {
69 | await Client.Session.create(Device, Storage, User.username, User.password)
70 | const account = await session.getAccount();
71 | return Promise.resolve({session,account});
72 | } catch (err) {
73 | return Promise.reject(err);
74 | }
75 |
76 | }
77 |
78 | const Target = async function(username){
79 | const url = 'https://www.instagram.com/'+username+'/'
80 | const option = {
81 | url: url,
82 | method: 'GET'
83 | }
84 | try{
85 | const account = await rp(option);
86 | const data = S(account).between('').s
87 | const json = JSON.parse(data);
88 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
89 | return Promise.reject('Target is private Account');
90 | } else {
91 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
92 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
93 | return Promise.resolve({id,followers});
94 | }
95 | } catch (err){
96 | return Promise.reject(err);
97 | }
98 |
99 | }
100 |
101 | async function ngefollow(session,accountId){
102 | try {
103 | await Client.Relationship.create(session, accountId);
104 | return true
105 | } catch (e) {
106 | return false
107 | }
108 | }
109 |
110 | async function ngeComment(session, id, text){
111 | try {
112 | await Client.Comment.create(session, id, text);
113 | return true;
114 | } catch(e){
115 | return false;
116 | }
117 | }
118 |
119 | async function ngeLike(session, id){
120 | try{
121 | await Client.Like.create(session, id)
122 | return true;
123 | } catch(e) {
124 | return false;
125 | }
126 | }
127 |
128 | const CommentAndLike = async function(session, accountId, text){
129 | var result;
130 |
131 | const feed = new Client.Feed.UserMedia(session, accountId);
132 |
133 | try {
134 | result = await feed.get();
135 | } catch (err) {
136 | return chalk`{bold.red ${err}}`;
137 | }
138 |
139 | if (result.length > 0) {
140 | const task = [
141 | ngefollow(session, accountId),
142 | ngeComment(session, result[0].params.id, text),
143 | ngeLike(session, result[0].params.id)
144 | ]
145 | const [Follow,Comment,Like] = await Promise.all(task);
146 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
147 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
148 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
149 | return chalk`{bold.green ${printFollow},${printComment},${printLike} [${text}]}`;
150 | }
151 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
152 | };
153 |
154 | const Followers = async function(session, id){
155 | const feed = new Client.Feed.AccountFollowers(session, id);
156 | try{
157 | const Pollowers = [];
158 | var cursor;
159 | do {
160 | if (cursor) feed.setCursor(cursor);
161 | const getPollowers = await feed.get();
162 | await Promise.all(getPollowers.map(async(akun) => {
163 | Pollowers.push(akun.id);
164 | }))
165 | cursor = await feed.getCursor();
166 | } while(feed.isMoreAvailable());
167 | return Promise.resolve(Pollowers);
168 | } catch(err){
169 | return Promise.reject(err);
170 | }
171 | }
172 |
173 | const Excute = async function(User, TargetUsername, Sleep, mysyntx){
174 | try {
175 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
176 | const doLogin = await Login(User);
177 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
178 | const getTarget = await Target(TargetUsername);
179 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
180 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
181 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
182 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
183 | var TargetCursor;
184 | do {
185 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
186 | var TargetResult = await Targetfeed.get();
187 | TargetResult = _.chunk(TargetResult, mysyntx);
188 | for (let i = 0; i < TargetResult.length; i++) {
189 | var timeNow = new Date();
190 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
191 | await Promise.all(TargetResult[i].map(async(akun) => {
192 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
193 | var Text = fs.readFileSync('komen.txt', 'utf8').split('|');
194 | var ranText = Text[Math.floor(Math.random() * Text.length)];
195 | var iki = ''+akun.params.username+' '+ranText;
196 | const ngeDo = await CommentAndLike(doLogin.session, akun.id, iki)
197 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
198 | } else {
199 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
200 | }
201 | }));
202 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
203 | await delay(Sleep);
204 | }
205 | TargetCursor = await Targetfeed.getCursor();
206 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
207 | await delay(Sleep);
208 | } while(Targetfeed.isMoreAvailable());
209 | } catch (err) {
210 | console.log(err);
211 | }
212 | }
213 |
214 | console.log(chalk`
215 | {bold.cyan
216 | —————————————————— [INFORMATION] ————————————————————
217 |
218 | [?] {bold.green FFTauto | Using Account/User Target!}
219 | [?] {bold.green Gunakan komen.txt untk komen!}
220 |
221 | —————————————————— [THANKS TO] ————————————————————
222 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
223 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
224 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
225 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
226 | —————————————————————————————————————————————————————
227 | What's new?
228 | 1. Input Target/delay Manual (ITTYW)
229 | —————————————————————————————————————————————————————}
230 | `);
231 | //ikiganteng
232 | inquirer.prompt(User)
233 | .then(answers => {
234 | Excute({
235 | username:answers.username,
236 | password:answers.password
237 | },answers.target,answers.sleep,answers.mysyntx);
238 | })
239 |
--------------------------------------------------------------------------------
/fftdm.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 | var fs = require('fs'),
9 | request = require('request');
10 |
11 | const User = [
12 | {
13 | type:'input',
14 | name:'username',
15 | message:'[>] Insert Username:',
16 | validate: function(value){
17 | if(!value) return 'Can\'t Empty';
18 | return true;
19 | }
20 | },
21 | {
22 | type:'password',
23 | name:'password',
24 | message:'[>] Insert Password:',
25 | mask:'*',
26 | validate: function(value){
27 | if(!value) return 'Can\'t Empty';
28 | return true;
29 | }
30 | },
31 | {
32 | type:'input',
33 | name:'target',
34 | message:'[>] Insert Username Target (Without @[at]):',
35 | validate: function(value){
36 | if(!value) return 'Can\'t Empty';
37 | return true;
38 | }
39 | },
40 | {
41 | type:'input',
42 | name:'mysyntx',
43 | message:'[>] Input Total of Target You Want (ITTYW):',
44 | validate: function(value){
45 | value = value.match(/[0-9]/);
46 | if (value) return true;
47 | return 'Use Number Only!';
48 | }
49 | },
50 | {
51 | type:'input',
52 | name:'sleep',
53 | message:'[>] Insert Sleep (MiliSeconds):',
54 | validate: function(value){
55 | value = value.match(/[0-9]/);
56 | if (value) return true;
57 | return 'Delay is number';
58 | }
59 | }
60 | ]
61 |
62 | const Login = async function(User){
63 |
64 | const Device = new Client.Device(User.username);
65 | const Storage = new Client.CookieMemoryStorage();
66 | const session = new Client.Session(Device, Storage);
67 |
68 | try {
69 | await Client.Session.create(Device, Storage, User.username, User.password)
70 | const account = await session.getAccount();
71 | return Promise.resolve({session,account});
72 | } catch (err) {
73 | return Promise.reject(err);
74 | }
75 |
76 | }
77 |
78 | const Target = async function(username){
79 | const url = 'https://www.instagram.com/'+username+'/'
80 | const option = {
81 | url: url,
82 | method: 'GET'
83 | }
84 | try{
85 | const account = await rp(option);
86 | const data = S(account).between('').s
87 | const json = JSON.parse(data);
88 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
89 | return Promise.reject('Target is private Account');
90 | } else {
91 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
92 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
93 | return Promise.resolve({id,followers});
94 | }
95 | } catch (err){
96 | return Promise.reject(err);
97 | }
98 |
99 | }
100 |
101 | async function ngefollow(session,accountId){
102 | try {
103 | await Client.Relationship.create(session, accountId);
104 | return true
105 | } catch (e) {
106 | return false
107 | }
108 | }
109 |
110 | async function ngeComment(session, id, text){
111 | try {
112 | await Client.Comment.create(session, id, text);
113 | return true;
114 | } catch(e){
115 | return false;
116 | }
117 | }
118 |
119 | async function ngeLike(session, id){
120 | try{
121 | await Client.Like.create(session, id)
122 | return true;
123 | } catch(e) {
124 | return false;
125 | }
126 | }
127 |
128 | async function ngeDM(session, users, text){
129 | try{
130 | await Client.Thread.configureText(session, users, text)
131 | return true;
132 | } catch(e) {
133 | return false;
134 | }
135 | }
136 |
137 | const CommentLikeDM = async function(session, accountId, text){
138 | var result;
139 |
140 | const feed = new Client.Feed.UserMedia(session, accountId);
141 |
142 | try {
143 | result = await feed.get();
144 | } catch (err) {
145 | return chalk`{bold.red ${err}}`;
146 | }
147 |
148 | if (result.length > 0) {
149 | const task = [
150 | ngefollow(session, accountId),
151 | ngeComment(session, result[0].params.id, text),
152 | ngeDM(session, accountId, text),
153 | ngeLike(session, result[0].params.id)
154 | ]
155 | const [Follow,Comment,DM,Like] = await Promise.all(task);
156 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
157 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
158 | const printDM = DM ? chalk`{green DM}` : chalk`{red DM}`;
159 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
160 | return chalk`{bold.green ${printFollow},${printComment},${printDM},${printLike} [${text}]}`;
161 | }
162 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
163 | };
164 |
165 | const Followers = async function(session, id){
166 | const feed = new Client.Feed.AccountFollowers(session, id);
167 | try{
168 | const Pollowers = [];
169 | var cursor;
170 | do {
171 | if (cursor) feed.setCursor(cursor);
172 | const getPollowers = await feed.get();
173 | await Promise.all(getPollowers.map(async(akun) => {
174 | Pollowers.push(akun.id);
175 | }))
176 | cursor = await feed.getCursor();
177 | } while(feed.isMoreAvailable());
178 | return Promise.resolve(Pollowers);
179 | } catch(err){
180 | return Promise.reject(err);
181 | }
182 | }
183 |
184 | const Excute = async function(User, TargetUsername, Sleep, mysyntx){
185 | try {
186 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
187 | const doLogin = await Login(User);
188 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
189 | const getTarget = await Target(TargetUsername);
190 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
191 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
192 | console.log(chalk`{cyan [?] Try to Follow, Comment, DM, and Like Followers Target . . . \n}`)
193 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
194 | var TargetCursor;
195 | do {
196 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
197 | var TargetResult = await Targetfeed.get();
198 | TargetResult = _.chunk(TargetResult, mysyntx);
199 | for (let i = 0; i < TargetResult.length; i++) {
200 | var timeNow = new Date();
201 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
202 | await Promise.all(TargetResult[i].map(async(akun) => {
203 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
204 | var Text = fs.readFileSync('komen.txt', 'utf8').split('|');
205 | var ranText = Text[Math.floor(Math.random() * Text.length)];
206 | const ngeDo = await CommentLikeDM(doLogin.session, akun.id, ranText)
207 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
208 | } else {
209 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
210 | }
211 | }));
212 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
213 | await delay(Sleep);
214 | }
215 | TargetCursor = await Targetfeed.getCursor();
216 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
217 | await delay(Sleep);
218 | } while(Targetfeed.isMoreAvailable());
219 | } catch (err) {
220 | console.log(err);
221 | }
222 | }
223 |
224 | console.log(chalk`
225 | {bold.cyan
226 | —————————————————— [INFORMATION] ————————————————————
227 |
228 | [?] {bold.green FFTauto | Using Account/User Target!}
229 | [?] {bold.green Follow, Comment, DM & Like}
230 | [?] {bold.green Gunakan komen.txt untk komen!}
231 |
232 | —————————————————— [THANKS TO] ————————————————————
233 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
234 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
235 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
236 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
237 | —————————————————————————————————————————————————————
238 | What's new?
239 | 1. Input Target/delay Manual (ITTYW)
240 | —————————————————————————————————————————————————————}
241 | `);
242 | //ikiganteng
243 | inquirer.prompt(User)
244 | .then(answers => {
245 | Excute({
246 | username:answers.username,
247 | password:answers.password
248 | },answers.target,answers.sleep,answers.mysyntx);
249 | })
250 |
--------------------------------------------------------------------------------
/fftold.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'mysyntx',
41 | message:'[>] Input Total of Target You Want (ITTYW):',
42 | validate: function(value){
43 | value = value.match(/[0-9]/);
44 | if (value) return true;
45 | return 'Use Number Only!';
46 | }
47 | },
48 | {
49 | type:'input',
50 | name:'sleep',
51 | message:'[>] Insert Sleep (MiliSeconds):',
52 | validate: function(value){
53 | value = value.match(/[0-9]/);
54 | if (value) return true;
55 | return 'Delay is number';
56 | }
57 | }
58 | ]
59 |
60 | const Login = async function(User){
61 |
62 | const Device = new Client.Device(User.username);
63 | const Storage = new Client.CookieMemoryStorage();
64 | const session = new Client.Session(Device, Storage);
65 |
66 | try {
67 | await Client.Session.create(Device, Storage, User.username, User.password)
68 | const account = await session.getAccount();
69 | return Promise.resolve({session,account});
70 | } catch (err) {
71 | return Promise.reject(err);
72 | }
73 |
74 | }
75 |
76 | const Target = async function(username){
77 | const url = 'https://www.instagram.com/'+username+'/'
78 | const option = {
79 | url: url,
80 | method: 'GET'
81 | }
82 | try{
83 | const account = await rp(option);
84 | const data = S(account).between('').s
85 | const json = JSON.parse(data);
86 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
87 | return Promise.reject('Target is private Account');
88 | } else {
89 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
90 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
91 | return Promise.resolve({id,followers});
92 | }
93 | } catch (err){
94 | return Promise.reject(err);
95 | }
96 |
97 | }
98 |
99 | async function ngefollow(session,accountId){
100 | try {
101 | await Client.Relationship.create(session, accountId);
102 | return true
103 | } catch (e) {
104 | return false
105 | }
106 | }
107 |
108 | const Follow = async function(session, accountId){
109 | const task = [
110 | ngefollow(session, accountId),
111 | ]
112 | const [Follow] = await Promise.all(task);
113 | const printFollow = Follow ? chalk`{green Followed}` : chalk`{red Gagal Follow}`;
114 | return chalk`{bold.green ${printFollow}}`;
115 | };
116 |
117 | const Followers = async function(session, id){
118 | const feed = new Client.Feed.AccountFollowers(session, id);
119 | try{
120 | const Pollowers = [];
121 | var cursor;
122 | do {
123 | if (cursor) feed.setCursor(cursor);
124 | const getPollowers = await feed.get();
125 | await Promise.all(getPollowers.map(async(akun) => {
126 | Pollowers.push(akun.id);
127 | }))
128 | cursor = await feed.getCursor();
129 | } while(feed.isMoreAvailable());
130 | return Promise.resolve(Pollowers);
131 | } catch(err){
132 | return Promise.reject(err);
133 | }
134 | }
135 |
136 | const Excute = async function(User, TargetUsername, Sleep, mysyntx){
137 | try {
138 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
139 | const doLogin = await Login(User);
140 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
141 | const getTarget = await Target(TargetUsername);
142 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
143 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
144 | console.log(chalk`{cyan [?] Try to Follow Followers Target . . . \n}`)
145 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
146 | var TargetCursor;
147 | do {
148 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
149 | var TargetResult = await Targetfeed.get();
150 | TargetResult = _.chunk(TargetResult, mysyntx);
151 | for (let i = 0; i < TargetResult.length; i++) {
152 | var timeNow = new Date();
153 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
154 | await Promise.all(TargetResult[i].map(async(akun) => {
155 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
156 | const ngeDo = await Follow(doLogin.session, akun.id)
157 | console.log(chalk`[{magenta ${timeNow}}] {bold.cyan [>]}${akun.params.username} => ${ngeDo}`)
158 | } else {
159 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
160 | }
161 | }));
162 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
163 | await delay(Sleep);
164 | }
165 | TargetCursor = await Targetfeed.getCursor();
166 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
167 | await delay(Sleep);
168 | } while(Targetfeed.isMoreAvailable());
169 | } catch (err) {
170 | console.log(err);
171 | }
172 | }
173 |
174 | console.log(chalk`
175 | {bold.cyan
176 | —————————————————— [INFORMATION] ————————————————————
177 |
178 | [?] {bold.green FFTauto | Using Account/User Target!}
179 |
180 | —————————————————— [THANKS TO] ————————————————————
181 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
182 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
183 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
184 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
185 | —————————————————————————————————————————————————————
186 | What's new?
187 | 1. Input Target/delay Manual (ITTYW)
188 | —————————————————————————————————————————————————————}
189 | `);
190 |
191 | inquirer.prompt(User)
192 | .then(answers => {
193 | Excute({
194 | username:answers.username,
195 | password:answers.password
196 | },answers.target,answers.sleep,answers.mysyntx);
197 | })
198 |
--------------------------------------------------------------------------------
/fftsleep.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 | var fs = require('fs'),
9 | request = require('request');
10 |
11 | const User = [
12 | {
13 | type:'input',
14 | name:'username',
15 | message:'[>] Insert Username:',
16 | validate: function(value){
17 | if(!value) return 'Can\'t Empty';
18 | return true;
19 | }
20 | },
21 | {
22 | type:'password',
23 | name:'password',
24 | message:'[>] Insert Password:',
25 | mask:'*',
26 | validate: function(value){
27 | if(!value) return 'Can\'t Empty';
28 | return true;
29 | }
30 | },
31 | {
32 | type:'input',
33 | name:'target',
34 | message:'[>] Insert Username Target (Without @[at]):',
35 | validate: function(value){
36 | if(!value) return 'Can\'t Empty';
37 | return true;
38 | }
39 | },
40 | {
41 | type:'input',
42 | name:'mysyntx',
43 | message:'[>] Input Total of Target You Want (ITTYW):',
44 | validate: function(value){
45 | value = value.match(/[0-9]/);
46 | if (value) return true;
47 | return 'Use Number Only!';
48 | }
49 | },
50 | {
51 | type:'input',
52 | name:'sleep',
53 | message:'[>] Insert Sleep (MiliSeconds)(Use [|] if more than 1):',
54 | validate: function(value){
55 | value = value.match(/[0-9]/);
56 | if (value) return true;
57 | return 'Delay is number';
58 | }
59 | }
60 | ]
61 |
62 | const Login = async function(User){
63 |
64 | const Device = new Client.Device(User.username);
65 | const Storage = new Client.CookieMemoryStorage();
66 | const session = new Client.Session(Device, Storage);
67 |
68 | try {
69 | await Client.Session.create(Device, Storage, User.username, User.password)
70 | const account = await session.getAccount();
71 | return Promise.resolve({session,account});
72 | } catch (err) {
73 | return Promise.reject(err);
74 | }
75 |
76 | }
77 |
78 | const Target = async function(username){
79 | const url = 'https://www.instagram.com/'+username+'/'
80 | const option = {
81 | url: url,
82 | method: 'GET'
83 | }
84 | try{
85 | const account = await rp(option);
86 | const data = S(account).between('').s
87 | const json = JSON.parse(data);
88 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
89 | return Promise.reject('Target is private Account');
90 | } else {
91 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
92 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
93 | return Promise.resolve({id,followers});
94 | }
95 | } catch (err){
96 | return Promise.reject(err);
97 | }
98 |
99 | }
100 |
101 | async function ngefollow(session,accountId){
102 | try {
103 | await Client.Relationship.create(session, accountId);
104 | return true
105 | } catch (e) {
106 | return false
107 | }
108 | }
109 |
110 | async function ngeComment(session, id, text){
111 | try {
112 | await Client.Comment.create(session, id, text);
113 | return true;
114 | } catch(e){
115 | return false;
116 | }
117 | }
118 |
119 | async function ngeLike(session, id){
120 | try{
121 | await Client.Like.create(session, id)
122 | return true;
123 | } catch(e) {
124 | return false;
125 | }
126 | }
127 |
128 | const CommentAndLike = async function(session, accountId, text){
129 | var result;
130 |
131 | const feed = new Client.Feed.UserMedia(session, accountId);
132 |
133 | try {
134 | result = await feed.get();
135 | } catch (err) {
136 | return chalk`{bold.red ${err}}`;
137 | }
138 |
139 | if (result.length > 0) {
140 | const task = [
141 | ngefollow(session, accountId),
142 | ngeComment(session, result[0].params.id, text),
143 | ngeLike(session, result[0].params.id)
144 | ]
145 | const [Follow,Comment,Like] = await Promise.all(task);
146 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
147 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
148 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
149 | return chalk`{bold.green ${printFollow},${printComment},${printLike} [${text}]}`;
150 | }
151 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
152 | };
153 |
154 | const Followers = async function(session, id){
155 | const feed = new Client.Feed.AccountFollowers(session, id);
156 | try{
157 | const Pollowers = [];
158 | var cursor;
159 | do {
160 | if (cursor) feed.setCursor(cursor);
161 | const getPollowers = await feed.get();
162 | await Promise.all(getPollowers.map(async(akun) => {
163 | Pollowers.push(akun.id);
164 | }))
165 | cursor = await feed.getCursor();
166 | } while(feed.isMoreAvailable());
167 | return Promise.resolve(Pollowers);
168 | } catch(err){
169 | return Promise.reject(err);
170 | }
171 | }
172 |
173 | const Excute = async function(User, TargetUsername, Sleep, mysyntx){
174 | try {
175 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
176 | const doLogin = await Login(User);
177 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
178 | const getTarget = await Target(TargetUsername);
179 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
180 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
181 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
182 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
183 | var TargetCursor;
184 | do {
185 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
186 | var TargetResult = await Targetfeed.get();
187 | TargetResult = _.chunk(TargetResult, mysyntx);
188 | for (let i = 0; i < TargetResult.length; i++) {
189 | var timeNow = new Date();
190 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
191 | await Promise.all(TargetResult[i].map(async(akun) => {
192 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
193 | var Text = fs.readFileSync('komen.txt', 'utf8').split('|');
194 | var ranText = Text[Math.floor(Math.random() * Text.length)];
195 | const ngeDo = await CommentAndLike(doLogin.session, akun.id, ranText)
196 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
197 | } else {
198 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
199 | }
200 | }));
201 | var ranSleep = Sleep[Math.floor(Math.random() * Sleep.length)];
202 | console.log(chalk`{yellow \n [#][>] Delay For ${ranSleep} MiliSeconds [<][#] \n}`);
203 | await delay(ranSleep);
204 | }
205 | TargetCursor = await Targetfeed.getCursor();
206 | var ranSleep = Sleep[Math.floor(Math.random() * Sleep.length)];
207 | console.log(chalk`{yellow \n [#][>] Delay For ${ranSleep} MiliSeconds [<][#] \n}`);
208 | await delay(ranSleep);
209 | } while(Targetfeed.isMoreAvailable());
210 | } catch (err) {
211 | console.log(err);
212 | }
213 | }
214 |
215 | console.log(chalk`
216 | {bold.cyan
217 | —————————————————— [INFORMATION] ————————————————————
218 |
219 | [?] {bold.green FFTauto | Using Account/User Target!}
220 | [?] {bold.green Gunakan komen.txt untk komen!}
221 |
222 |
223 | —————————————————— [THANKS TO] ————————————————————
224 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
225 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
226 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
227 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
228 | —————————————————————————————————————————————————————
229 | What's new?
230 | 1. Input Target/delay Manual (ITTYW)
231 | —————————————————————————————————————————————————————}
232 | `);
233 |
234 | inquirer.prompt(User)
235 | .then(answers => {
236 | Excute({
237 | username:answers.username,
238 | password:answers.password
239 | },answers.target,answers.sleep,answers.mysyntx);
240 | })
241 |
--------------------------------------------------------------------------------
/fl.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'mysyntx',
41 | message:'[>] Input Total of Target You Want (ITTYW):',
42 | validate: function(value){
43 | value = value.match(/[0-9]/);
44 | if (value) return true;
45 | return 'Use Number Only!';
46 | }
47 | },
48 | {
49 | type:'input',
50 | name:'sleep',
51 | message:'[>] Insert Sleep (MiliSeconds):',
52 | validate: function(value){
53 | value = value.match(/[0-9]/);
54 | if (value) return true;
55 | return 'Delay is number';
56 | }
57 | }
58 | ]
59 |
60 | const Login = async function(User){
61 |
62 | const Device = new Client.Device(User.username);
63 | const Storage = new Client.CookieMemoryStorage();
64 | const session = new Client.Session(Device, Storage);
65 |
66 | try {
67 | await Client.Session.create(Device, Storage, User.username, User.password)
68 | const account = await session.getAccount();
69 | return Promise.resolve({session,account});
70 | } catch (err) {
71 | return Promise.reject(err);
72 | }
73 |
74 | }
75 |
76 | const Target = async function(username){
77 | const url = 'https://www.instagram.com/'+username+'/'
78 | const option = {
79 | url: url,
80 | method: 'GET'
81 | }
82 | try{
83 | const account = await rp(option);
84 | const data = S(account).between('').s
85 | const json = JSON.parse(data);
86 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
87 | return Promise.reject('Target is private Account');
88 | } else {
89 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
90 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
91 | return Promise.resolve({id,followers});
92 | }
93 | } catch (err){
94 | return Promise.reject(err);
95 | }
96 |
97 | }
98 |
99 | async function ngefollow(session,accountId){
100 | try {
101 | await Client.Relationship.create(session, accountId);
102 | return true
103 | } catch (e) {
104 | return false
105 | }
106 | }
107 |
108 | async function ngeComment(session, id, text){
109 | try {
110 | await Client.Comment.create(session, id, text);
111 | return true;
112 | } catch(e){
113 | return false;
114 | }
115 | }
116 |
117 | async function ngeLike(session, id){
118 | try{
119 | await Client.Like.create(session, id)
120 | return true;
121 | } catch(e) {
122 | return false;
123 | }
124 | }
125 |
126 | const FollowAndLike = async function(session, accountId){
127 | var result;
128 |
129 | const feed = new Client.Feed.UserMedia(session, accountId);
130 |
131 | try {
132 | result = await feed.get();
133 | } catch (err) {
134 | return chalk`{bold.red ${err}}`;
135 | }
136 |
137 | if (result.length > 0) {
138 | const task = [
139 | ngefollow(session, accountId),
140 | ngeLike(session, result[0].params.id)
141 | ]
142 | const [Follow,Like] = await Promise.all(task);
143 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
144 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
145 | return chalk`{bold.green ${printFollow} | ${printLike} }`;
146 | }
147 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
148 | };
149 |
150 | const Followers = async function(session, id){
151 | const feed = new Client.Feed.AccountFollowers(session, id);
152 | try{
153 | const Pollowers = [];
154 | var cursor;
155 | do {
156 | if (cursor) feed.setCursor(cursor);
157 | const getPollowers = await feed.get();
158 | await Promise.all(getPollowers.map(async(akun) => {
159 | Pollowers.push(akun.id);
160 | }))
161 | cursor = await feed.getCursor();
162 | } while(feed.isMoreAvailable());
163 | return Promise.resolve(Pollowers);
164 | } catch(err){
165 | return Promise.reject(err);
166 | }
167 | }
168 |
169 | const Excute = async function(User, TargetUsername, Sleep, mysyntx){
170 | try {
171 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
172 | const doLogin = await Login(User);
173 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
174 | const getTarget = await Target(TargetUsername);
175 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
176 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
177 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
178 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
179 | var TargetCursor;
180 | do {
181 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
182 | var TargetResult = await Targetfeed.get();
183 | TargetResult = _.chunk(TargetResult, mysyntx);
184 | for (let i = 0; i < TargetResult.length; i++) {
185 | var timeNow = new Date();
186 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
187 | await Promise.all(TargetResult[i].map(async(akun) => {
188 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
189 | const ngeDo = await FollowAndLike(doLogin.session, akun.id)
190 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
191 | } else {
192 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
193 | }
194 | }));
195 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
196 | await delay(Sleep);
197 | }
198 | TargetCursor = await Targetfeed.getCursor();
199 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
200 | await delay(Sleep);
201 | } while(Targetfeed.isMoreAvailable());
202 | } catch (err) {
203 | console.log(err);
204 | }
205 | }
206 |
207 | console.log(chalk`
208 | {bold.cyan
209 | —————————————————— [INFORMATION] ————————————————————
210 |
211 | [?] {bold.green FFTauto | Using Account/User Target!}
212 |
213 | —————————————————— [THANKS TO] ————————————————————
214 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
215 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
216 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
217 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
218 | —————————————————————————————————————————————————————
219 | What's new?
220 | 1. Input Target/delay Manual (ITTYW)
221 | —————————————————————————————————————————————————————}
222 | `);
223 | //ikiganteng
224 | inquirer.prompt(User)
225 | .then(answers => {
226 | Excute({
227 | username:answers.username,
228 | password:answers.password
229 | },answers.target,answers.sleep,answers.mysyntx);
230 | })
231 |
--------------------------------------------------------------------------------
/flaauto.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const chalk = require('chalk');
5 | const delay = require('delay');
6 | const _ = require('lodash');
7 | const inquirer = require('inquirer');
8 |
9 | const question = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'locationId',
32 | message:'[>] Insert Location ID:',
33 | validate: function(value){
34 | value = value.match(/[0-9]/);
35 | if (value) return true;
36 | return 'Delay is number';
37 | }
38 | },
39 | {
40 | type:'input',
41 | name:'text',
42 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
43 | validate: function(value){
44 | if(!value) return 'Can\'t Empty';
45 | return true;
46 | }
47 | },
48 | {
49 | type:'input',
50 | name:'sleep',
51 | message:'[>] Insert Sleep (MiliSeconds):',
52 | validate: function(value){
53 | value = value.match(/[0-9]/);
54 | if (value) return true;
55 | return 'Delay is number';
56 | }
57 | }
58 | ]
59 |
60 |
61 | const doLogin = async (params) => {
62 | const Device = new Client.Device(params.username);
63 | const Storage = new Client.CookieMemoryStorage();
64 | const session = new Client.Session(Device, Storage);
65 | try {
66 | await Client.Session.create(Device, Storage, params.username, params.password)
67 | const account = await session.getAccount();
68 | return Promise.resolve({session,account});
69 | } catch (err) {
70 | return Promise.reject(err);
71 | }
72 | }
73 |
74 | const grabFollowers = async (session, id) => {
75 | const feed = new Client.Feed.AccountFollowers(session, id);
76 | try{
77 | feed.map = item => item.params;
78 | return Promise.resolve(feed.all());
79 | }catch (e){
80 | return Promise.reject(err);
81 | }
82 | }
83 |
84 | const doFollow = async (session, id) => {
85 | try {
86 | await Client.Relationship.create(session, id);
87 | return true;
88 | } catch (e) {
89 | return false;
90 | }
91 | }
92 |
93 | const doComment = async (session, id, text) => {
94 | try {
95 | await Client.Comment.create(session, id, text);
96 | return true;
97 | } catch(e){
98 | return false;
99 | }
100 | }
101 |
102 | const doLike = async (session, id) => {
103 | try{
104 | await Client.Like.create(session, id);
105 | return true;
106 | } catch(e) {
107 | return false;
108 | }
109 | }
110 |
111 | const doAction = async (session, params, text) => {
112 | const task = [
113 | doFollow(session, params.account.id),
114 | doLike(session, params.id),
115 | doComment(session, params.id, text)
116 | ];
117 | var [Follow,Like,Comment] = await Promise.all(task);
118 | Follow = Follow ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
119 | Comment = Comment ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
120 | Like = Like ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
121 | return chalk`[Follow: ${Follow}] [Like: ${Like}] [Comment: ${Comment} ({cyan ${text}})]`;
122 | }
123 |
124 | const doMain = async (account, locationid, sleep, text) => {
125 | console.log(chalk`\n{green [?] Try to Login ....}`);
126 | account = await doLogin(account);
127 | console.log(chalk`{bold.green [!] Login Success!}`)
128 | const feed = new Client.Feed.LocationMedia(account.session, locationid);
129 | console.log(chalk`{green [?] Try Follow, Like and Comment All Account In LocationId: ${locationid}\n}`);
130 | try {
131 | var cursor;
132 | var count = 0;
133 | do {
134 | if (cursor) feed.setCursor(cursor);
135 | count++;
136 | const media = await feed.get();
137 | console.log(chalk`[Cursor: {bold.cyan ${cursor ? cursor : 'null'}} | Count: {bold.cyan ${count}} | Total Media: {bold.cyan ${media.length}} | Delay: ${sleep} MiliSeconds ]`);
138 | var timeNow = new Date();
139 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
140 | await Promise.all(media.map(async(media)=>{
141 | const ranText = text[Math.floor(Math.random() * text.length)];
142 | const resultAction = await doAction(account.session, media.params, ranText);
143 | console.log(chalk`[{magenta ${timeNow}}] ${media.id} | {cyanBright @${media.params.account.username}} => ${resultAction}`);
144 | }))
145 | await delay(sleep);
146 | cursor = await feed.getCursor();
147 | } while(feed.isMoreAvailable());
148 | } catch(e) {
149 | console.log(e);
150 | }
151 | }
152 |
153 | console.log(chalk`
154 | {bold.cyan
155 | —————————————————— [INFORMATION] ————————————————————
156 |
157 | [?] {bold.green FLA | Using Location Media Target!}
158 |
159 | —————————————————— [THANKS TO] ————————————————————
160 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
161 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
162 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
163 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
164 | —————————————————————————————————————————————————————}
165 | `);
166 |
167 | inquirer.prompt(question)
168 | .then(answers => {
169 | var text = answers.text.split('|');
170 | doMain({
171 | username:answers.username,
172 | password:answers.password}, answers.locationId, answers.sleep, text);
173 | })
174 | .catch(e => {
175 | console.log(e);
176 | })
177 |
--------------------------------------------------------------------------------
/flm.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Link Media:',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 | const Login = async function(User){
70 |
71 | const Device = new Client.Device(User.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 |
75 | try {
76 | await Client.Session.create(Device, Storage, User.username, User.password)
77 | const account = await session.getAccount();
78 | return Promise.resolve({session,account});
79 | } catch (err) {
80 | return Promise.reject(err);
81 | }
82 |
83 | }
84 |
85 | const Target = async function(link){
86 | const url = link+'?__a=1'
87 | const option = {
88 | url: url,
89 | method: 'GET'
90 | }
91 | try{
92 | const account = await rp(option);
93 | const data = S(account).between('').s
94 | const json = JSON.parse(data);
95 | return Promise.resolve(json.entry_data.PostPage[0].graphql.shortcode_media.id);
96 | } catch (err){
97 | return Promise.reject(err);
98 | }
99 |
100 | }
101 |
102 | async function ngefollow(session,accountId){
103 | try {
104 | await Client.Relationship.create(session, accountId);
105 | return true
106 | } catch (e) {
107 | return false
108 | }
109 | }
110 |
111 | async function ngeComment(session, id, text){
112 | try {
113 | await Client.Comment.create(session, id, text);
114 | return true;
115 | } catch(e){
116 | return false;
117 | }
118 | }
119 |
120 | async function ngeLike(session, id){
121 | try{
122 | await Client.Like.create(session, id)
123 | return true;
124 | } catch(e) {
125 | return false;
126 | }
127 | }
128 |
129 | const CommentAndLike = async function(session, accountId, text){
130 | var result;
131 |
132 | const feed = new Client.Feed.UserMedia(session, accountId);
133 |
134 | try {
135 | result = await feed.get();
136 | } catch (err) {
137 | return chalk`{bold.red ${err}}`;
138 | }
139 |
140 | if (result.length > 0) {
141 | if (result[0].params.hasLiked) {
142 | return chalk`{bold.blue Already Follow,Liked & Comment}`;
143 | }
144 | const task = [
145 | ngefollow(session, accountId),
146 | ngeComment(session, result[0].params.id, text),
147 | ]
148 | const [Follow,Comment,Like] = await Promise.all(task);
149 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
150 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
151 | return chalk`{bold.green ${printFollow},${printComment} [${text}]}`;
152 | }
153 | return chalk`{bold.cyan Timeline Kosong (SKIPPED)}`
154 | };
155 |
156 | const Followers = async function(session, id){
157 | const feed = new Client.Feed.AccountFollowers(session, id);
158 | try{
159 | const Pollowers = [];
160 | var cursor;
161 | do {
162 | if (cursor) feed.setCursor(cursor);
163 | const getPollowers = await feed.get();
164 | await Promise.all(getPollowers.map(async(akun) => {
165 | Pollowers.push(akun.id);
166 | }))
167 | cursor = await feed.getCursor();
168 | } while(feed.isMoreAvailable());
169 | return Promise.resolve(Pollowers);
170 | } catch(err){
171 | return Promise.reject(err);
172 | }
173 | }
174 |
175 | const Excute = async function(User, TargetUsername, Text, Sleep, mysyntx){
176 | try {
177 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
178 | const doLogin = await Login(User);
179 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get Link & Media ID Target . . .}`)
180 | const getTarget = await Target(TargetUsername);
181 | console.log(chalk`{green [!] ${TargetUsername} [${getTarget}]}`);
182 | const getFollowers = await Followers(doLogin.session, doLogin.account.id);
183 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
184 | var TargetResult = await Client.Media.likers(doLogin.session, getTarget);
185 | TargetResult = _.chunk(TargetResult, mysyntx);
186 | for (var i = 0; i < TargetResult.length; i++) {
187 | var timeNow = new Date();
188 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
189 | await Promise.all(TargetResult[i].map(async(akun) => {
190 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
191 | var ranText = Text[Math.floor(Math.random() * Text.length)];
192 | const ngeDo = await CommentAndLike(doLogin.session, akun.id, ranText)
193 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]} @${akun.params.username} => ${ngeDo}`)
194 | } else {
195 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIPPED]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
196 | }
197 | }));
198 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
199 | await delay(Sleep);
200 | }
201 | } catch (err) {
202 | console.log(err);
203 | }
204 | }
205 |
206 | console.log(chalk`
207 | {bold.cyan
208 | —————————————————— [INFORMATION] ————————————————————
209 |
210 | [?] {bold.green FLMauto | Using Media/Link Target}
211 |
212 | —————————————————— [THANKS TO] ————————————————————
213 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
214 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
215 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
216 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
217 | —————————————————————————————————————————————————————
218 | What's new?
219 | 1. Input Target/delay Manual (ITTYW)
220 | —————————————————————————————————————————————————————}
221 | `);
222 |
223 | inquirer.prompt(User)
224 | .then(answers => {
225 | var text = answers.text.split('|');
226 | Excute({
227 | username:answers.username,
228 | password:answers.password
229 | },answers.target,text,answers.sleep,answers.mysyntx);
230 | })
231 |
--------------------------------------------------------------------------------
/flmauto.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Link Media:',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 | const Login = async function(User){
70 |
71 | const Device = new Client.Device(User.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 |
75 | try {
76 | await Client.Session.create(Device, Storage, User.username, User.password)
77 | const account = await session.getAccount();
78 | return Promise.resolve({session,account});
79 | } catch (err) {
80 | return Promise.reject(err);
81 | }
82 |
83 | }
84 |
85 | const Target = async function(link){
86 | const url = link+'?__a=1'
87 | const option = {
88 | url: url,
89 | method: 'GET'
90 | }
91 | try{
92 | const account = await rp(option);
93 | const data = S(account).between('').s
94 | const json = JSON.parse(data);
95 | return Promise.resolve(json.entry_data.PostPage[0].graphql.shortcode_media.id);
96 | } catch (err){
97 | return Promise.reject(err);
98 | }
99 |
100 | }
101 |
102 | async function ngefollow(session,accountId){
103 | try {
104 | await Client.Relationship.create(session, accountId);
105 | return true
106 | } catch (e) {
107 | return false
108 | }
109 | }
110 |
111 | async function ngeComment(session, id, text){
112 | try {
113 | await Client.Comment.create(session, id, text);
114 | return true;
115 | } catch(e){
116 | return false;
117 | }
118 | }
119 |
120 | async function ngeLike(session, id){
121 | try{
122 | await Client.Like.create(session, id)
123 | return true;
124 | } catch(e) {
125 | return false;
126 | }
127 | }
128 |
129 | const CommentAndLike = async function(session, accountId, text){
130 | var result;
131 |
132 | const feed = new Client.Feed.UserMedia(session, accountId);
133 |
134 | try {
135 | result = await feed.get();
136 | } catch (err) {
137 | return chalk`{bold.red ${err}}`;
138 | }
139 |
140 | if (result.length > 0) {
141 | if (result[0].params.hasLiked) {
142 | return chalk`{bold.blue Already Follow,Liked & Comment}`;
143 | }
144 | const task = [
145 | ngefollow(session, accountId),
146 | ngeComment(session, result[0].params.id, text),
147 | ngeLike(session, result[0].params.id)
148 | ]
149 | const [Follow,Comment,Like] = await Promise.all(task);
150 | const printFollow = Follow ? chalk`{green Follow}` : chalk`{red Follow}`;
151 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
152 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
153 | return chalk`{bold.green ${printFollow},${printComment},${printLike} [${text}]}`;
154 | }
155 | return chalk`{bold.cyan Timeline Kosong (SKIPPED)}`
156 | };
157 |
158 | const Followers = async function(session, id){
159 | const feed = new Client.Feed.AccountFollowers(session, id);
160 | try{
161 | const Pollowers = [];
162 | var cursor;
163 | do {
164 | if (cursor) feed.setCursor(cursor);
165 | const getPollowers = await feed.get();
166 | await Promise.all(getPollowers.map(async(akun) => {
167 | Pollowers.push(akun.id);
168 | }))
169 | cursor = await feed.getCursor();
170 | } while(feed.isMoreAvailable());
171 | return Promise.resolve(Pollowers);
172 | } catch(err){
173 | return Promise.reject(err);
174 | }
175 | }
176 |
177 | const Excute = async function(User, TargetUsername, Text, Sleep, mysyntx){
178 | try {
179 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
180 | const doLogin = await Login(User);
181 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get Link & Media ID Target . . .}`)
182 | const getTarget = await Target(TargetUsername);
183 | console.log(chalk`{green [!] ${TargetUsername} [${getTarget}]}`);
184 | const getFollowers = await Followers(doLogin.session, doLogin.account.id);
185 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
186 | var TargetResult = await Client.Media.likers(doLogin.session, getTarget);
187 | TargetResult = _.chunk(TargetResult, mysyntx);
188 | for (var i = 0; i < TargetResult.length; i++) {
189 | var timeNow = new Date();
190 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
191 | await Promise.all(TargetResult[i].map(async(akun) => {
192 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
193 | var ranText = Text[Math.floor(Math.random() * Text.length)];
194 | const ngeDo = await CommentAndLike(doLogin.session, akun.id, ranText)
195 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]} @${akun.params.username} => ${ngeDo}`)
196 | } else {
197 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIPPED]}${akun.params.username} => PRIVATE OR ALREADY FOLLOWED`)
198 | }
199 | }));
200 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
201 | await delay(Sleep);
202 | }
203 | } catch (err) {
204 | console.log(err);
205 | }
206 | }
207 |
208 | console.log(chalk`
209 | {bold.cyan
210 | —————————————————— [INFORMATION] ————————————————————
211 |
212 | [?] {bold.green FLMauto | Using Media/Link Target}
213 |
214 | —————————————————— [THANKS TO] ————————————————————
215 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
216 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
217 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
218 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
219 | —————————————————————————————————————————————————————
220 | What's new?
221 | 1. Input Target/delay Manual (ITTYW)
222 | —————————————————————————————————————————————————————}
223 | `);
224 | //ikiganteng
225 | inquirer.prompt(User)
226 | .then(answers => {
227 | var text = answers.text.split('|');
228 | Excute({
229 | username:answers.username,
230 | password:answers.password
231 | },answers.target,text,answers.sleep,answers.mysyntx);
232 | })
233 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | //const insta = require('./func.js');
4 | const Client = require('instagram-private-api').V1;
5 | const delay = require('delay');
6 | const chalk = require('chalk');
7 | const inquirer = require('inquirer');
8 | //const Spinner = require('cli-spinner').Spinner;
9 |
10 | const questionTools = [
11 | {
12 | type:"list",
13 | name:"Tools",
14 | message:"Select tools:",
15 | choices:
16 | [
17 | "[1] Botlike v1",
18 | "[2] Botlike v2",
19 | "[3] Delete All Media",
20 | "[4] Unfollow All Following",
21 | "[5] Unfollow Not Followback",
22 | "[6] Follow Followers Target",
23 | "[7] Follow Account By Media",
24 | "[8] Follow Account By Hastag",
25 | "[9] Follow Account By Location",
26 | "[10] Follow Followers Target No Like",
27 | "[11] Follow Followers Target No Comment & Like",
28 | "[12] Bom Like Post Target",
29 | "[12] Bom Komen Post Target",
30 | "\n"
31 | ]
32 | }
33 | ]
34 |
35 | const main = async () => {
36 | var spinner;
37 | try{
38 | var toolChoise = await inquirer.prompt(questionTools);
39 | toolChoise = toolChoise.Tools;
40 | switch(toolChoise){
41 | case "[1] Botlike v1":
42 | const botlike = require('./botlike.js');
43 | await botlike();
44 | break;
45 |
46 | case "[2] Botlike v2":
47 | const botlike2 = require('./botlike2.js');
48 | await botlike2();
49 | break;
50 |
51 | case "[3] Delete All Media":
52 | const dellallphoto = require('./dellallphoto.js');
53 | await dellallphoto();
54 | break;
55 |
56 | case "[4] Unfollow All Following":
57 | const unfollall = require('./unfollall.js');
58 | await unfollall();
59 | break;
60 |
61 | case "[5] Unfollow Not Followback":
62 | const unfollnotfollback = require('./unfollnotfollback.js');
63 | await unfollnotfollback();
64 | break;
65 |
66 | case "[6] Follow Followers Target":
67 | const fftauto = require('./fftauto.js');
68 | await fftauto();
69 | break;
70 |
71 | case "[7] Follow Account By Media":
72 | const flmauto = require('./flmauto.js');
73 | await flmauto();
74 | break;
75 |
76 | case "[8] Follow Account By Hastag":
77 | const fah = require('./fah.js');
78 | await fah();
79 | break;
80 |
81 | case "[9] Follow Account By Location":
82 | const flaauto = require('./flaauto.js');
83 | await flaauto();
84 | break;
85 |
86 | case "[10] Follow Followers Target No Like":
87 | const fft = require('./fft.js');
88 | await fft();
89 | break;
90 |
91 | case "[11] Follow Followers Target No Comment & Like":
92 | const fftold = require('./fftold.js');
93 | await fftold();
94 | break;
95 | case "[12] Bom Like Post Target":
96 | const bomlike = require('./bomlike.js');
97 | await bomlike();
98 | break;
99 | case "[13] Bom Komen Post Target":
100 | const bomkomen = require('./bomkomen.js');
101 | await bomkomen();
102 | break;
103 | default:
104 | console.log('\nERROR:\n[?] Aw, Snap! \n[!] Something went wrong while displaying this program!\n[!] Please try again!');
105 | }
106 | } catch(e) {
107 | //spinner.stop(true);
108 | //console.log(e);
109 | }
110 | }
111 |
112 | console.log(chalk`
113 | {bold.cyan
114 | ╦┌┐┌┌─┐┌┬┐┌─┐┌─┐┬─┐┌─┐┌┬┐
115 | ║│││└─┐ │ ├─┤│ ┬├┬┘├─┤│││
116 | ╩┘└┘└─┘ ┴ ┴ ┴└─┘┴└─┴ ┴┴ ┴
117 | ╔╦╗┌─┐┌─┐┬ ┌─┐ © 2018
118 | ║ │ ││ ││ └─┐ SGBTeam
119 | ╩ └─┘└─┘┴─┘└─┘ -------
120 | }
121 | `);
122 |
123 | main()
124 |
--------------------------------------------------------------------------------
/komen.txt:
--------------------------------------------------------------------------------
1 | like back dan Follow back ya🙏 | follback dan like back🙏 | follback ya👌 | salken, follback dan like back ya👍 | salam kenal follback dan likeback ya kak👍 | orang mana? follback dan likeback ya👍 | salken ya, boleh minta follback dan likeback? | follback yo | follbackk | follback like back ya😀 | followback ya | udah aku follow dan like bisa minta follback dan likeback gak hehe | follback dan likeback yo kak udah difollow kok | follback dan likeback kak sudah aku follow dan like | bisa minta follow back kak hehe? | followback yo 😀 | salken, follback ya 🙂 | salken, follback aku yah | salken, btw follback ya | salken, follback juga yah hehe | salam kenal, follback yah hehe | bisa follback ? | follback yow | follback yapp | Follback hihihihi | follbackk saya ya 🙂 | Orang mana kak, like back dan Follback ya | Salam kenal kak hehe likeback dan follback ya | Salkus ya kak like back dan follback ya | Mari berteman kak,like back dan follback ya | Orang mana kak, Salam kenal ya, likeback dan Follback yaa | Orang mana kak?, likeback dan Follback dong | Namanya siapa, Salam kenal ya, like back dan follback ya | Saling follback ya kak, makasih | Orang mana kak, likeback dan Follbackdong hehehe | halo kak salken ya,, like back dan Follback ya | Mari berteman ya kak saling dan follback hehe | Kenalan dong kak heheh likeback dan follback ya rafz1104 | Likeback dan follback hihi salam kenal ya rafz1104 | Hallo kak salam kenal ya hehe likeback dan follback juga ya | Jangan lupa dukung Channel saya di Youtube, Class NIGHTCORE | Dukung Youtube Class NIGHTCORE | Auto Follow by youtube Class NIGHTCORE | Hai saya menggunakan auto follow dari Youtube Class NIGHTCORE, jangan lupa subscribe yah | auto follow tutorial by Class NIGHTCORE
2 |
--------------------------------------------------------------------------------
/komenlike.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 | var fs = require('fs'),
9 | request = require('request');
10 |
11 | const question = [
12 | {
13 | type:'input',
14 | name:'username',
15 | message:'[>] Insert Username:',
16 | validate: function(value){
17 | if(!value) return 'Can\'t Empty';
18 | return true;
19 | }
20 | },
21 | {
22 | type:'password',
23 | name:'password',
24 | message:'[>] Insert Password:',
25 | mask:'*',
26 | validate: function(value){
27 | if(!value) return 'Can\'t Empty';
28 | return true;
29 | }
30 | },
31 | {
32 | type:'input',
33 | name:'hastag',
34 | message:'[>] Insert Hashtag (Without #):',
35 | validate: function(value){
36 | if(!value) return 'Can\'t Empty';
37 | return true;
38 | }
39 | },
40 | {
41 | type:'input',
42 | name:'text',
43 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
44 | validate: function(value){
45 | if(!value) return 'Can\'t Empty';
46 | return true;
47 | }
48 | },
49 | {
50 | type:'input',
51 | name:'mysyntx',
52 | message:'[>] Input Total of Target You Want (ITTYW):',
53 | validate: function(value){
54 | value = value.match(/[0-9]/);
55 | if (value) return true;
56 | return 'Use Number Only!';
57 | }
58 | },
59 | {
60 | type:'input',
61 | name:'sleep',
62 | message:'[>] Insert Sleep (In MiliSeconds)',
63 | validate: function(value){
64 | value = value.match(/[0-9]/);
65 | if (value) return true;
66 | return 'Delay is number';
67 | }
68 | }
69 | ]
70 |
71 | const doLogin = async (params) => {
72 | const Device = new Client.Device(params.username);
73 | const Storage = new Client.CookieMemoryStorage();
74 | const session = new Client.Session(Device, Storage);
75 | try {
76 | await Client.Session.create(Device, Storage, params.username, params.password)
77 | const account = await session.getAccount();
78 | return Promise.resolve({session,account});
79 | } catch (err) {
80 | return Promise.reject(err);
81 | }
82 | }
83 |
84 | async function ngeComment(session, id, text){
85 | try {
86 | await Client.Comment.create(session, id, text);
87 | return true;
88 | } catch(e){
89 | return false;
90 | }
91 | }
92 |
93 | async function ngeLike(session, id){
94 | try{
95 | await Client.Like.create(session, id)
96 | return true;
97 | } catch(e) {
98 | return false;
99 | }
100 | }
101 |
102 | const doAction = async (session, params, text) => {
103 | if (params.hasLiked) {
104 | return chalk`{bold.blue Already Liked & Comment}`;
105 | }
106 | const task = [
107 | ngeLike(session, params.id),
108 | ngeComment(session, params.id, text)
109 | ];
110 | var [Like,Comment] = await Promise.all(task);
111 | Comment = Comment ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
112 | Like = Like ? chalk`{bold.green SUKSES}` : chalk`{bold.red GAGAL}`;
113 | return chalk`[Like: ${Like}] [Comment: ${Comment} ({cyan ${text}})]`;
114 | }
115 |
116 |
117 | const doMain = async (account, hastag, sleep, text, mysyntx) => {
118 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
119 | account = await doLogin(account);
120 | console.log(chalk`{green [!] Login Success!}`)
121 | const feed = new Client.Feed.TaggedMedia(account.session, hastag);
122 | console.log(chalk`{cyan [?] Like and Comment All Account In Hashtag: #${hastag}}`);
123 | try {
124 | var cursor;
125 | var count = 0;
126 | console.log(chalk`{yellow \n [#][>] START WITH RATIO ${mysyntx}/${sleep} MiliSeconds [<][#] \n}`)
127 | do {
128 | if (cursor) feed.setCursor(cursor);
129 | count++;
130 | var media = await feed.get();
131 | media = _.chunk(media, mysyntx);
132 | for (media of media) {
133 | var timeNow = new Date();
134 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
135 | await Promise.all(media.map(async(media)=>{
136 | const ranText = text[Math.floor(Math.random() * text.length)];
137 | const resultAction = await doAction(account.session, media.params, ranText);
138 | console.log(chalk`[{magenta ${timeNow}}] {cyanBright @${media.params.account.username}} \n=> ${resultAction}`);
139 | }))
140 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`)
141 | await delay(sleep);
142 | }
143 | cursor = await feed.getCursor();
144 | console.log(chalk`[Cursor: {bold.cyan ${cursor ? cursor : 'null'}} | Count: {bold.cyan ${count}} | Total Media: {bold.cyan ${media.length}} | Delay: ${sleep} MiliSeconds ]`);
145 | } while(feed.isMoreAvailable());
146 | } catch(e) {
147 | console.log(e);
148 | }
149 | }
150 |
151 | console.log(chalk`
152 | {bold.cyan
153 | —————————————————— [INFORMATION] ————————————————————
154 |
155 | [?] {bold.green Comment & Like | Using Hastag Target!}
156 | [?] {bold.green Gunakan komen.txt untk komen!}
157 |
158 | —————————————————— [THANKS TO] ————————————————————
159 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
160 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
161 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
162 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
163 | —————————————————————————————————————————————————————
164 | What's new?
165 | 1. Input Target/delay Manual (ITTYW)
166 | —————————————————————————————————————————————————————}
167 | `);
168 | //ikiganteng
169 | inquirer.prompt(question)
170 | .then(answers => {
171 | var text = answers.text.split('|');
172 | var hastag = answers.hastag.split('|');
173 | doMain({
174 | username:answers.username,
175 | password:answers.password},hastag,answers.sleep,text,answers.mysyntx);
176 | })
177 | .catch(e => {
178 | console.log(e);
179 | })
180 |
--------------------------------------------------------------------------------
/likekomen.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const S = require('string');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'target',
32 | message:'[>] Insert Username Target (Without @[at]):',
33 | validate: function(value){
34 | if(!value) return 'Can\'t Empty';
35 | return true;
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'text',
41 | message:'[>] Insert Text Comment (Use [|] if more than 1):',
42 | validate: function(value){
43 | if(!value) return 'Can\'t Empty';
44 | return true;
45 | }
46 | },
47 | {
48 | type:'input',
49 | name:'mysyntx',
50 | message:'[>] Input Total of Target You Want (ITTYW):',
51 | validate: function(value){
52 | value = value.match(/[0-9]/);
53 | if (value) return true;
54 | return 'Use Number Only!';
55 | }
56 | },
57 | {
58 | type:'input',
59 | name:'sleep',
60 | message:'[>] Insert Sleep (MiliSeconds):',
61 | validate: function(value){
62 | value = value.match(/[0-9]/);
63 | if (value) return true;
64 | return 'Delay is number';
65 | }
66 | }
67 | ]
68 |
69 | const Login = async function(User){
70 |
71 | const Device = new Client.Device(User.username);
72 | const Storage = new Client.CookieMemoryStorage();
73 | const session = new Client.Session(Device, Storage);
74 |
75 | try {
76 | await Client.Session.create(Device, Storage, User.username, User.password)
77 | const account = await session.getAccount();
78 | return Promise.resolve({session,account});
79 | } catch (err) {
80 | return Promise.reject(err);
81 | }
82 |
83 | }
84 |
85 | const Target = async function(username){
86 | const url = 'https://www.instagram.com/'+username+'/'
87 | const option = {
88 | url: url,
89 | method: 'GET'
90 | }
91 | try{
92 | const account = await rp(option);
93 | const data = S(account).between('').s
94 | const json = JSON.parse(data);
95 | if (json.entry_data.ProfilePage[0].graphql.user.is_private) {
96 | return Promise.reject('Target is private Account');
97 | } else {
98 | const id = json.entry_data.ProfilePage[0].graphql.user.id;
99 | const followers = json.entry_data.ProfilePage[0].graphql.user.edge_followed_by.count;
100 | return Promise.resolve({id,followers});
101 | }
102 | } catch (err){
103 | return Promise.reject(err);
104 | }
105 |
106 | }
107 |
108 | async function ngefollow(session,accountId){
109 | try {
110 | await Client.Relationship.create(session, accountId);
111 | return true
112 | } catch (e) {
113 | return false
114 | }
115 | }
116 |
117 | async function ngeComment(session, id, text){
118 | try {
119 | await Client.Comment.create(session, id, text);
120 | return true;
121 | } catch(e){
122 | return false;
123 | }
124 | }
125 |
126 | async function ngeLike(session, id){
127 | try{
128 | await Client.Like.create(session, id)
129 | return true;
130 | } catch(e) {
131 | return false;
132 | }
133 | }
134 |
135 | const CommentAndLike = async function(session, accountId, text){
136 | var result;
137 |
138 | const feed = new Client.Feed.UserMedia(session, accountId);
139 |
140 | try {
141 | result = await feed.get();
142 | } catch (err) {
143 | return chalk`{bold.red ${err}}`;
144 | }
145 |
146 | if (result.length > 0) {
147 | if (result[0].params.hasLiked) {
148 | return chalk`{bold.blue Already Liked & Comment}`;
149 | }
150 | const task = [
151 | ngeComment(session, result[0].params.id, text),
152 | ngeLike(session, result[0].params.id)
153 | ]
154 | const [Comment,Like] = await Promise.all(task);
155 | const printComment = Comment ? chalk`{green Comment}` : chalk`{red Comment}`;
156 | const printLike = Like ? chalk`{green Like}` : chalk`{red Like}`;
157 | return chalk`{bold.green ${printComment},${printLike} [${text}]}`;
158 | }
159 | return chalk`{bold.white Timeline Kosong (SKIPPED)}`
160 | };
161 |
162 | const Followers = async function(session, id){
163 | const feed = new Client.Feed.AccountFollowers(session, id);
164 | try{
165 | const Pollowers = [];
166 | var cursor;
167 | do {
168 | if (cursor) feed.setCursor(cursor);
169 | const getPollowers = await feed.get();
170 | await Promise.all(getPollowers.map(async(akun) => {
171 | Pollowers.push(akun.id);
172 | }))
173 | cursor = await feed.getCursor();
174 | } while(feed.isMoreAvailable());
175 | return Promise.resolve(Pollowers);
176 | } catch(success){
177 | return Promise.reject(success);
178 | }
179 | }
180 |
181 | const Excute = async function(User, TargetUsername, Text, Sleep, mysyntx){
182 | try {
183 | console.log(chalk`{yellow \n [?] Try to Login . . .}`)
184 | const doLogin = await Login(User);
185 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try To Get ID & Followers Target . . .}`)
186 | const getTarget = await Target(TargetUsername);
187 | console.log(chalk`{green [!] ${TargetUsername}: [${getTarget.id}] | Followers: [${getTarget.followers}]}`)
188 | const getFollowers = await Followers(doLogin.session, doLogin.account.id)
189 | console.log(chalk`{cyan [?] Try to Follow, Comment, and Like Followers Target . . . \n}`)
190 | const Targetfeed = new Client.Feed.AccountFollowers(doLogin.session, getTarget.id);
191 | var TargetCursor;
192 | do {
193 | if (TargetCursor) Targetfeed.setCursor(TargetCursor);
194 | var TargetResult = await Targetfeed.get();
195 | TargetResult = _.chunk(TargetResult, mysyntx);
196 | for (let i = 0; i < TargetResult.length; i++) {
197 | var timeNow = new Date();
198 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
199 | await Promise.all(TargetResult[i].map(async(akun) => {
200 | if (!getFollowers.includes(akun.id) && akun.params.isPrivate === false) {
201 | var ranText = Text[Math.floor(Math.random() * Text.length)];
202 | const ngeDo = await CommentAndLike(doLogin.session, akun.id, ranText)
203 | console.log(chalk`[{magenta ${timeNow}}] {bold.green [>]}${akun.params.username} => ${ngeDo}`)
204 | } else {
205 | console.log(chalk`[{magenta ${timeNow}}] {bold.yellow [SKIP]}${akun.params.username} => PRIVATE`)
206 | }
207 | }));
208 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
209 | await delay(Sleep);
210 | }
211 | TargetCursor = await Targetfeed.getCursor();
212 | console.log(chalk`{yellow \n [#][>] Delay For ${Sleep} MiliSeconds [<][#] \n}`);
213 | await delay(Sleep);
214 | } while(Targetfeed.isMoreAvailable());
215 | } catch (err) {
216 | console.log(err);
217 | }
218 | }
219 |
220 | console.log(chalk`
221 | {bold.cyan
222 | —————————————————— [INFORMATION] ————————————————————
223 |
224 | [?] {bold.green Comment & Like | Using Account/User Target!}
225 |
226 | —————————————————— [THANKS TO] ————————————————————
227 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
228 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
229 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
230 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
231 | —————————————————————————————————————————————————————
232 | What's new?
233 | 1. Input Target/delay Manual (ITTYW)
234 | —————————————————————————————————————————————————————}
235 | `);
236 | //ikiganteng
237 | inquirer.prompt(User)
238 | .then(answers => {
239 | var text = answers.text.split('|');
240 | Excute({
241 | username:answers.username,
242 | password:answers.password
243 | },answers.target,text,answers.sleep,answers.mysyntx);
244 | })
245 |
--------------------------------------------------------------------------------
/node_modules.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ClassNightcore/worktools/d62b5a55f166351ee6a6c63459a160ad5c053d40/node_modules.zip
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "instagram",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "abbrev": {
8 | "version": "1.1.1",
9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
10 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
11 | },
12 | "ajv": {
13 | "version": "5.5.1",
14 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz",
15 | "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=",
16 | "requires": {
17 | "co": "4.6.0",
18 | "fast-deep-equal": "1.0.0",
19 | "fast-json-stable-stringify": "2.0.0",
20 | "json-schema-traverse": "0.3.1"
21 | }
22 | },
23 | "ansi-escapes": {
24 | "version": "3.0.0",
25 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
26 | "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ=="
27 | },
28 | "ansi-regex": {
29 | "version": "3.0.0",
30 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
31 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
32 | },
33 | "ansi-styles": {
34 | "version": "3.2.0",
35 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
36 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
37 | "requires": {
38 | "color-convert": "1.9.1"
39 | }
40 | },
41 | "asn1": {
42 | "version": "0.2.3",
43 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
44 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
45 | },
46 | "assert-plus": {
47 | "version": "1.0.0",
48 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
49 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
50 | },
51 | "asynckit": {
52 | "version": "0.4.0",
53 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
54 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
55 | },
56 | "aws-sign2": {
57 | "version": "0.7.0",
58 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
59 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
60 | },
61 | "aws4": {
62 | "version": "1.6.0",
63 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
64 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
65 | },
66 | "bcrypt-pbkdf": {
67 | "version": "1.0.1",
68 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
69 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
70 | "optional": true,
71 | "requires": {
72 | "tweetnacl": "0.14.5"
73 | }
74 | },
75 | "bignumber.js": {
76 | "version": "4.1.0",
77 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
78 | "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
79 | },
80 | "bluebird": {
81 | "version": "3.5.1",
82 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
83 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
84 | },
85 | "boom": {
86 | "version": "4.3.1",
87 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
88 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
89 | "requires": {
90 | "hoek": "4.2.0"
91 | }
92 | },
93 | "camelcase": {
94 | "version": "4.1.0",
95 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
96 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
97 | },
98 | "camelcase-keys": {
99 | "version": "4.2.0",
100 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
101 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
102 | "requires": {
103 | "camelcase": "4.1.0",
104 | "map-obj": "2.0.0",
105 | "quick-lru": "1.1.0"
106 | }
107 | },
108 | "caseless": {
109 | "version": "0.12.0",
110 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
111 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
112 | },
113 | "chalk": {
114 | "version": "2.3.0",
115 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
116 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
117 | "requires": {
118 | "ansi-styles": "3.2.0",
119 | "escape-string-regexp": "1.0.5",
120 | "supports-color": "4.5.0"
121 | }
122 | },
123 | "chardet": {
124 | "version": "0.4.2",
125 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
126 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
127 | },
128 | "cli-cursor": {
129 | "version": "2.1.0",
130 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
131 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
132 | "requires": {
133 | "restore-cursor": "2.0.0"
134 | }
135 | },
136 | "cli-width": {
137 | "version": "2.2.0",
138 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
139 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
140 | },
141 | "clone": {
142 | "version": "1.0.3",
143 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
144 | "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8="
145 | },
146 | "cls-bluebird": {
147 | "version": "1.1.3",
148 | "resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-1.1.3.tgz",
149 | "integrity": "sha1-syY8EaCJsDlhhaG3q5BNkPAq1Cg=",
150 | "requires": {
151 | "is-bluebird": "1.0.2",
152 | "shimmer": "1.2.0"
153 | }
154 | },
155 | "co": {
156 | "version": "4.6.0",
157 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
158 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
159 | },
160 | "color-convert": {
161 | "version": "1.9.1",
162 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
163 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
164 | "requires": {
165 | "color-name": "1.1.3"
166 | }
167 | },
168 | "color-name": {
169 | "version": "1.1.3",
170 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
171 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
172 | },
173 | "combined-stream": {
174 | "version": "1.0.5",
175 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
176 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
177 | "requires": {
178 | "delayed-stream": "1.0.0"
179 | }
180 | },
181 | "core-util-is": {
182 | "version": "1.0.2",
183 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
184 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
185 | },
186 | "cryptiles": {
187 | "version": "3.1.2",
188 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
189 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
190 | "requires": {
191 | "boom": "5.2.0"
192 | },
193 | "dependencies": {
194 | "boom": {
195 | "version": "5.2.0",
196 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
197 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
198 | "requires": {
199 | "hoek": "4.2.0"
200 | }
201 | }
202 | }
203 | },
204 | "crypto-js": {
205 | "version": "3.1.8",
206 | "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz",
207 | "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU="
208 | },
209 | "dashdash": {
210 | "version": "1.14.1",
211 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
212 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
213 | "requires": {
214 | "assert-plus": "1.0.0"
215 | }
216 | },
217 | "delay": {
218 | "version": "2.0.0",
219 | "resolved": "https://registry.npmjs.org/delay/-/delay-2.0.0.tgz",
220 | "integrity": "sha1-kRLq3APk7H4AKXM3iW8nO72R+uU=",
221 | "requires": {
222 | "p-defer": "1.0.0"
223 | }
224 | },
225 | "delayed-stream": {
226 | "version": "1.0.0",
227 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
228 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
229 | },
230 | "ecc-jsbn": {
231 | "version": "0.1.1",
232 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
233 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
234 | "optional": true,
235 | "requires": {
236 | "jsbn": "0.1.1"
237 | }
238 | },
239 | "escape-string-regexp": {
240 | "version": "1.0.5",
241 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
242 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
243 | },
244 | "extend": {
245 | "version": "3.0.1",
246 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
247 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
248 | },
249 | "external-editor": {
250 | "version": "2.1.0",
251 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
252 | "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
253 | "requires": {
254 | "chardet": "0.4.2",
255 | "iconv-lite": "0.4.19",
256 | "tmp": "0.0.33"
257 | }
258 | },
259 | "extsprintf": {
260 | "version": "1.3.0",
261 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
262 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
263 | },
264 | "fast-deep-equal": {
265 | "version": "1.0.0",
266 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
267 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
268 | },
269 | "fast-json-stable-stringify": {
270 | "version": "2.0.0",
271 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
272 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
273 | },
274 | "figures": {
275 | "version": "2.0.0",
276 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
277 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
278 | "requires": {
279 | "escape-string-regexp": "1.0.5"
280 | }
281 | },
282 | "forever-agent": {
283 | "version": "0.6.1",
284 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
285 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
286 | },
287 | "form-data": {
288 | "version": "2.3.1",
289 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
290 | "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
291 | "requires": {
292 | "asynckit": "0.4.0",
293 | "combined-stream": "1.0.5",
294 | "mime-types": "2.1.17"
295 | }
296 | },
297 | "getpass": {
298 | "version": "0.1.7",
299 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
300 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
301 | "requires": {
302 | "assert-plus": "1.0.0"
303 | }
304 | },
305 | "har-schema": {
306 | "version": "2.0.0",
307 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
308 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
309 | },
310 | "har-validator": {
311 | "version": "5.0.3",
312 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
313 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
314 | "requires": {
315 | "ajv": "5.5.1",
316 | "har-schema": "2.0.0"
317 | }
318 | },
319 | "has-flag": {
320 | "version": "2.0.0",
321 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
322 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
323 | },
324 | "hawk": {
325 | "version": "6.0.2",
326 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
327 | "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
328 | "requires": {
329 | "boom": "4.3.1",
330 | "cryptiles": "3.1.2",
331 | "hoek": "4.2.0",
332 | "sntp": "2.1.0"
333 | }
334 | },
335 | "hoek": {
336 | "version": "4.2.0",
337 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
338 | "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
339 | },
340 | "http-signature": {
341 | "version": "1.2.0",
342 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
343 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
344 | "requires": {
345 | "assert-plus": "1.0.0",
346 | "jsprim": "1.4.1",
347 | "sshpk": "1.13.1"
348 | }
349 | },
350 | "iconv-lite": {
351 | "version": "0.4.19",
352 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
353 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
354 | },
355 | "inquirer": {
356 | "version": "4.0.1",
357 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-4.0.1.tgz",
358 | "integrity": "sha512-HVU3eq/6DCt5Wkt46N6cooQBLlQy55UcmTGwMOe7XEmuxgdVjNxllS3pxrKDc8+OmNIbu+saotsCfH7m+IxHfg==",
359 | "requires": {
360 | "ansi-escapes": "3.0.0",
361 | "chalk": "2.3.0",
362 | "cli-cursor": "2.1.0",
363 | "cli-width": "2.2.0",
364 | "external-editor": "2.1.0",
365 | "figures": "2.0.0",
366 | "lodash": "4.17.4",
367 | "mute-stream": "0.0.7",
368 | "run-async": "2.3.0",
369 | "rx-lite": "4.0.8",
370 | "rx-lite-aggregates": "4.0.8",
371 | "string-width": "2.1.1",
372 | "strip-ansi": "4.0.0",
373 | "through": "2.3.8"
374 | }
375 | },
376 | "instagram-private-api": {
377 | "version": "0.6.7",
378 | "resolved": "https://registry.npmjs.org/instagram-private-api/-/instagram-private-api-0.6.7.tgz",
379 | "integrity": "sha1-K9kZqYR1MvsSDHlHcBJ9481/pfo=",
380 | "requires": {
381 | "bluebird": "3.5.1",
382 | "camelcase-keys": "4.2.0",
383 | "crypto-js": "3.1.8",
384 | "is-stream": "1.1.0",
385 | "js-md5": "0.3.0",
386 | "json-bigint": "0.2.3",
387 | "lodash": "4.17.4",
388 | "node-cache": "3.2.1",
389 | "request": "2.83.0",
390 | "request-promise": "1.0.2",
391 | "socks5-https-client": "1.2.1",
392 | "touch": "1.0.0",
393 | "tough-cookie": "2.3.3",
394 | "tough-cookie-filestore": "0.0.1",
395 | "underscore.string": "3.3.4",
396 | "valid-url": "1.0.9"
397 | },
398 | "dependencies": {
399 | "request-promise": {
400 | "version": "1.0.2",
401 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-1.0.2.tgz",
402 | "integrity": "sha1-FV9BBgjZJXwInB0LJvjY96iqhqE=",
403 | "requires": {
404 | "bluebird": "2.11.0",
405 | "cls-bluebird": "1.1.3",
406 | "lodash": "3.10.1",
407 | "request": "2.83.0"
408 | },
409 | "dependencies": {
410 | "bluebird": {
411 | "version": "2.11.0",
412 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
413 | "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE="
414 | },
415 | "lodash": {
416 | "version": "3.10.1",
417 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
418 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
419 | }
420 | }
421 | }
422 | }
423 | },
424 | "ip-address": {
425 | "version": "5.8.8",
426 | "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.8.8.tgz",
427 | "integrity": "sha1-X9H490ZSSft9Kzwe7HtB0p0fG3Y=",
428 | "requires": {
429 | "jsbn": "0.1.0",
430 | "lodash.find": "4.6.0",
431 | "lodash.max": "4.0.1",
432 | "lodash.merge": "4.6.0",
433 | "lodash.padstart": "4.6.1",
434 | "lodash.repeat": "4.1.0",
435 | "sprintf-js": "1.1.1",
436 | "util-deprecate": "1.0.2"
437 | },
438 | "dependencies": {
439 | "jsbn": {
440 | "version": "0.1.0",
441 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz",
442 | "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0="
443 | }
444 | }
445 | },
446 | "is-bluebird": {
447 | "version": "1.0.2",
448 | "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz",
449 | "integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI="
450 | },
451 | "is-fullwidth-code-point": {
452 | "version": "2.0.0",
453 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
454 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
455 | },
456 | "is-promise": {
457 | "version": "2.1.0",
458 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
459 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
460 | },
461 | "is-stream": {
462 | "version": "1.1.0",
463 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
464 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
465 | },
466 | "is-typedarray": {
467 | "version": "1.0.0",
468 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
469 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
470 | },
471 | "isstream": {
472 | "version": "0.1.2",
473 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
474 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
475 | },
476 | "js-md5": {
477 | "version": "0.3.0",
478 | "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.3.0.tgz",
479 | "integrity": "sha1-VqbXADe8plr/fxTKQ3JOR6eCXRI="
480 | },
481 | "jsbn": {
482 | "version": "0.1.1",
483 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
484 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
485 | "optional": true
486 | },
487 | "json-bigint": {
488 | "version": "0.2.3",
489 | "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.2.3.tgz",
490 | "integrity": "sha1-EY1/b/HThlnxn5TPc+ZKdaP5iKg=",
491 | "requires": {
492 | "bignumber.js": "4.1.0"
493 | }
494 | },
495 | "json-schema": {
496 | "version": "0.2.3",
497 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
498 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
499 | },
500 | "json-schema-traverse": {
501 | "version": "0.3.1",
502 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
503 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
504 | },
505 | "json-stringify-safe": {
506 | "version": "5.0.1",
507 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
508 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
509 | },
510 | "jsprim": {
511 | "version": "1.4.1",
512 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
513 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
514 | "requires": {
515 | "assert-plus": "1.0.0",
516 | "extsprintf": "1.3.0",
517 | "json-schema": "0.2.3",
518 | "verror": "1.10.0"
519 | }
520 | },
521 | "lodash": {
522 | "version": "4.17.4",
523 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
524 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
525 | },
526 | "lodash.find": {
527 | "version": "4.6.0",
528 | "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz",
529 | "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E="
530 | },
531 | "lodash.max": {
532 | "version": "4.0.1",
533 | "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz",
534 | "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o="
535 | },
536 | "lodash.merge": {
537 | "version": "4.6.0",
538 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz",
539 | "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU="
540 | },
541 | "lodash.padstart": {
542 | "version": "4.6.1",
543 | "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
544 | "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs="
545 | },
546 | "lodash.repeat": {
547 | "version": "4.1.0",
548 | "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz",
549 | "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ="
550 | },
551 | "map-obj": {
552 | "version": "2.0.0",
553 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
554 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk="
555 | },
556 | "mime-db": {
557 | "version": "1.30.0",
558 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
559 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
560 | },
561 | "mime-types": {
562 | "version": "2.1.17",
563 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
564 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
565 | "requires": {
566 | "mime-db": "1.30.0"
567 | }
568 | },
569 | "mimic-fn": {
570 | "version": "1.1.0",
571 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
572 | "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
573 | },
574 | "mute-stream": {
575 | "version": "0.0.7",
576 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
577 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
578 | },
579 | "node-cache": {
580 | "version": "3.2.1",
581 | "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-3.2.1.tgz",
582 | "integrity": "sha1-p5WNMqikLZEZziWYZWfqLF+WZ3M=",
583 | "requires": {
584 | "clone": "1.0.3",
585 | "lodash": "4.17.4"
586 | }
587 | },
588 | "nopt": {
589 | "version": "1.0.10",
590 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
591 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
592 | "requires": {
593 | "abbrev": "1.1.1"
594 | }
595 | },
596 | "oauth-sign": {
597 | "version": "0.8.2",
598 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
599 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
600 | },
601 | "onetime": {
602 | "version": "2.0.1",
603 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
604 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
605 | "requires": {
606 | "mimic-fn": "1.1.0"
607 | }
608 | },
609 | "os-tmpdir": {
610 | "version": "1.0.2",
611 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
612 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
613 | },
614 | "p-defer": {
615 | "version": "1.0.0",
616 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
617 | "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
618 | },
619 | "performance-now": {
620 | "version": "2.1.0",
621 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
622 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
623 | },
624 | "punycode": {
625 | "version": "1.4.1",
626 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
627 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
628 | },
629 | "qs": {
630 | "version": "6.5.1",
631 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
632 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
633 | },
634 | "quick-lru": {
635 | "version": "1.1.0",
636 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
637 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g="
638 | },
639 | "request": {
640 | "version": "2.83.0",
641 | "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
642 | "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
643 | "requires": {
644 | "aws-sign2": "0.7.0",
645 | "aws4": "1.6.0",
646 | "caseless": "0.12.0",
647 | "combined-stream": "1.0.5",
648 | "extend": "3.0.1",
649 | "forever-agent": "0.6.1",
650 | "form-data": "2.3.1",
651 | "har-validator": "5.0.3",
652 | "hawk": "6.0.2",
653 | "http-signature": "1.2.0",
654 | "is-typedarray": "1.0.0",
655 | "isstream": "0.1.2",
656 | "json-stringify-safe": "5.0.1",
657 | "mime-types": "2.1.17",
658 | "oauth-sign": "0.8.2",
659 | "performance-now": "2.1.0",
660 | "qs": "6.5.1",
661 | "safe-buffer": "5.1.1",
662 | "stringstream": "0.0.5",
663 | "tough-cookie": "2.3.3",
664 | "tunnel-agent": "0.6.0",
665 | "uuid": "3.1.0"
666 | }
667 | },
668 | "request-promise": {
669 | "version": "4.2.2",
670 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz",
671 | "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=",
672 | "requires": {
673 | "bluebird": "3.5.1",
674 | "request-promise-core": "1.1.1",
675 | "stealthy-require": "1.1.1",
676 | "tough-cookie": "2.3.3"
677 | }
678 | },
679 | "request-promise-core": {
680 | "version": "1.1.1",
681 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
682 | "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
683 | "requires": {
684 | "lodash": "4.17.4"
685 | }
686 | },
687 | "restore-cursor": {
688 | "version": "2.0.0",
689 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
690 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
691 | "requires": {
692 | "onetime": "2.0.1",
693 | "signal-exit": "3.0.2"
694 | }
695 | },
696 | "run-async": {
697 | "version": "2.3.0",
698 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
699 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
700 | "requires": {
701 | "is-promise": "2.1.0"
702 | }
703 | },
704 | "rx-lite": {
705 | "version": "4.0.8",
706 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
707 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
708 | },
709 | "rx-lite-aggregates": {
710 | "version": "4.0.8",
711 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
712 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
713 | "requires": {
714 | "rx-lite": "4.0.8"
715 | }
716 | },
717 | "safe-buffer": {
718 | "version": "5.1.1",
719 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
720 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
721 | },
722 | "shimmer": {
723 | "version": "1.2.0",
724 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.0.tgz",
725 | "integrity": "sha512-xTCx2vohXC2EWWDqY/zb4+5Mu28D+HYNSOuFzsyRDRvI/e1ICb69afwaUwfjr+25ZXldbOLyp+iDUZHq8UnTag=="
726 | },
727 | "signal-exit": {
728 | "version": "3.0.2",
729 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
730 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
731 | },
732 | "sntp": {
733 | "version": "2.1.0",
734 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
735 | "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
736 | "requires": {
737 | "hoek": "4.2.0"
738 | }
739 | },
740 | "socks5-client": {
741 | "version": "1.2.5",
742 | "resolved": "https://registry.npmjs.org/socks5-client/-/socks5-client-1.2.5.tgz",
743 | "integrity": "sha512-0bRhfDRBHokTLEvEZYKtz0sssD54dGaTN3dD1oBIZtkDX60AqUYSJteavlRGPzO3c7le9WvLglMODc5u1X9Kxw==",
744 | "requires": {
745 | "ip-address": "5.8.8"
746 | }
747 | },
748 | "socks5-https-client": {
749 | "version": "1.2.1",
750 | "resolved": "https://registry.npmjs.org/socks5-https-client/-/socks5-https-client-1.2.1.tgz",
751 | "integrity": "sha512-FbZ/X/2Xq3DAMhuRA4bnN0jy1QxaPTVPLFvyv6CEj0QDKSTdWp9yRxo1JhqXmWKhPQeJyUMajHJB2UjT43pFcw==",
752 | "requires": {
753 | "socks5-client": "1.2.5"
754 | }
755 | },
756 | "sprintf-js": {
757 | "version": "1.1.1",
758 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz",
759 | "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw="
760 | },
761 | "sshpk": {
762 | "version": "1.13.1",
763 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
764 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
765 | "requires": {
766 | "asn1": "0.2.3",
767 | "assert-plus": "1.0.0",
768 | "bcrypt-pbkdf": "1.0.1",
769 | "dashdash": "1.14.1",
770 | "ecc-jsbn": "0.1.1",
771 | "getpass": "0.1.7",
772 | "jsbn": "0.1.1",
773 | "tweetnacl": "0.14.5"
774 | }
775 | },
776 | "stealthy-require": {
777 | "version": "1.1.1",
778 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
779 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
780 | },
781 | "string": {
782 | "version": "3.3.3",
783 | "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz",
784 | "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA="
785 | },
786 | "string-width": {
787 | "version": "2.1.1",
788 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
789 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
790 | "requires": {
791 | "is-fullwidth-code-point": "2.0.0",
792 | "strip-ansi": "4.0.0"
793 | }
794 | },
795 | "stringstream": {
796 | "version": "0.0.5",
797 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
798 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
799 | },
800 | "strip-ansi": {
801 | "version": "4.0.0",
802 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
803 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
804 | "requires": {
805 | "ansi-regex": "3.0.0"
806 | }
807 | },
808 | "supports-color": {
809 | "version": "4.5.0",
810 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
811 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
812 | "requires": {
813 | "has-flag": "2.0.0"
814 | }
815 | },
816 | "through": {
817 | "version": "2.3.8",
818 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
819 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
820 | },
821 | "tmp": {
822 | "version": "0.0.33",
823 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
824 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
825 | "requires": {
826 | "os-tmpdir": "1.0.2"
827 | }
828 | },
829 | "touch": {
830 | "version": "1.0.0",
831 | "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz",
832 | "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=",
833 | "requires": {
834 | "nopt": "1.0.10"
835 | }
836 | },
837 | "tough-cookie": {
838 | "version": "2.3.3",
839 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
840 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
841 | "requires": {
842 | "punycode": "1.4.1"
843 | }
844 | },
845 | "tough-cookie-filestore": {
846 | "version": "0.0.1",
847 | "resolved": "https://registry.npmjs.org/tough-cookie-filestore/-/tough-cookie-filestore-0.0.1.tgz",
848 | "integrity": "sha1-C/IwjtKTpQugcz7X1iiWAUhVcLY=",
849 | "requires": {
850 | "tough-cookie": "0.12.1"
851 | },
852 | "dependencies": {
853 | "tough-cookie": {
854 | "version": "0.12.1",
855 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz",
856 | "integrity": "sha1-giDH4hq9WxPZaAQlS9WoHr8sfWI=",
857 | "requires": {
858 | "punycode": "1.4.1"
859 | }
860 | }
861 | }
862 | },
863 | "tunnel-agent": {
864 | "version": "0.6.0",
865 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
866 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
867 | "requires": {
868 | "safe-buffer": "5.1.1"
869 | }
870 | },
871 | "tweetnacl": {
872 | "version": "0.14.5",
873 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
874 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
875 | "optional": true
876 | },
877 | "underscore.string": {
878 | "version": "3.3.4",
879 | "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
880 | "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
881 | "requires": {
882 | "sprintf-js": "1.1.1",
883 | "util-deprecate": "1.0.2"
884 | }
885 | },
886 | "util-deprecate": {
887 | "version": "1.0.2",
888 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
889 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
890 | },
891 | "uuid": {
892 | "version": "3.1.0",
893 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
894 | "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
895 | },
896 | "valid-url": {
897 | "version": "1.0.9",
898 | "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
899 | "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA="
900 | },
901 | "verror": {
902 | "version": "1.10.0",
903 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
904 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
905 | "requires": {
906 | "assert-plus": "1.0.0",
907 | "core-util-is": "1.0.2",
908 | "extsprintf": "1.3.0"
909 | }
910 | }
911 | }
912 | }
913 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "instagram",
3 | "version": "1.0.0",
4 | "description": "Instagram Unfollow Not FollowBack",
5 | "main": "index.js",
6 | "dependencies": {
7 | "chalk": "^2.3.0",
8 | "delay": "^2.0.0",
9 | "inquirer": "^4.0.1",
10 | "instagram-private-api": "^0.6.7",
11 | "request": "^2.83.0",
12 | "request-promise": "^4.2.2",
13 | "string": "^3.3.3"
14 | },
15 | "author": "CCOCOT"
16 | }
17 |
--------------------------------------------------------------------------------
/unfollall.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const Client = require('instagram-private-api').V1;
4 | const delay = require('delay');
5 | const chalk = require('chalk');
6 | const _ = require('lodash');
7 | const inquirer = require('inquirer');
8 |
9 | const User = [
10 | {
11 | type:'input',
12 | name:'username',
13 | message:'[>] Insert Username:',
14 | validate: function(value){
15 | if(!value) return 'Can\'t Empty';
16 | return true;
17 | }
18 | },
19 | {
20 | type:'password',
21 | name:'password',
22 | message:'[>] Insert Password:',
23 | mask:'*',
24 | validate: function(value){
25 | if(!value) return 'Can\'t Empty';
26 | return true;
27 | }
28 | },
29 | {
30 | type:'input',
31 | name:'mysyntx',
32 | message:'[>] Input Total of Target You Want (ITTYW):',
33 | validate: function(value){
34 | value = value.match(/[0-9]/);
35 | if (value) return true;
36 | return 'Use Number Only!';
37 | }
38 | },
39 | {
40 | type:'input',
41 | name:'sleep',
42 | message:'[>] Insert Sleep (MiliSeconds):',
43 | validate: function(value){
44 | value = value.match(/[0-9]/);
45 | if (value) return true;
46 | return 'Delay is number';
47 | }
48 | }
49 | ]
50 |
51 | const Login = async function(User){
52 |
53 | const Device = new Client.Device(User.username);
54 | const Storage = new Client.CookieMemoryStorage();
55 | const session = new Client.Session(Device, Storage);
56 |
57 | try {
58 | await Client.Session.create(Device, Storage, User.username, User.password)
59 | const account = await session.getAccount();
60 | return Promise.resolve({session,account});
61 | } catch (err) {
62 | return Promise.reject(err);
63 | }
64 |
65 | }
66 |
67 | const Unfollow = async function(session, accountId){
68 | try {
69 | await Client.Relationship.destroy(session, accountId);
70 | return chalk`{bold.green SUKSES}`;
71 | } catch (err){
72 | return chalk`{bold.red GAGAL}`;
73 | }
74 | }
75 |
76 | const Excute = async function(User,sleep,mysyntx){
77 |
78 | try {
79 | console.log(chalk`{yellow [?] Try to Login . . .}`);
80 | const doLogin = await Login(User);
81 | console.log(chalk`{green [!] Login Succsess, }{yellow [?] Try to Unfollow All Following . . .}`)
82 | const feed = new Client.Feed.AccountFollowing(doLogin.session, doLogin.account.id);
83 | var cursor;
84 | do{
85 | if (cursor) feed.setCursor(cursor);
86 | var getPollowers = await feed.get();
87 | getPollowers = _.chunk(getPollowers, mysyntx);
88 | for (let i = 0; i < getPollowers.length; i++) {
89 | var timeNow = new Date();
90 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
91 | await Promise.all(getPollowers[i].map(async(account) => {
92 | const doUnfollow = await Unfollow(doLogin.session, account.id);
93 | console.log(chalk`[{magenta ${timeNow}}] Unfollow {yellow @${account.params.username}} => ${doUnfollow}`);
94 | }));
95 | console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`);
96 | await delay(sleep);
97 | }
98 | cursor = await feed.getCursor();
99 | } while(feed.isMoreAvailable())
100 | console.log(chalk`{bold.green [+] Unfollow All Succsess}`)
101 | } catch(e) {
102 | console.log(e)
103 | }
104 | }
105 |
106 | console.log(chalk`
107 | {bold.cyan
108 | —————————————————— [INFORMATION] ————————————————————
109 |
110 | [?] {bold.green UNFALL | Unfollow All Following IG!}
111 |
112 | —————————————————— [THANKS TO] ————————————————————
113 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
114 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
115 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
116 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
117 | —————————————————————————————————————————————————————
118 | What's new?
119 | 1. Input Target/delay Manual (ITTYW)
120 | —————————————————————————————————————————————————————}
121 | `);
122 |
123 | inquirer.prompt(User)
124 | .then(answers => {
125 | Excute({
126 | username:answers.username,
127 | password:answers.password
128 | },answers.sleep,answers.mysyntx);
129 | })
130 |
--------------------------------------------------------------------------------
/unfollnotfollback.js:
--------------------------------------------------------------------------------
1 | const Client = require('instagram-private-api').V1;
2 | const delay = require('delay');
3 | const chalk = require('chalk');
4 | const _ = require('lodash');
5 | const rp = require('request-promise');
6 | const inquirer = require('inquirer');
7 |
8 | const User = [
9 | {
10 | type:'input',
11 | name:'username',
12 | message:'[>] Insert Username:',
13 | validate: function(value){
14 | if(!value) return 'Can\'t Empty';
15 | return true;
16 | }
17 | },
18 | {
19 | type:'password',
20 | name:'password',
21 | message:'[>] Insert Password:',
22 | mask:'*',
23 | validate: function(value){
24 | if(!value) return 'Can\'t Empty';
25 | return true;
26 | }
27 | },
28 | {
29 | type:'input',
30 | name:'mysyntx',
31 | message:'[>] Input Total of Target You Want (ITTYW):',
32 | validate: function(value){
33 | value = value.match(/[0-9]/);
34 | if (value) return true;
35 | return 'Use Number Only!';
36 | }
37 | },
38 | {
39 | type:'input',
40 | name:'sleep',
41 | message:'[>] Insert Sleep (MiliSeconds):',
42 | validate: function(value){
43 | value = value.match(/[0-9]/);
44 | if (value) return true;
45 | return 'Delay is number';
46 | }
47 | }
48 | ]
49 |
50 | const Login = async function(User){
51 |
52 | const Device = new Client.Device(User.username);
53 | const Storage = new Client.CookieMemoryStorage();
54 | const session = new Client.Session(Device, Storage);
55 |
56 | try {
57 | await Client.Session.create(Device, Storage, User.username, User.password)
58 | const account = await session.getAccount();
59 | return Promise.resolve({session,account});
60 | } catch (err) {
61 | return Promise.reject(err);
62 | }
63 |
64 | }
65 |
66 | const Followers = async function(session, id){
67 | const feed = new Client.Feed.AccountFollowers(session, id);
68 | try{
69 | const Pollowers = [];
70 | var cursor;
71 | do {
72 | if (cursor) feed.setCursor(cursor);
73 | const getPollowers = await feed.get();
74 | await Promise.all(getPollowers.map(async(akun) => {
75 | Pollowers.push(akun.id);
76 | }))
77 | cursor = await feed.getCursor();
78 | } while(feed.isMoreAvailable());
79 | return Promise.resolve(Pollowers);
80 | } catch(err){
81 | return Promise.reject(err);
82 | }
83 | }
84 |
85 | const Following = async function(session, id){
86 | const feed = new Client.Feed.AccountFollowing(session, id);
87 | try{
88 | const Pollowing = [];
89 | var cursor;
90 | do {
91 | if (cursor) feed.setCursor(cursor);
92 | const getPollowers = await feed.get();
93 | await Promise.all(getPollowers.map(async(akun) => {
94 | Pollowing.push(akun.id);
95 | }))
96 | cursor = await feed.getCursor();
97 | } while(feed.isMoreAvailable());
98 | return Promise.resolve(Pollowing);
99 | } catch(err){
100 | return Promise.reject(err);
101 | }
102 | }
103 |
104 | const Unfollow = async function(session, accountId){
105 | try {
106 | await Client.Relationship.destroy(session, accountId);
107 | return chalk`{bold.green SUKSES}`;
108 | } catch (err){
109 | return chalk`{bold.red GAGAL}`;
110 | }
111 | }
112 |
113 | const Excute = async function(User,sleep,mysyntx){
114 | try {
115 | console.log(chalk`\n{yellow [?] Try to Login . . .}`);
116 | const doLogin = await Login(User);
117 | console.log(chalk`{green [!] Login Succsess}, {yellow [?] Try to get Followers and Following . . .}`);
118 | const task = [
119 | Followers(doLogin.session, doLogin.account.id),
120 | Following(doLogin.session, doLogin.account.id)
121 | ]
122 | const [getFollowers, getFollowing] = await Promise.all(task);
123 | console.log(chalk`{bold.green | Followers : ${getFollowers.length}\n | Following : ${getFollowing.length}}`);
124 | var AccountToUnfollow = [];
125 | await Promise.all(getFollowing.map(async(account) => {
126 | if (!getFollowers.includes(account)) {
127 | await AccountToUnfollow.push(account);
128 | }
129 | }));
130 | console.log(chalk`{blue | Account To Unfollow : ${AccountToUnfollow.length}}`)
131 | AccountToUnfollow = _.chunk(AccountToUnfollow, mysyntx);
132 | for (let i = 0; i < AccountToUnfollow.length; i++) {
133 | var timeNow = new Date();
134 | timeNow = `${timeNow.getHours()}:${timeNow.getMinutes()}:${timeNow.getSeconds()}`
135 | await Promise.all(AccountToUnfollow[i].map(async(akun) => {
136 | const doUnfollow = await Unfollow(doLogin.session, akun);
137 | console.log(chalk`[{magenta ${timeNow}}] Unfollow {blue [${akun}]} => ${doUnfollow}`);
138 | }))
139 | await console.log(chalk`{yellow \n [#][>] Delay For ${sleep} MiliSeconds [<][#] \n}`);
140 | await delay(sleep);
141 | }
142 | } catch(err) {
143 | console.log(err);
144 | }
145 | }
146 |
147 | console.log(chalk`
148 | {bold.cyan
149 | —————————————————— [INFORMATION] ————————————————————
150 |
151 | [?] {bold.green UFNFB | Unfollow Not FollowBack!}
152 |
153 | —————————————————— [THANKS TO] ————————————————————
154 | [✓] CODE BY CYBER SCREAMER CCOCOT (ccocot@bc0de.net)
155 | [✓] FIXING & TESTING BY SYNTAX (@officialputu_id)
156 | [✓] CCOCOT.CO | BC0DE.NET | NAONLAH.NET | WingkoColi
157 | [✓] SGB TEAM REBORN | Zerobyte.id | ccocot@bc0de.net
158 | —————————————————————————————————————————————————————
159 | What's new?
160 | 1. Input Target/delay Manual (ITTYW)
161 | —————————————————————————————————————————————————————}
162 | `);
163 |
164 | inquirer.prompt(User)
165 | .then(answers => {
166 | Excute({
167 | username:answers.username,
168 | password:answers.password
169 | },answers.sleep,answers.mysyntx);
170 | })
171 |
--------------------------------------------------------------------------------
/unli_bom.txt:
--------------------------------------------------------------------------------
1 | Cara buat sampe akar :v
2 |
3 | Cari
4 | - const Media
5 | Ganti jadi
6 | - const Media = async function(session, id){
7 | const Media = new Client.Feed.UserMedia(session, id);
8 |
9 | try {
10 | const Poto = [];
11 | var cursor;
12 | do {
13 | if (cursor) Media.setCursor(cursor);
14 | const getPoto = await Media.get();
15 | await Promise.all(getPoto.map(async(poto) => {
16 | Poto.push({
17 | id:poto.id,
18 | link:poto.params.webLink
19 | });
20 | }))
21 | cursor = await Media.getCursor()
22 | } while (Media.isMoreAvailable());
23 | return Promise.resolve(Poto);
24 | } catch (err){
25 | return Promise.reject(err);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------