UAParser.js - Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment.

Overview

UAParser.js

JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data with relatively small footprint (~17KB minified, ~6KB gzipped) that can be used either in browser (client-side) or node.js (server-side).

Documentation

Constructor

  • new UAParser([uastring][,extensions])

    • returns new instance
  • UAParser([uastring][,extensions])

    • returns result object { ua: '', browser: {}, cpu: {}, device: {}, engine: {}, os: {} }

Methods

  • getBrowser()
    • returns { name: '', version: '' }
# Possible 'browser.name':
2345Explorer, 360 Browser, Amaya, Android Browser, Arora, Avant, Avast, AVG,
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
Chrome Headless, Chrome WebView, Chrome, Chromium, Comodo Dragon, Dillo,
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec, 
Firebird, Firefox [Reality], Flock, Flow, GSA, GoBrowser, Huawei Browser, 
ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel, Instagram, 
Iridium, Iron, Jasmine, K-Meleon, Kindle, Klar, Konqueror, LBBROWSER, Line, 
LinkedIn, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser, Maemo, Maxthon, 
MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront, NetSurf, Netfront, 
Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb, Opera Coast, 
Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris, Puffin, QQ, 
QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari, Sailfish Browser, 
Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim, SlimBrowser, Swiftfox, 
Tesla, Tizen Browser, UCBrowser, UP.Browser, Vivaldi, Waterfox, WeChat, Weibo, 
Yandex, baidu, iCab, w3m, Whale Browser...

# 'browser.version' determined dynamically
  • getDevice()
    • returns { model: '', type: '', vendor: '' }
# Possible 'device.type':
console, mobile, tablet, smarttv, wearable, embedded

# Possible 'device.vendor':
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
Essential, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG, 
Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya,
Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens,
Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...

# 'device.model' determined dynamically
  • getEngine()
    • returns { name: '', version: '' }
# Possible 'engine.name'
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, Links, Lynx, NetFront,
NetSurf, Presto, Tasman, Trident, w3m, WebKit

# 'engine.version' determined dynamically
  • getOS()
    • returns { name: '', version: '' }
# Possible 'os.name'
AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS, 
Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS, 
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix, 
Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD, PCLinuxOS, 
Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS, RISC OS, Sabayon, 
Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix, 
VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ...

# 'os.version' determined dynamically
  • getCPU()
    • returns { architecture: '' }
# Possible 'cpu.architecture'
68k, amd64, arm[64/hf], avr, ia[32/64], irix[64], mips[64], pa-risc, ppc, sparc[64]
  • getResult()

    • returns { ua: '', browser: {}, cpu: {}, device: {}, engine: {}, os: {} }
  • getUA()

    • returns UA string of current instance
  • setUA(uastring)

    • set UA string to be parsed
    • returns current instance

Usage

Using HTML

<!doctype html>
<html>
<head>
<script src="ua-parser.min.js"></script>
<script>

    var parser = new UAParser();
    console.log(parser.getResult());
    /*
        /// This will print an object structured like this:
        {
            ua: "",
            browser: {
                name: "",
                version: "",
                major: "" //@deprecated
            },
            engine: {
                name: "",
                version: ""
            },
            os: {
                name: "",
                version: ""
            },
            device: {
                model: "",
                type: "",
                vendor: ""
            },
            cpu: {
                architecture: ""
            }
        }
    */
    // Default result depends on current window.navigator.userAgent value

    // Now let's try a custom user-agent string as an example
    var uastring1 = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.106 Chrome/15.0.874.106 Safari/535.2";
    parser.setUA(uastring1);
    var result = parser.getResult();
    // You can also use UAParser constructor directly without having to create an instance:
    // var result = UAParser(uastring1);

    console.log(result.browser);        // {name: "Chromium", version: "15.0.874.106"}
    console.log(result.device);         // {model: undefined, type: undefined, vendor: undefined}
    console.log(result.os);             // {name: "Ubuntu", version: "11.10"}
    console.log(result.os.version);     // "11.10"
    console.log(result.engine.name);    // "WebKit"
    console.log(result.cpu.architecture);   // "amd64"

    // Do some other tests
    var uastring2 = "Mozilla/5.0 (compatible; Konqueror/4.1; OpenBSD) KHTML/4.1.4 (like Gecko)";
    console.log(parser.setUA(uastring2).getBrowser().name); // "Konqueror"
    console.log(parser.getOS());                            // {name: "OpenBSD", version: undefined}
    console.log(parser.getEngine());                        // {name: "KHTML", version: "4.1.4"}

    var uastring3 = 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.7 Safari/534.11';
    console.log(parser.setUA(uastring3).getDevice().model); // "PlayBook"
    console.log(parser.getOS())                             // {name: "RIM Tablet OS", version: "1.0.0"}
    console.log(parser.getBrowser().name);                  // "Safari"

