Skip to content

Instantly share code, notes, and snippets.

@dvygolov
Last active January 8, 2026 10:33
Show Gist options
  • Select an option

  • Save dvygolov/3ded780475723c48339eb1370dcd48a7 to your computer and use it in GitHub Desktop.

Select an option

Save dvygolov/3ded780475723c48339eb1370dcd48a7 to your computer and use it in GitHub Desktop.
Ways to get various Facebook variablies useful in creating your own js-scripts
let accessToken = document.documentElement.innerHTML.match(new RegExp("EAABsbCS1[a-zA-Z0-9]*"))[0];
let accessToken2 = __accessToken; //The same as accessToken but easier to write
//built-in public GraphAPI object usage
await require('AdsGraphAPI').get('15.0').adaccount('11111111111').get();
//built-in private GraphAPI object usage START
let fbVariables =
JSON.stringify({
"device_id": "",
"flow": "FB_WEB_SETTINGS",
"interface": "FB_WEB",
"node_identifier": "personal_info"
});
let fbDocId = '9146498392086837';
await new AsyncRequest()
.setURI('/api/graphql')
.setMethod("POST")
.setData({ doc_id: fbDocId, variables: fbVariables })
.send();
//Built-in Private GraphAPI usage END
let lsd = require("LSD").token;
let dtsg = require("DTSGInitData").token;
let dtsg_ag = require("DTSGInitData").async_get_token; //The same as DTSG but for GET requests
let sessionId = require('AdsInterfacesSessionConfig').sessionID; //in some cases this one is required
let uid = require("CurrentUserInitialData").USER_ID;
let adAccountId = require("BusinessUnifiedNavigationContext").adAccountID;
let businessId = require("BizSiteIdentifier.brands").getBusinessID();
var spinR = require(["SiteData"]).__spin_r;
var spinB = require(["SiteData"]).__spin_b;
var spinT = require(["SiteData"]).__spin_t;
var hsi = require(["SiteData"]).hsi;
var dyn = get_dyn();
function get_dyn() {
function toCompressedString() {
$BitMap1 = [];
for (i in t) {
$BitMap1[t[i]] = 1;
}
if ($BitMap1["length"] === 0) {
return "";
}
var l = [];
var m = 1;
var n = $BitMap1[0] || 0;
var o = n.toString(2);
var p = 1;
for (; p < $BitMap1["length"]; p++) {
var q = $BitMap1[p] || 0;
if (q === n) {
m++;
} else {
l["push"](j(m));
n = q;
m = 1;
}
}
if (m) {
l["push"](j(m));
}
return k(o + l["join"](""));
}
function j(l) {
var m = l.toString(2);
var n = "0" ["repeat"](m["length"] - 1);
return n + m;
}
function k(l) {
var m = (l + "00000")["match"](/[01]{6}/g);
var n = "";
var o = 0;
for (; o < m["length"]; o++) {
n += h[parseInt(m[o], 2)];
}
return n;
}
var bd = document["body"]["innerHTML"]["match"](/\},([0-9])+\]/gi);
var hd = document["head"]["innerHTML"]["match"](/\},([0-9])+\]/gi);
var is = bd["concat"](hd);
var t = [];
for (x in is) {
if (is[x] != null) {
var p = is[x]["replace"]("},", "")["replace"]("]", "");
if (parseInt(p) >= 7) {
t["push"](parseInt(p));
}
}
}
var h = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
return toCompressedString();
}
@dvygolov
Copy link
Author

dvygolov commented Nov 1, 2022

a simple way to send body parameters

let body = {
  "av": uid,
  "__user": uid,
  "__a": 1,
  "__hs1": hsi,
  "comet_req": 0,
  "fb_dtsg": dtsg,
  "lsd": fb_lsd,
  "__spin_r": spinR,
  "__spin_b": spinB,
  "__spin_t": spinT,
  "__jssesw": 1,
  "fb_api_caller_class": "RelayModern",
  "fb_api_req_friendly_name": "CometFRXQuery",
  "variables": JSON.stringify(variables),
  "server_timestamps": true,
  "doc_id": 5144150312362297
};

let f = await fetch("https://www.facebook.com/api/graphql/", {
  credentials: "include",
  headers: {
    "Accept": "*/*",
    "Content-Type": "application/x-www-form-urlencoded",
    "X-FB-Friendly-Name": "CometFRXQuery",
    "X-FB-LSD": fb_lsd,
    "Alt-Used": "www.facebook.com",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "Pragma": "no-cache",
    "Cache-Control": "no-cache"
  },
  body: new URLSearchParams(body).toString(),
  method: "POST",
  mode: "cors"
});

@dvygolov
Copy link
Author

dvygolov commented Jan 8, 2026

Also look here for better private API usage example: https://gist.github.com/dvygolov/9a9602c69900f552635ed4ef7829659f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment