diff --git a/lib/index.js b/lib/index.js index 9060571..5e5f6b4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,6 +1,7 @@ // Native const fs = require('fs') const crypto = require('crypto') +const readline = require('readline'); // Packages const request = require('request-promise-native') @@ -10,6 +11,18 @@ const useragentFromSeed = require('useragent-from-seed') const baseUrl = 'https://www.instagram.com' +function askQuestion(query) { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + return new Promise(resolve => rl.question(query, ans => { + rl.close(); + resolve(ans); + })) +} + class Instagram { constructor( { username, password, cookieStore }, @@ -68,10 +81,30 @@ class Instagram { } // Login - const res = await this.request.post('/accounts/login/ajax/', { + try { + var res = await this.request.post('/accounts/login/ajax/', { resolveWithFullResponse: true, form: { username, enc_password: createEncPassword(password) } }) + } + catch (err){ + if (err.error.two_factor_required) + { + console.log("Two factor auth is required!"); + let ans = await askQuestion("Code:"); + res = await this.request.post('/accounts/login/ajax/', { + resolveWithFullResponse: true, + form: { + username: username, + verificationCode: ans, + identifier: err.error.two_factor_info.two_factor_identifier + } + }) + } + else{ + throw err; + } + } if (!res.headers['set-cookie']) { throw new Error('No cookie')