</script>
</head>
<body>
</body>
</html>

Using node.js

$ npm install ua-parser-js
var http = require('http');
var parser = require('ua-parser-js');

http.createServer(function (req, res) {
    // get user-agent header
    var ua = parser(req.headers['user-agent']);
    // write the result as response
    res.end(JSON.stringify(ua, null, '  '));
})
.listen(1337, '127.0.0.1');

console.log('Server running at http://127.0.0.1:1337/');

Using TypeScript

$ npm install --save @types/ua-parser-js
# Download TS type definition from DefinitelyTyped repository:
# https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ua-parser-js

Using jQuery/Zepto ($.ua)

Although written in vanilla js, this library will automatically detect if jQuery/Zepto is present and create $.ua object (with values based on its User-Agent) along with window.UAParser constructor. To get/set user-agent you can use: $.ua.get() / $.ua.set(uastring).

// Say we are in a browser with default user-agent: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0':

// Get the details
console.log($.ua.device);           // {vendor: "HTC", model: "Evo Shift 4G", type: "mobile"}
console.log($.ua.os);               // {name: "Android", version: "2.3.4"}
console.log($.ua.os.name);          // "Android"
console.log($.ua.get());            // "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0"

// Now lets try to reset to another custom user-agent
$.ua.set('Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; Xoom Build/HWI69) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13');

// Test again
console.log($.ua.browser.name);     // "Safari"
console.log($.ua.engine.name);      // "Webkit"
console.log($.ua.device);           // {vendor: "Motorola", model: "Xoom", type: "tablet"}
console.log(parseInt($.ua.browser.version.split('.')[0], 10));  // 4

// Add class to <body> tag
// <body class="ua-browser-safari ua-devicetype-tablet">
$('body').addClass('ua-browser-' + $.ua.browser.name + ' ua-devicetype-' + $.ua.device.type);

Using Extension

  • UAParser([uastring,] extensions)
