UNPKG

ayakashi

Version:

The next generation web scraping framework

104 lines (103 loc) 3.88 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = exports.getUserAgentData = void 0; //@ts-ignore const user_agents_1 = __importDefault(require("user-agents")); function getUserAgentData(sessionDb, userAgentModel, input) { return __awaiter(this, void 0, void 0, function* () { if (input.persistentSession) { return sessionDb.transaction(function (t) { return __awaiter(this, void 0, void 0, function* () { //return the saved data if we have already persisted them const savedData = yield userAgentModel.findOne({ transaction: t }); if (savedData) { return savedData.userAgentData; } //generate new data based on input const data = generate(input.agent, input.platform); //persist them yield userAgentModel.create({ userAgentData: data }, { transaction: t }); return data; }); }); } else { return generate(input.agent, input.platform); } }); } exports.getUserAgentData = getUserAgentData; function generate(agent, platform) { try { if (agent === "random") { return (new user_agents_1.default({ platform: platform || "Win32" })).data; } if (agent === "desktop") { return (new user_agents_1.default({ deviceCategory: "desktop", platform: platform || "Win32" })).data; } if (agent === "mobile") { return (new user_agents_1.default({ deviceCategory: "mobile", platform: platform || "Linux armv8l" })).data; } if (agent === "chrome-desktop") { return (new user_agents_1.default([ /Chrome/, { deviceCategory: "desktop", platform: platform || "Win32" } ])).data; } if (agent === "chrome-mobile") { return (new user_agents_1.default([ /Chrome/, { deviceCategory: "mobile", platform: platform || "Linux armv8l" } ])).data; } //default to chrome-desktop return (new user_agents_1.default([ /Chrome/, { deviceCategory: "desktop", platform: platform || "Win32" } ])).data; } catch (_e) { //default to chrome-desktop on invalid input return (new user_agents_1.default([ /Chrome/, { deviceCategory: "desktop", platform: "Win32" } ])).data; } } exports.generate = generate;