node-ainzfb-new 1.7.10-2-zGsq2er → 1.7.10-4-fix
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +79 -39
- package/package.json +1 -1
package/index.js
CHANGED
@@ -9,7 +9,7 @@ process.env.UV_THREADPOOL_SIZE = require('os').cpus().length;
|
|
9
9
|
global.isThread = new Array();
|
10
10
|
global.isUser = new Array();
|
11
11
|
global.startTime = Date.now();
|
12
|
-
global.getText =
|
12
|
+
global.getText = require('gettext.js')();
|
13
13
|
|
14
14
|
/!-[ Require All Package Need Use ]-!/
|
15
15
|
/*globalThis.Fca = new Object({
|
@@ -19,7 +19,7 @@ global.getText = require('gettext.js')();
|
|
19
19
|
var utils = require("./utils"),
|
20
20
|
cheerio = require("cheerio"),
|
21
21
|
log = require("npmlog"),
|
22
|
-
//{ getAccessToken } = require('./Extra/ExtraAddons'),
|
22
|
+
//{ getAccessToken } = require('./Extra/ExtraAddons'),
|
23
23
|
logger = require('./logger'),
|
24
24
|
fs = require('fs-extra'),
|
25
25
|
getText = require('gettext.js')(),
|
@@ -90,7 +90,7 @@ var checkVerified = null;
|
|
90
90
|
/!-[ Function setOptions ]-!/
|
91
91
|
|
92
92
|
function setOptions(globalOptions, options) {
|
93
|
-
Object.keys(options).map(function(key) {
|
93
|
+
Object.keys(options).map(function (key) {
|
94
94
|
switch (key) {
|
95
95
|
case 'pauseLog':
|
96
96
|
if (options.pauseLog) log.pause();
|
@@ -158,7 +158,7 @@ function setOptions(globalOptions, options) {
|
|
158
158
|
/!-[ Function BuildAPI ]-!/
|
159
159
|
|
160
160
|
async function buildAPI(globalOptions, html, jar) {
|
161
|
-
var maybeCookie = jar.getCookies("https://www.facebook.com").filter(function(val) { return val.cookieString().split("=")[0] === "c_user"; });
|
161
|
+
var maybeCookie = jar.getCookies("https://www.facebook.com").filter(function (val) { return val.cookieString().split("=")[0] === "c_user"; });
|
162
162
|
|
163
163
|
if (maybeCookie.length === 0) throw { error: Language.ErrAppState };
|
164
164
|
|
@@ -246,7 +246,7 @@ async function buildAPI(globalOptions, html, jar) {
|
|
246
246
|
}
|
247
247
|
|
248
248
|
function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
249
|
-
return function(res) {
|
249
|
+
return function (res) {
|
250
250
|
var html = res.body;
|
251
251
|
var $ = cheerio.load(html);
|
252
252
|
var arr = [];
|
@@ -254,7 +254,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
254
254
|
// This will be empty, but just to be sure we leave it
|
255
255
|
$("#login_form input").map((i, v) => arr.push({ val: $(v).val(), name: $(v).attr("name") }));
|
256
256
|
|
257
|
-
arr = arr.filter(function(v) {
|
257
|
+
arr = arr.filter(function (v) {
|
258
258
|
return v.val && v.val.length;
|
259
259
|
});
|
260
260
|
|
@@ -280,7 +280,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
280
280
|
//
|
281
281
|
// ---------- Very Hacky Part Starts -----------------
|
282
282
|
var willBeCookies = html.split("\"_js_");
|
283
|
-
willBeCookies.slice(1).map(function(val) {
|
283
|
+
willBeCookies.slice(1).map(function (val) {
|
284
284
|
var cookieData = JSON.parse("[\"" + utils.getFrom(val, "", "]") + "]");
|
285
285
|
jar.setCookie(utils.formatCookie(cookieData, "facebook"), "https://www.facebook.com");
|
286
286
|
});
|
@@ -290,7 +290,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
290
290
|
return utils
|
291
291
|
.post("https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110", jar, form, loginOptions)
|
292
292
|
.then(utils.saveCookies(jar))
|
293
|
-
.then(function(res) {
|
293
|
+
.then(function (res) {
|
294
294
|
var headers = res.headers;
|
295
295
|
if (!headers.location) throw { error: Language.InvaildAccount };
|
296
296
|
|
@@ -302,21 +302,21 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
302
302
|
return utils
|
303
303
|
.get(headers.location, jar, null, loginOptions)
|
304
304
|
.then(utils.saveCookies(jar))
|
305
|
-
.then(function(res) {
|
305
|
+
.then(function (res) {
|
306
306
|
var html = res.body;
|
307
307
|
// Make the form in advance which will contain the fb_dtsg and nh
|
308
308
|
var $ = cheerio.load(html);
|
309
309
|
var arr = [];
|
310
310
|
$("form input").map((i, v) => arr.push({ val: $(v).val(), name: $(v).attr("name") }));
|
311
311
|
|
312
|
-
arr = arr.filter(function(v) {
|
312
|
+
arr = arr.filter(function (v) {
|
313
313
|
return v.val && v.val.length;
|
314
314
|
});
|
315
315
|
|
316
316
|
var form = utils.arrToForm(arr);
|
317
317
|
if (html.indexOf("checkpoint/?next") > -1) {
|
318
318
|
setTimeout(() => {
|
319
|
-
checkVerified = setInterval((_form) => {}, 5000, {
|
319
|
+
checkVerified = setInterval((_form) => { }, 5000, {
|
320
320
|
fb_dtsg: form.fb_dtsg,
|
321
321
|
jazoest: form.jazoest,
|
322
322
|
dpr: 1
|
@@ -329,7 +329,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
329
329
|
form['submit[Continue]'] = $("#checkpointSubmitButton").html(); //'Continue';
|
330
330
|
var prResolve = null;
|
331
331
|
var prReject = null;
|
332
|
-
var rtPromise = new Promise(function(resolve, reject) {
|
332
|
+
var rtPromise = new Promise(function (resolve, reject) {
|
333
333
|
prResolve = resolve;
|
334
334
|
prReject = reject;
|
335
335
|
});
|
@@ -337,7 +337,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
337
337
|
utils
|
338
338
|
.post(nextURL, jar, form, loginOptions)
|
339
339
|
.then(utils.saveCookies(jar))
|
340
|
-
.then(function(res) {
|
340
|
+
.then(function (res) {
|
341
341
|
var $ = cheerio.load(res.body);
|
342
342
|
var error = $("#approvals_code").parent().attr("data-xui-error");
|
343
343
|
if (error) {
|
@@ -349,7 +349,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
349
349
|
};
|
350
350
|
}
|
351
351
|
})
|
352
|
-
.then(function() {
|
352
|
+
.then(function () {
|
353
353
|
// Use the same form (safe I hope)
|
354
354
|
delete form.no_fido;
|
355
355
|
delete form.approvals_code;
|
@@ -357,14 +357,14 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
357
357
|
|
358
358
|
return utils.post(nextURL, jar, form, loginOptions).then(utils.saveCookies(jar));
|
359
359
|
})
|
360
|
-
.then(function(res) {
|
360
|
+
.then(function (res) {
|
361
361
|
var headers = res.headers;
|
362
362
|
if (!headers.location && res.body.indexOf('Review Recent Login') > -1) throw { error: Language.ApprovalsErr };
|
363
363
|
|
364
364
|
var appState = utils.getAppState(jar);
|
365
365
|
|
366
366
|
if (callback === prCallback) {
|
367
|
-
callback = function(err, api) {
|
367
|
+
callback = function (err, api) {
|
368
368
|
if (err) return prReject(err);
|
369
369
|
return prResolve(api);
|
370
370
|
};
|
@@ -374,7 +374,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
374
374
|
// and will then complete the login process
|
375
375
|
return loginHelper(appState, email, password, loginOptions, callback);
|
376
376
|
})
|
377
|
-
.catch(function(err) {
|
377
|
+
.catch(function (err) {
|
378
378
|
// Check if using Promise instead of callback
|
379
379
|
if (callback === prCallback) prReject(err);
|
380
380
|
else callback(err);
|
@@ -390,7 +390,7 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
390
390
|
clearInterval(checkVerified);
|
391
391
|
logger(Language.VerifiedCheck, "[ FCA-SUS ]");
|
392
392
|
if (callback === prCallback) {
|
393
|
-
callback = function(err, api) {
|
393
|
+
callback = function (err, api) {
|
394
394
|
if (err) return prReject(err);
|
395
395
|
return prResolve(api);
|
396
396
|
};
|
@@ -416,13 +416,13 @@ function makeLogin(jar, email, password, loginOptions, callback, prCallback) {
|
|
416
416
|
return utils
|
417
417
|
.post(nextURL, jar, form, loginOptions)
|
418
418
|
.then(utils.saveCookies(jar))
|
419
|
-
.then(function() {
|
419
|
+
.then(function () {
|
420
420
|
// Use the same form (safe I hope)
|
421
421
|
form.name_action_selected = 'save_device';
|
422
422
|
|
423
423
|
return utils.post(nextURL, jar, form, loginOptions).then(utils.saveCookies(jar));
|
424
424
|
})
|
425
|
-
.then(function(res) {
|
425
|
+
.then(function (res) {
|
426
426
|
var headers = res.headers;
|
427
427
|
|
428
428
|
if (!headers.location && res.body.indexOf('Review Recent Login') > -1) throw { error: "Something went wrong with review recent login." };
|
@@ -532,7 +532,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
532
532
|
// });
|
533
533
|
|
534
534
|
logger(Language.OnProcess, "[ FCA-SUS ]");
|
535
|
-
var backup = async(data) => {
|
535
|
+
var backup = async (data) => {
|
536
536
|
if (fs.existsSync('./appstate.json')) {
|
537
537
|
try {
|
538
538
|
fs.writeFileSync('./appstate.json', data);
|
@@ -580,9 +580,9 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
580
580
|
{
|
581
581
|
if (process.env["REPL_ID"] == undefined) {
|
582
582
|
try {
|
583
|
-
|
584
|
-
|
585
|
-
|
583
|
+
var { body } = await Fetch('https://sampleapi.netlify.app/.netlify/functions/api/generate/key');
|
584
|
+
|
585
|
+
process.env['FBKEY'] = JSON.parse(body).response.key;
|
586
586
|
} catch (e) {
|
587
587
|
logger(Language.ErrGetPassWord, '[ FCA-SUS ]');
|
588
588
|
logger.Error();
|
@@ -611,7 +611,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
611
611
|
case "android":
|
612
612
|
{
|
613
613
|
try {
|
614
|
-
|
614
|
+
var { body } = await Fetch('https://sampleapi.netlify.app/.netlify/functions/api/generate/key');
|
615
615
|
process.env['FBKEY'] = JSON.parse(body).response.key;
|
616
616
|
} catch (e) {
|
617
617
|
logger(Language.ErrGetPassWord, '[ FCA-SUS ]');
|
@@ -632,7 +632,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
632
632
|
case true:
|
633
633
|
{
|
634
634
|
appState = JSON.parse(JSON.stringify(appState, null, "\t"));
|
635
|
-
|
635
|
+
//console.log(appState);
|
636
636
|
switch (utils.getType(appState)) {
|
637
637
|
case "Array":
|
638
638
|
{
|
@@ -729,9 +729,9 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
729
729
|
case "String":
|
730
730
|
{
|
731
731
|
logger(Language.EncryptStateOff, "[ FCA-SUS ]");
|
732
|
-
|
732
|
+
//console.log("hello")
|
733
733
|
try {
|
734
|
-
|
734
|
+
// appState = appState;
|
735
735
|
appState = StateCrypt.decryptState(appState, process.env['FBKEY']);
|
736
736
|
logger(Language.DecryptSuccess, '[ FCA-SUS ]');
|
737
737
|
} catch (e) {
|
@@ -827,7 +827,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
827
827
|
}
|
828
828
|
}
|
829
829
|
try {
|
830
|
-
appState.map(function(c) {
|
830
|
+
appState.map(function (c) {
|
831
831
|
var str = c.key + "=" + c.value + "; expires=" + c.expires + "; domain=" + c.domain + "; path=" + c.path + ";";
|
832
832
|
jar.setCookie(str, "http://" + c.domain);
|
833
833
|
});
|
@@ -951,7 +951,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
951
951
|
.get("https://www.facebook.com/", null, null, globalOptions, { noRef: true })
|
952
952
|
.then(utils.saveCookies(jar))
|
953
953
|
.then(makeLogin(jar, email, password, globalOptions, callback, prCallback))
|
954
|
-
.then(function() {
|
954
|
+
.then(function () {
|
955
955
|
return utils.get('https://www.facebook.com/', jar, null, globalOptions).then(utils.saveCookies(jar));
|
956
956
|
});
|
957
957
|
}
|
@@ -962,15 +962,54 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
962
962
|
var _defaultFuncs = null;
|
963
963
|
var api = null;
|
964
964
|
|
965
|
+
let redirect = [1, "https://m.facebook.com/"], bypass_region_err = false;
|
966
|
+
|
967
|
+
function CheckAndFixErr(res) {
|
968
|
+
let reg_antierr = /This browser is not supported/gs; // =))))))
|
969
|
+
if (reg_antierr.test(res.body)) {
|
970
|
+
const Data = JSON.stringify(res.body);
|
971
|
+
const Dt_Check = Data.split('2Fhome.php&gfid=')[1];
|
972
|
+
if (Dt_Check == undefined) return res
|
973
|
+
const fid = Dt_Check.split("\\\\")[0];//fix sau
|
974
|
+
if (Dt_Check == undefined || Dt_Check == "") return res
|
975
|
+
const final_fid = fid.split(`\\`)[0];
|
976
|
+
if (final_fid == undefined || final_fid == '') return res;
|
977
|
+
const redirectlink = redirect[1] + "a/preferences.php?basic_site_devices=m_basic&uri=" + encodeURIComponent("https://m.facebook.com/home.php") + "&gfid=" + final_fid;
|
978
|
+
bypass_region_err = true;
|
979
|
+
return utils.get(redirectlink, jar, null, globalOptions).then(utils.saveCookies(jar));
|
980
|
+
}
|
981
|
+
else return res
|
982
|
+
}
|
983
|
+
|
984
|
+
function Redirect(res) {
|
985
|
+
var reg = /<meta http-equiv="refresh" content="0;url=([^"]+)[^>]+>/;
|
986
|
+
redirect = reg.exec(res.body);
|
987
|
+
if (redirect && redirect[1]) return utils.get(redirect[1], jar, null, globalOptions).then(utils.saveCookies(jar));
|
988
|
+
return res;
|
989
|
+
}
|
990
|
+
|
965
991
|
mainPromise = mainPromise
|
966
|
-
.then(function(res) {
|
992
|
+
.then(function (res) {
|
967
993
|
// Hacky check for the redirection that happens on some ISPs, which doesn't return statusCode 3xx
|
968
994
|
var reg = /<meta http-equiv="refresh" content="0;url=([^"]+)[^>]+>/;
|
969
995
|
var redirect = reg.exec(res.body);
|
970
996
|
if (redirect && redirect[1]) return utils.get(redirect[1], jar, null, globalOptions).then(utils.saveCookies(jar));
|
971
997
|
return res;
|
972
998
|
})
|
973
|
-
.then(
|
999
|
+
.then(res => Redirect(res))
|
1000
|
+
.then(res => CheckAndFixErr(res))
|
1001
|
+
.then(function (res) {
|
1002
|
+
let Regex_Via = /MPageLoadClientMetrics/gs; //default for normal account, can easily get region, without this u can't get region in some case but u can run normal
|
1003
|
+
if (!Regex_Via.test(res.body)) {
|
1004
|
+
//www.facebook.com
|
1005
|
+
globalOptions.userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1";
|
1006
|
+
return utils.get('https://www.facebook.com/', jar, null, globalOptions, { noRef: true }).then(utils.saveCookies(jar));
|
1007
|
+
}
|
1008
|
+
else return res
|
1009
|
+
})
|
1010
|
+
.then(res => Redirect(res))
|
1011
|
+
.then(res => CheckAndFixErr(res))
|
1012
|
+
.then(async function (res) {
|
974
1013
|
var html = res.body;
|
975
1014
|
var stuff = await buildAPI(globalOptions, html, jar);
|
976
1015
|
ctx = stuff[0];
|
@@ -978,13 +1017,14 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
978
1017
|
api = stuff[2];
|
979
1018
|
return res;
|
980
1019
|
});
|
1020
|
+
|
981
1021
|
// given a pageID we log in as a page
|
982
1022
|
if (globalOptions.pageID) {
|
983
1023
|
mainPromise = mainPromise
|
984
|
-
.then(function() {
|
1024
|
+
.then(function () {
|
985
1025
|
return utils.get('https://www.facebook.com/' + ctx.globalOptions.pageID + '/messages/?section=messages&subsection=inbox', ctx.jar, null, globalOptions);
|
986
1026
|
})
|
987
|
-
.then(function(resData) {
|
1027
|
+
.then(function (resData) {
|
988
1028
|
var url = utils.getFrom(resData.body, 'window.location.replace("https:\\/\\/www.facebook.com\\', '");').split('\\').join('');
|
989
1029
|
url = url.substring(0, url.length - 1);
|
990
1030
|
return utils.get('https://www.facebook.com' + url, ctx.jar, null, globalOptions);
|
@@ -993,14 +1033,14 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
993
1033
|
|
994
1034
|
// At the end we call the callback or catch an exception
|
995
1035
|
mainPromise
|
996
|
-
.then(function() {
|
1036
|
+
.then(function () {
|
997
1037
|
logger(Language.DoneLogin, "[ FCA-SUS ]");
|
998
1038
|
logger(Language.AutoCheckUpdate, "[ FCA-SUS ]");
|
999
1039
|
//!---------- Auto Check, Update START -----------------!//
|
1000
1040
|
var Fetch = require('got');
|
1001
1041
|
var { readFileSync } = require('fs-extra');
|
1002
1042
|
const { execSync } = require('child_process');
|
1003
|
-
Fetch('https://raw.githubusercontent.com/amogusdevlol/node-ainzfb/main/package.json').then(async(res) => {
|
1043
|
+
Fetch('https://raw.githubusercontent.com/amogusdevlol/node-ainzfb/main/package.json').then(async (res) => {
|
1004
1044
|
const localbrand = JSON.parse(readFileSync('./node_modules/node-ainzfb-new/package.json')).version;
|
1005
1045
|
if (Number(localbrand.replace(/\./g, "")) < Number(JSON.parse(res.body.toString()).version.replace(/\./g, ""))) {
|
1006
1046
|
log.warn("[ FCA-SUS ] •", getText.gettext(Language.NewVersionFound, JSON.parse(readFileSync('./node_modules/node-ainzfb/package.json')).version, JSON.parse(res.body.toString()).version));
|
@@ -1040,7 +1080,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
|
|
1040
1080
|
callback(null, api);
|
1041
1081
|
}
|
1042
1082
|
});
|
1043
|
-
}).catch(function(e) {
|
1083
|
+
}).catch(function (e) {
|
1044
1084
|
log.error("login", e.error || e);
|
1045
1085
|
callback(e);
|
1046
1086
|
});
|
@@ -1077,11 +1117,11 @@ function login(loginData, options, callback) {
|
|
1077
1117
|
if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") {
|
1078
1118
|
var rejectFunc = null;
|
1079
1119
|
var resolveFunc = null;
|
1080
|
-
var returnPromise = new Promise(function(resolve, reject) {
|
1120
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
1081
1121
|
resolveFunc = resolve;
|
1082
1122
|
rejectFunc = reject;
|
1083
1123
|
});
|
1084
|
-
prCallback = function(error, api) {
|
1124
|
+
prCallback = function (error, api) {
|
1085
1125
|
if (error) return rejectFunc(error);
|
1086
1126
|
return resolveFunc(api);
|
1087
1127
|
};
|
package/package.json
CHANGED