// Example:
var myOwnListOfBrowsers = [
    [/(mybrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]
];
var myParser = new UAParser({ browser: myOwnListOfBrowsers });
var myUA = 'Mozilla/5.0 MyBrowser/1.3';
console.log(myParser.setUA(myUA).getBrowser());  // {name: "MyBrowser", version: "1.3"}

Development

Sponsors

Contributors

Made with contributors-img.

How To Contribute

  • Fork and clone this repository
  • Make some changes as required
  • Write unit test to showcase its functionality
  • Run the test suites to make sure it's not breaking anything $ npm test
  • Submit a pull request under develop branch

License

MIT License

Copyright (c) 2012-2021 Faisal Salman <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  •     TypeError: arr[i].toUpperCase is not a function

    TypeError: arr[i].toUpperCase is not a function

    we got this error when run test with mocha Node JS Version : 8.17.0 NPM version : 6.13.4 UA Parser JS Version : 0.7.23

    `<my_project_folder>node_modules/ua-parser-js/dist/ua-parser.min.js:4 (function(window,undefined){"use strict";var LIBVERSION="0.7.28",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded",UA_MAX_LENGTH=255;var AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",BROWSER="Browser",CHROME="Chrome",EDGE="Edge",FIREFOX="Firefox",GOOGLE="Google",HUAWEI="Huawei",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",OPERA="Opera",SAMSUNG="Samsung",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedReg

    TypeError: arr[i].toUpperCase is not a function
    
    opened by renata-aldi 10
  • Meteor package not working?

    Meteor package not working?

    I can't seem to access the UAParser object on the client. It always returns undefined, whether I use setUA or not. You can see this MeteorPad for examples of what I've tried. Any ideas? (FYI switched to feature detection (Modernizr and @supports), so don't look into on my account!)

    TODO 
    opened by jiku 7
  • device is not found

    device is not found

    Hi,

    This is the string I get for req.headers['user-agent']:

    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

    When I run the following code:

    const parser = require('ua-parser-js');
    const ua = req.headers['user-agent'];
    const uaObj = parser(ua);
    

    Then for uaObj.device I get: {vendor: undefined, model: undefined, type: undefined}

    opened by CrazySyntax 6
  • Not supported for Redmi devices!

    Not supported for Redmi devices!

    Hi, I am getting undefined for Redmi devices.

    device: Device { vendor: undefined, model: undefined, type: 'mobile' }, cpu: CPU { architecture: undefined }

    Enhancement 
    opened by nikunjdnp 6
  • Added a script to bump version in project files

    Added a script to bump version in project files

    Ussage:

    npm run verup - increment revision by 1 npm run verup 2 - increment revision by 2 npm run verup 1.0 - increment minor version by 1 npm run verup -- 1.0.0 - increment major version by 1 npm run verup -- -1 - decrement revision by 1

    Close #107.

    P.S. The script uses JSON.stringify for .json files, thus the diff in those files.

    opened by duzun 6
  • Android Browser reported as Mobile Safari

    Android Browser reported as Mobile Safari

    Obviously this is because the UA string for Android browser is super weird.

    Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

    Notice it claiming itself AppleWebKit and Mobile Safari...

    But the script should still handle it somehow, like take into account platform part Linux; U; Android 4.0.2.

    Open Discussion Enhancement TODO 
    opened by jayarjo 6
  • Samsung Android WebKit 537.36 does not return engine.name as WebKit

    Samsung Android WebKit 537.36 does not return engine.name as WebKit

    The useragent string below used to return WebKit for engine.name in v0.7.17, but now does not in v0.7.20.

    Mozilla/5.0 (Linux; Android 3.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36
    
    opened by isaachinman 5
  • Incorrect device type of MI 5

    Incorrect device type of MI 5

    UA: Mozilla/5.0 (Linux; Android 6.0.1; MI 5 Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36

    { vendor: 'Xiaomi', model: 'MI 5', type: 'tablet' }
    

    Correct - mobile

    opened by avdeev 5
  • Rewrite util.extend to a clone version

    Rewrite util.extend to a clone version

    In the recent versions(<= 0.7.9), the util.extend function merge extensions to regexes by Array.prototype.concat. When instantiating many UAParser object, it will cause tow problems:

    1.The util.extend continues pushing the new elements to regexes without remove them, so the newer regex will match the UA first even if the older regex can match. The parser1.getBrowser() should output 'Test' instead of 'TestUA' in this NodeJS program:

    var UAParser = require('ua-parser-js');
    
    var parser1 = new UAParser('TestUA v1.0.1', {
        browser: [
            [/(test).+v([\w\.]+)/i],
            [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]
        ]
    });
    
    var parser2 = new UAParser('TestUA v2.0.2', {
        browser: [
            [/(testua).+v([\w\.]+)/i],
            [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]
        ]
    });
    
    console.dir(parser1.getBrowser());
    // output: { name: 'TestUA', version: '1.0.1', major: '1' }
    
    console.dir(parser2.getBrowser());
    // output: { name: 'TestUA', version: '2.0.2', major: '2' }
    

    2.With the regexes's length inceasing, the memory usage could be high and result in memory leak. This is a test code:

    var uaparser = require('ua-parser-js');
    
    var runTimes = 0
    setInterval(function() {
        var info = uaparser('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36', {
            // any extensions if you like
            browser: [
                [/ucweb.+(ucbrowser)[\/\s]?([\w\.]+)/i, /(ucweb)[\/\s]?([\w\.]+)/i],
                [[uaparser.BROWSER.NAME, 'UCBrowser'], uaparser.BROWSER.VERSION]
            ]
        });
        runTimes++;
    }, 0);
    
    setInterval(function() {
        console.log('Run times:', runTimes, ' MemoryUsage:', process.memoryUsage());
    }, 1000);
    

    The program runs for about 14 minutes and crashed with error: RangeError: Maximum call stack size exceeded on my NodeJS 0.12.7. If you give a longer extensions array it will crash faster.

    This pull request rewrite util.extend to a clone version. The util.extend function won't change regexes and now return a copy of regexes by copy-on-write. If extensions[i] is not given the margedRegexes[i] will be a pointer to regexes[i] and if extensions[i] is given the margedRegexes[i] will be extensions[i].concat(regexes[i]). The concat doesn't change regexes.

    Bug Enhancement TODO 
    opened by malash 5
  • Troubles with some devices about `device`

    Troubles with some devices about `device`

    UA: Mozilla/5.0 (Linux; Android 5.0; SM-G900F Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36

    I've got undefined on all properties on device.


    List:

    • [ ] Samsung S5
    • [ ] Samsung S6
    opened by kud 5
  • Update version on NPM

    Update version on NPM

    The version that's currently on NPM is over 6 Months old. There have been several solid patches/updates on master over the last couple of months. Could you please push the newest version to NPM

    Cheers

    opened by startswithaj 5
  • Asus device undefined

    Asus device undefined

    Device model: VivoBook_ASUSLaptop X515FAC_X515FA

    const parser = new UAParser(navigator.userAgent);
    console.log(parser.getResult())
    

    prints:

    browser: {name: 'Chrome', version: '108.0.0.0', major: '108'}
    cpu: {architecture: 'amd64'}
    device: {vendor: undefined, model: undefined, type: undefined}
    engine: {name: 'Blink', version: '108.0.0.0'}
    os: {name: 'Windows', version: '10'}
    ua: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
    
    opened by laclance 1
  • Quest Pro device model is nor parsed correctly

    Quest Pro device model is nor parsed correctly

    The UA string for Quest Pro is Mozilla/5.0 (X11; Linux x86_64; Quest Pro) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/24.4.0.22.60.426469926 SamsungBrowser/4.0 Chrome/106.0.5249.181 VR Safari/537.36. The result.device.model detected is Quest, but it should be Quest Pro.

    opened by Ledzz 0
  • Chrome browser on sharp Mobile phone detected as huawei tablet

    Chrome browser on sharp Mobile phone detected as huawei tablet

    Hello Thank you for the wonderful ua-parser-js.

    Found a little problem with this chrome browser on sharp Mobile phone detected as huawei tablet ua sample: "Mozilla/5.0 (Linux; Android 7.0; SH-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36"

    opened by guoguokakukaku 1
  • Support for various smart tvs

    Support for various smart tvs

    Fixes: #607 Supersedes: #610 Relates to: https://github.com/garritfra/ua-parser-js/pull/8

    Adds support for various smart tvs. The main addition is the evaluation of the Hbbtv section in the user agent, which implies that the device is a smart tv.

    Also adds various smarttv user agents to the test cases.

    opened by garritfra 0
  • Please add support for new Opreating System (Linux Distro) : PiluX

    Please add support for new Opreating System (Linux Distro) : PiluX

    Hi,

    We have been creating Operating System (Ubuntu based) for few years. We have planned to release it to public in summer 2023.

    Our OS is using its own "User Agent String" in browsers, so can ua-parser-js add support? You can learn with this examples written below how to detect PiluX operating system.

    Examples used HTML page: https://www.teteos.net/test (This page using ua-parser-js javascript library.)

    Ubuntu 22.04, Firefox 108: User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0

    OS - Name : Ubuntu
    OS - Version : undefined
    CPU - Arch : amd64
    
    Browser - Name : Firefox
    Browser - Version : 108.0
    
    Engine - Name : Gecko
    Engine - Version : 108.0
    

    PiluX version v2.1, Firefox 108: This should be: User Agent: Mozilla/5.0 (X11; PiluX; Ubuntu; Linux x86_64; rv:108.0) PiluX/2.1 PiluXServer/2.1 Gecko/20100101 Firefox/108.0

    OS - Name : PiluX
    OS - Version : 2.1
    CPU - Arch : amd64
    
    Browser - Name : Firefox
    Browser - Version : 108.0
    
    Engine - Name : Gecko
    Engine - Version : 108.0
    

    PiluX Server version v2.1, Firefox 108: This should be: User Agent: Mozilla/5.0 (X11; PiluX; Ubuntu; Linux x86_64; rv:108.0) PiluX/2.1 PiluXServer/2.1 Gecko/20100101 Firefox/108.0

    OS - Name : PiluX Server
    OS - Version : 2.1
    CPU - Arch : amd64
    
    Browser - Name : Firefox
    Browser - Version : 108.0
    
    Engine - Name : Gecko
    Engine - Version : 108.0
    

    UA string usage from PiluX: Mozilla/5.0 ([Window System, "X11" or "Wayland"]; PiluX; [PiluX some versions Ubuntu, Debian, PopOS or Linux Mint Based], Linux [arch]; rv:[Firefox or Engine Version]) PiluX/[VersionNo Integer] Gecko/[Gecko Version] Firefox/[Firefox Version]

    If InString("PiluXServer"){ "PiluX Server" } else { "PiluX" }

    opened by hasanmerkit 0
Owner
Faisal Salman
Software Developer @faisalman
Faisal Salman
🦠🔬 Forta agent that detect deployment of smart contracts containing an exploit function

Attack Simulation Bot Description The agent detects deployment of smart contracts containing an exploit function. Using a simulation-based approach, t

Artem Kovalchuk 29 Dec 26, 2022
Detect browser, and render view according to the detected browser type.

react-browser-detector Detect browser, and render view according to the detected browser type. Installation To install, you can use npm or yarn: npm i

kirillsaint 5 Jul 13, 2022
Michael Schneider 4 Oct 26, 2022
This is a little script that shows how to ddos a website. Can bypass cloudfare & ddos-guard. Ip switcher and random user agent

This is a little script that shows how to ddos a website. Can bypass cloudfare & ddos-guard. Ip switcher and random user agent

null 13 Dec 17, 2022
A cloudflare worker to use the user-agent for ~~rickrolling~~ without a discord embed

nextcord.gay A cloudflare worker to use the user-agent for rickrolling without a discord embed Build npm run build Find the output in ./dist/worker.mj

Oliver Wilkes 10 Oct 4, 2022
This project will be using various AI and Rule Engine algorithm to detect various attack against a company!

?? Introduction This project will be using various AI and Rule Engine algorithm to detect various attack against a website! ?? Mission After starting

Harish S.G 4 Apr 29, 2022
Create a badge using GitHub Actions and GitHub Workflow CPU time

Generated Badges Create a badge using GitHub Actions and GitHub Workflow CPU time (no 3rd parties servers) Install $ npm i generated-badges -g Command

小弟调调™ 9 Dec 30, 2022
Github action to collect metrics (CPU, memory, I/O, etc ...) from your workflows to help you debug and optimize your CI/CD pipeline

workflow-telemetry-action A GitHub Action to track and monitor the resource metrics of your GitHub Action workflow runs. If the run is triggered via a

Thundra 32 Dec 30, 2022
WhyProfiler is a CPU profiler for Jupyter notebook that not only identifies hotspots but can suggest faster alternatives.

Introduction WhyProfiler is a CPU profiler for Jupyter notebook that not only identifies hotspots but can suggest faster alternatives. It is powered b

Robusta 44 Dec 5, 2022
mirrord lets you easily mirror traffic from your production environment to your development environment.

mirrord lets you easily mirror traffic from your Kubernetes cluster to your development environment. It comes as both Visual Studio Code extension and a CLI tool.

MetalBear 2.1k Dec 24, 2022
Detect webpage updates and notify user to reload. support vite and umijs

English | 简体中文 plugin-web-update-notification Detect webpage updates and notify user to reload. support vite and umijs. Take the git commit hash as th

Utopia 57 Dec 26, 2022
A lightweight extension to automatically detect and provide verbose warnings for embedded iframe elements in order to protect against Browser-In-The-Browser (BITB) attacks.

Enhanced iFrame Protection - Browser Extension Enhanced iFrame Protection (EIP) is a lightweight extension to automatically detect and provide verbose

odacavo 16 Dec 24, 2022
Browser In The Browser (BITB) attack is a sophisticated phishing and hard to detect.

BITB Browser In The Browser (BITB) attack is a sophisticated phishing and hard to detect. Goto: ?? MacOS-Chrome-DarkMode ?? MacOS-Chrome-LightMode ??

Lục Thiên Phong 18 Dec 4, 2022
This repository demonstrates how to integrate your Dialogflow agent with 3rd-party services services using a Node.JS backend service

This repository demonstrates how to integrate your Dialogflow agent with 3rd-party services services using a Node.JS backend service. Integrating your service allows you to take actions based on end-user expressions and send dynamic responses back to the end-user.

ddayto 10 Jul 21, 2022
100% type-safe query builder for node-postgres :: Generated types, call any function, tree-shakable, implicit type casts, and more

⚠️ This library is currently in alpha. Contributors wanted! tusken Postgres client from a galaxy far, far away. your database is the source-of-truth f

alloc 54 Dec 29, 2022
Cloudy is a set of constructs for the AWS Cloud Development Kit that aim to improve the DX by providing a faster and type-safe code environment.

cloudy-ts These packages aren't yet published on npm. This is still highly experimental. Need to figure out a few things before releasing the first ve

Cristian Pallarés 5 Nov 3, 2022
Keep the type of storage value unchanged and change array and object directly. Supports listening to the changes and setting expires.

proxy-web-storage A more convenient way to use storage through proxy. try it on codesandbox. Install npm i proxy-web-storage Features Base Keep the ty

null 221 Dec 25, 2022