Fingerprint Pro Internals
Collector s157

Automation globals

the botd name list: __webdriver_evaluate, _phantom, __nightmare, webdriverio and the rest

Group: Automation and tampering · signal map · run it live

// s157 — sig_s157
// module cm, stage3, codes 0
//
// measures
//   window.document window
// engine
//   Object.setPrototypeOf() Object.getOwnPropertyNames() JSON.stringify() Error undefined
// reported value
//   null value
// probes
//   "$cdc_asdjflasutopfhvcZLmcf" "$cdc_asdjflasutopfhvcZLmcfl_" "$chrome_asyncScriptInfo" "CefSharp"
//   "ChromeDriverw" "RunPerfTest" "_Selenium_IDE_Recorder" "_WEBDRIVER_ELEM_CACHE"
//   "__$webdriverAsyncExecutor" "__driver_evaluate" "__driver_unwrapped" "__fxdriver_evaluate"
//   "__fxdriver_unwrapped" "__lastWatirAlert" "__lastWatirConfirm" "__lastWatirPrompt" "__nightmare"
//   "__phantomas" "__selenium_evaluate" "__selenium_unwrapped" "__webdriverFunc"
//   "__webdriver_evaluate" "__webdriver_script_fn" "__webdriver_script_func"
//   "__webdriver_script_function" "__webdriver_unwrapped" "_phantom" "_selenium" "awesomium"
//   "callPhantom" "calledSelenium" "cef" "cefsharp" "coachjs" "domAutomation"
//   "domAutomationController" "electron" "emit" "find" "fmget_targets" "fminer" "geb"
//   "headless_chrome" "nightmare" "nightmarejs" "number" "phantomas" "phantomjs" "rhino" "selenium"
//   "selenium-evaluate" "sequentum" "slimerjs" "spawn" "string" "unknown" "wdioElectron" "webdriver"
//   "webdriverio"
// compares against
//   != "number" !== -1 == "function" == "string" in "find"
// decides on
//   fn123: !(arg750 instanceof botdError)
//   fn123: typeof state != "number"
//   fn123: fn4(v876)
//   h_s157_fn3: v726 !== undefined
//   fn4: !!arg7 && typeof arg7.then == "function"
//   h_s157_fn5: typeof v965 == "string"
//   h_s157_fn5: h_s157_fn(arg830, v965)
//   h_s157_fn5: h_s157_fn6(arg830, arg832 => v965.test(arg832)) != null
//   h_s157_fn: arg479.indexOf(arg480) !== -1
//   h_s157_fn6: "find" in arg892
//   h_s157_fn6: arg893(arg892[v1010], v1010, arg892)
//
// 6 owned helpers inlined below.
// shared with other collectors, see agent.clean.js:
//   botdError:4843 fn123:6460 fn4:60

// agent.clean.js:3864
function h_s157_fn(arg479, arg480) {
  return arg479.indexOf(arg480) !== -1;
}

// agent.clean.js:4823
const h_s157_fn2 = {
  Awesomium: "awesomium",
  Cef: "cef",
  CefSharp: "cefsharp",
  CoachJS: "coachjs",
  Electron: "electron",
  FMiner: "fminer",
  Geb: "geb",
  NightmareJS: "nightmarejs",
  Phantomas: "phantomas",
  PhantomJS: "phantomjs",
  Rhino: "rhino",
  Selenium: "selenium",
  Sequentum: "sequentum",
  SlimerJS: "slimerjs",
  WebDriverIO: "webdriverio",
  WebDriver: "webdriver",
  HeadlessChrome: "headless_chrome",
  Unknown: "unknown",
};

// agent.clean.js:5173
const h_s157_fn3 = function () {
    const v721 = {
      [h_s157_fn2.Awesomium]: { window: ["awesomium"] },
      [h_s157_fn2.Cef]: { window: ["RunPerfTest"] },
      [h_s157_fn2.CefSharp]: { window: ["CefSharp"] },
      [h_s157_fn2.CoachJS]: { window: ["emit"] },
      [h_s157_fn2.FMiner]: { window: ["fmget_targets"] },
      [h_s157_fn2.Geb]: { window: ["geb"] },
      [h_s157_fn2.NightmareJS]: { window: ["__nightmare", "nightmare"] },
      [h_s157_fn2.Phantomas]: { window: ["__phantomas"] },
      [h_s157_fn2.PhantomJS]: { window: ["callPhantom", "_phantom"] },
      [h_s157_fn2.Rhino]: { window: ["spawn"] },
      [h_s157_fn2.Selenium]: {
        window: [
          "_Selenium_IDE_Recorder",
          "_selenium",
          "calledSelenium",
          /^([a-z]){3}_.*_(Array|Promise|Symbol)$/,
        ],
        document: ["__selenium_evaluate", "selenium-evaluate", "__selenium_unwrapped"],
      },
      [h_s157_fn2.WebDriverIO]: { window: ["wdioElectron"] },
      [h_s157_fn2.WebDriver]: {
        window: [
          "webdriver",
          "__webdriverFunc",
          "__lastWatirAlert",
          "__lastWatirConfirm",
          "__lastWatirPrompt",
          "_WEBDRIVER_ELEM_CACHE",
          "ChromeDriverw",
        ],
        document: [
          "__webdriver_script_fn",
          "__driver_evaluate",
          "__webdriver_evaluate",
          "__fxdriver_evaluate",
          "__driver_unwrapped",
          "__webdriver_unwrapped",
          "__fxdriver_unwrapped",
          "__webdriver_script_fn",
          "__webdriver_script_func",
          "__webdriver_script_function",
          "$cdc_asdjflasutopfhvcZLmcf",
          "$cdc_asdjflasutopfhvcZLmcfl_",
          "$chrome_asyncScriptInfo",
          "__$webdriverAsyncExecutor",
        ],
      },
      [h_s157_fn2.HeadlessChrome]: { window: ["domAutomation", "domAutomationController"] },
    };
    let v722;
    const v723 = {},
      v724 = h_s157_fn4(window);
    let v725 = [];
    for (v722 in (window.document !== undefined && (v725 = h_s157_fn4(window.document)), v721)) {
      const v726 = v721[v722];
      if (v726 !== undefined) {
        const v727 = v726.window !== undefined && h_s157_fn5(v724, ...v726.window),
          v728 =
            !(v726.document === undefined || !v725.length) && h_s157_fn5(v725, ...v726.document);
        v723[v722] = v727 || v728;
      }
    }
    return v723;
  };

// agent.clean.js:6095
const sig_s157 = fn123(h_s157_fn3);

// agent.clean.js:6877
function h_s157_fn4(arg783) {
  return Object.getOwnPropertyNames(arg783);
}

// agent.clean.js:7311
function h_s157_fn5(arg830, ...arg831) {
  for (const v965 of arg831) {
    if (typeof v965 == "string") {
      if (h_s157_fn(arg830, v965)) {
        return true;
      }
    } else {
      if (h_s157_fn6(arg830, (arg832) => v965.test(arg832)) != null) {
        return true;
      }
    }
  }
  return false;
}

// agent.clean.js:7887
function h_s157_fn6(arg892, arg893) {
  if ("find" in arg892) {
    return arg892.find(arg893);
  }
  for (let v1010 = 0; v1010 < arg892.length; v1010++) {
    if (arg893(arg892[v1010], v1010, arg892)) {
      return arg892[v1010];
    }
  }
}