diff --git a/index.html b/index.html index 2c8420c..09dfcae 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -isbot 🤖/👨‍🦰

Is this a bot user agent string?

Powered by Javascript package isbot

\ No newline at end of file +isbot 🤖/👨‍🦰

Is this a bot user agent string?

Click here to copy link

Powered by Javascript package isbot

\ No newline at end of file diff --git a/script.112d385d.js.map b/script.112d385d.js.map deleted file mode 100644 index be7c65a..0000000 --- a/script.112d385d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/index.js","src/amend/index.js","src/isbot/index.js","../src/amend/index.js","../src/list.json","script.js"],"names":["amend","list","RegExp","test","error","forEach","_ref","_ref2","_slicedToArray","search","replace","index","lastIndexOf","splice","flags","_list","WeakMap","_pattern","_update","WeakSet","_index","Isbot","patterns","_this","_classCallCheck","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","_classPrivateFieldSet","slice","_classPrivateMethodGet","_update2","call","Object","defineProperties","ua","entries","getOwnPropertyDescriptors","prototype","reduce","accumulator","prop","descriptor","assign","_defineProperty","bind","get","_createClass","key","_classPrivateFieldGet","Boolean","match","arguments","length","undefined","filter","entry","exclude","matches","_this2","filters","push","apply","rule","_index2","map","toLowerCase","join","indexOf","isbot","module","exports","_","_interopRequireDefault","require","obj","__esModule","default","timer","textarea","document","querySelector","output","query","window","location","change","target","clearTimeout","setTimeout","check","append","parent","tag","string","ele","createElement","appendChild","createTextNode","details","_isbot$matches","fragment","createDocumentFragment","is","found","find","pattern","innerHTML","trim","firstChild","removeChild","className","childNodes","child","_child$parentNode","parentNode","decodeURIComponent","navigator","userAgent","addEventListener","select"],"mappings":"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","file":"script.112d385d.js","sourceRoot":"../page","sourcesContent":["import { Isbot } from './isbot/index.js'\n\nconst isbot = new Isbot()\n\nexport default isbot\n","/**\n * Mutate given list of patter strings\n * @param {string[]} list\n * @returns {string[]}\n */\nexport function amend (list) {\n try {\n // Risk: Uses lookbehind assertion, avoid breakage in parsing by using RegExp constructor\n new RegExp('(? {\n const index = list.lastIndexOf(search)\n if (~index) {\n list.splice(index, 1, replace)\n }\n }\n )\n\n return list\n}\n","import list from '../list.json' assert { type: 'json' }\nimport { amend } from '../amend/index.js'\n\namend(list)\n\nconst flags = 'i'\n\n/**\n * Test user agents for matching patterns\n */\nexport class Isbot {\n /**\n * @type {string[]}\n */\n #list\n\n /**\n * @type {RegExp}\n */\n #pattern\n\n constructor (patterns) {\n this.#list = patterns || list.slice()\n this.#update()\n\n const isbot = ua => this.test(ua)\n\n return Object.defineProperties(\n isbot,\n Object.entries(Object.getOwnPropertyDescriptors(Isbot.prototype)).reduce(\n (accumulator, [prop, descriptor]) => {\n if (typeof descriptor.value === 'function') {\n Object.assign(\n accumulator,\n { [prop]: { value: this[prop].bind(this) } }\n )\n }\n if (typeof descriptor.get === 'function') {\n Object.assign(\n accumulator,\n { [prop]: { get: () => this[prop] } }\n )\n }\n return accumulator\n },\n {}\n )\n )\n }\n\n /**\n * Recreate the pattern from rules list\n */\n #update () {\n this.#pattern = new RegExp(\n this.#list.join('|'),\n flags\n )\n }\n\n /**\n * Find the first index of an existing rule or -1 if not found\n * @param {string} rule\n * @returns {number}\n */\n #index (rule) {\n return this.#list.indexOf(rule.toLowerCase())\n }\n\n /**\n * Get a clone of the pattern\n * @type RegExp\n */\n get pattern () {\n return new RegExp(this.#pattern)\n }\n\n /**\n * Match given string against out pattern\n * @param {string} ua User Agent string\n * @returns {boolean}\n */\n test (ua) {\n return Boolean(ua) && this.#pattern.test(ua)\n }\n\n /**\n * Get the match for strings' known crawler pattern\n * @param {string} ua User Agent string\n * @returns {string|null}\n */\n find (ua = '') {\n const match = ua.match(this.#pattern)\n return match && match[0]\n }\n\n /**\n * Get the patterns that match user agent string if any\n * @param {string} ua User Agent string\n * @returns {string[]}\n */\n matches (ua = '') {\n return this.#list.filter(\n entry => new RegExp(entry, flags).test(ua)\n )\n }\n\n /**\n * Clear all patterns that match user agent\n * @param {string} ua User Agent string\n * @returns {void}\n */\n clear (ua = '') {\n this.exclude(this.matches(ua))\n }\n\n /**\n * Extent patterns for known crawlers\n * @param {string[]} filters\n * @returns {void}\n */\n extend (filters = []) {\n [].push.apply(\n this.#list,\n filters.filter(\n rule => this.#index(rule) === -1\n ).map(\n filter => filter.toLowerCase()\n )\n )\n this.#update()\n }\n\n /**\n * Exclude patterns from bot pattern rule\n * @param {string[]} filters\n * @returns {void}\n */\n exclude (filters = []) {\n let { length } = filters\n while (length--) {\n const index = this.#index(filters[length])\n if (index > -1) {\n this.#list.splice(index, 1)\n }\n }\n this.#update()\n }\n\n /**\n * Create a new Isbot instance using given list or self's list\n * @param {string[]} [list]\n * @returns {Isbot}\n */\n spawn (list) {\n return new Isbot(list || this.#list)\n }\n}\n","/**\n * Mutate given list of patter strings\n * @param {string[]} list\n * @returns {string[]}\n */\nexport function amend (list) {\n try {\n // Risk: Uses lookbehind assertion, avoid breakage in parsing by using RegExp constructor\n new RegExp('(? {\n const index = list.lastIndexOf(search)\n if (~index) {\n list.splice(index, 1, replace)\n }\n }\n )\n\n return list\n}\n","module.exports=[\" daum[ /]\",\" deusu/\",\" yadirectfetcher\",\"(?:^| )site\",\"(?:^|[^g])news\",\"@[a-z]\",\"\\\\(at\\\\)[a-z]\",\"\\\\(github\\\\.com/\",\"\\\\[at\\\\][a-z]\",\"^12345\",\"^<\",\"^[\\\\w \\\\.\\\\-\\\\(\\\\)]+(/v?\\\\d+(\\\\.\\\\d+)?(\\\\.\\\\d{1,10})?)?$\",\"^[^ ]{50,}$\",\"^active\",\"^ad muncher\",\"^amaya\",\"^anglesharp/\",\"^anonymous\",\"^avsdevicesdk/\",\"^axios/\",\"^bidtellect/\",\"^biglotron\",\"^btwebclient/\",\"^castro\",\"^clamav[ /]\",\"^client/\",\"^cobweb/\",\"^coccoc\",\"^custom\",\"^ddg[_-]android\",\"^discourse\",\"^dispatch/\\\\d\",\"^downcast/\",\"^duckduckgo\",\"^facebook\",\"^fdm[ /]\\\\d\",\"^getright/\",\"^gozilla/\",\"^hatena\",\"^hobbit\",\"^hotzonu\",\"^hwcdn/\",\"^jeode/\",\"^jetty/\",\"^jigsaw\",\"^linkdex\",\"^lwp[-: ]\",\"^metauri\",\"^microsoft bits\",\"^movabletype\",\"^mozilla/\\\\d\\\\.\\\\d \\\\(compatible;?\\\\)$\",\"^mozilla/\\\\d\\\\.\\\\d \\\\w*$\",\"^navermailapp\",\"^netsurf\",\"^offline explorer\",\"^php\",\"^postman\",\"^postrank\",\"^python\",\"^read\",\"^reed\",\"^restsharp/\",\"^snapchat\",\"^space bison\",\"^svn\",\"^swcd \",\"^taringa\",\"^test certificate info\",\"^thumbor/\",\"^tumblr/\",\"^user-agent:mozilla\",\"^valid\",\"^venus/fedoraplanet\",\"^w3c\",\"^webbandit/\",\"^webcopier\",\"^wget\",\"^whatsapp\",\"^xenu link sleuth\",\"^yahoo\",\"^yandex\",\"^zdm/\\\\d\",\"^zoom marketplace/\",\"^{{.*}}$\",\"adbeat\\\\.com\",\"appinsights\",\"archive\",\"ask jeeves/teoma\",\"bit\\\\.ly/\",\"bluecoat drtr\",\"bot\",\"browsex\",\"burpcollaborator\",\"capture\",\"catch\",\"check\",\"chrome-lighthouse\",\"chromeframe\",\"cloud\",\"crawl\",\"cryptoapi\",\"dareboost\",\"datanyze\",\"dataprovider\",\"dejaclick\",\"dmbrowser\",\"download\",\"evc-batch/\",\"feed\",\"firephp\",\"freesafeip\",\"gomezagent\",\"google\",\"headlesschrome/\",\"http\",\"httrack\",\"hubspot marketing grader\",\"hydra\",\"ibisbrowser\",\"images\",\"inspect\",\"iplabel\",\"ips-agent\",\"java\",\"library\",\"mail\\\\.ru/\",\"manager\",\"monitor\",\"morningscore/\",\"neustar wpm\",\"nutch\",\"offbyone\",\"optimize\",\"pageburst\",\"pagespeed\",\"perl\",\"phantom\",\"pingdom\",\"powermarks\",\"preview\",\"proxy\",\"ptst[ /]\\\\d\",\"reader\",\"rexx;\",\"rigor\",\"rss\",\"scan\",\"scrape\",\"search\",\"serp ?reputation ?management\",\"server\",\"sogou\",\"sparkler/\",\"speedcurve\",\"spider\",\"splash\",\"statuscake\",\"stumbleupon\\\\.com\",\"supercleaner\",\"synapse\",\"synthetic\",\"torrent\",\"tracemyfile\",\"transcoder\",\"trendsmapresolver\",\"twingly recon\",\"url\",\"virtuoso\",\"wappalyzer\",\"webglance\",\"webkit2png\",\"websitemetadataretriever\",\"whatcms/\",\"wordpress\",\"zgrab\"];","import isbot from '..'\nimport { amend } from '../src/amend/index.js'\nimport list from '../src/list.json'\n\n{\n const textarea = document.querySelector('textarea')\n const output = document.querySelector('output')\n let timer\n\n const query = window.location.search.replace(/\\?ua=(.*)$/, '$1')\n\n amend(list)\n\n textarea.childNodes.forEach(child => child.parentNode?.removeChild(child))\n textarea.appendChild(document.createTextNode(\n query\n ? decodeURIComponent(query)\n : navigator.userAgent\n )\n )\n textarea.addEventListener('keyup', change)\n textarea.addEventListener('paste', change)\n textarea.addEventListener('focus', () => textarea.select())\n check()\n\n function change ({ target: { value } }) {\n clearTimeout(timer)\n timer = setTimeout(check, 200, value)\n }\n\n function append (parent, tag, string) {\n if (tag) {\n const ele = document.createElement('kbd')\n ele.appendChild(document.createTextNode(string))\n parent.appendChild(ele)\n } else {\n parent.appendChild(document.createTextNode(string))\n }\n }\n\n function details (ua) {\n const fragment = document.createDocumentFragment()\n const is = isbot(ua)\n const found = is && isbot.find(ua)\n const pattern = found\n ? isbot.matches(ua)?.find(pattern => new RegExp(pattern, 'i').test(found))\n : null\n\n is\n ? append(fragment, null, 'I think so, yes\\n')\n : append(fragment, null, 'I don\\'t think so, no\\nI could not find a pattern I recognise')\n found && append(fragment, null, 'The substring ')\n found && append(fragment, 'kbd', found)\n pattern && append(fragment, null, ' matches the pattern ')\n pattern && append(fragment, 'kbd', pattern)\n return fragment\n }\n\n function check (value = textarea.innerHTML) {\n value = value.trim()\n while (output.firstChild) {\n output.removeChild(output.firstChild)\n }\n if (value === '') {\n output.appendChild(\n document.createTextNode(\n 'Insert user agent string in the text box'\n )\n )\n return\n }\n\n output.appendChild(details(value))\n\n output.className = ''\n setTimeout(() => { output.className = 'highlight' }, 100)\n }\n}\n"]} \ No newline at end of file diff --git a/script.112d385d.js b/script.6d7019c8.js similarity index 85% rename from script.112d385d.js rename to script.6d7019c8.js index c3b5f7c..b7a7bea 100644 --- a/script.112d385d.js +++ b/script.6d7019c8.js @@ -5,6 +5,6 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel },{}],"Z5TU":[function(require,module,exports) { module.exports=[" daum[ /]"," deusu/"," yadirectfetcher","(?:^| )site","(?:^|[^g])news","@[a-z]","\\(at\\)[a-z]","\\(github\\.com/","\\[at\\][a-z]","^12345","^<","^[\\w \\.\\-\\(\\)]+(/v?\\d+(\\.\\d+)?(\\.\\d{1,10})?)?$","^[^ ]{50,}$","^active","^ad muncher","^amaya","^anglesharp/","^anonymous","^avsdevicesdk/","^axios/","^bidtellect/","^biglotron","^btwebclient/","^castro","^clamav[ /]","^client/","^cobweb/","^coccoc","^custom","^ddg[_-]android","^discourse","^dispatch/\\d","^downcast/","^duckduckgo","^facebook","^fdm[ /]\\d","^getright/","^gozilla/","^hatena","^hobbit","^hotzonu","^hwcdn/","^jeode/","^jetty/","^jigsaw","^linkdex","^lwp[-: ]","^metauri","^microsoft bits","^movabletype","^mozilla/\\d\\.\\d \\(compatible;?\\)$","^mozilla/\\d\\.\\d \\w*$","^navermailapp","^netsurf","^offline explorer","^php","^postman","^postrank","^python","^read","^reed","^restsharp/","^snapchat","^space bison","^svn","^swcd ","^taringa","^test certificate info","^thumbor/","^tumblr/","^user-agent:mozilla","^valid","^venus/fedoraplanet","^w3c","^webbandit/","^webcopier","^wget","^whatsapp","^xenu link sleuth","^yahoo","^yandex","^zdm/\\d","^zoom marketplace/","^{{.*}}$","adbeat\\.com","appinsights","archive","ask jeeves/teoma","bit\\.ly/","bluecoat drtr","bot","browsex","burpcollaborator","capture","catch","check","chrome-lighthouse","chromeframe","cloud","crawl","cryptoapi","dareboost","datanyze","dataprovider","dejaclick","dmbrowser","download","evc-batch/","feed","firephp","freesafeip","gomezagent","google","headlesschrome/","http","httrack","hubspot marketing grader","hydra","ibisbrowser","images","inspect","iplabel","ips-agent","java","library","mail\\.ru/","manager","monitor","morningscore/","neustar wpm","nutch","offbyone","optimize","pageburst","pagespeed","perl","phantom","pingdom","powermarks","preview","proxy","ptst[ /]\\d","reader","rexx;","rigor","rss","scan","scrape","search","serp ?reputation ?management","server","sogou","sparkler/","speedcurve","spider","splash","statuscake","stumbleupon\\.com","supercleaner","synapse","synthetic","torrent","tracemyfile","transcoder","trendsmapresolver","twingly recon","url","virtuoso","wappalyzer","webglance","webkit2png","websitemetadataretriever","whatcms/","wordpress","zgrab"]; },{}],"mpVp":[function(require,module,exports) { -"use strict";var e=r(require("..")),t=require("../src/amend/index.js"),n=r(require("../src/list.json"));function r(e){return e&&e.__esModule?e:{default:e}}{var d,i=document.querySelector("textarea"),o=document.querySelector("output"),a=window.location.search.replace(/\?ua=(.*)$/,"$1");function u(e){var t=e.target.value;clearTimeout(d),d=setTimeout(s,200,t)}function c(e,t,n){if(t){var r=document.createElement("kbd");r.appendChild(document.createTextNode(n)),e.appendChild(r)}else e.appendChild(document.createTextNode(n))}function l(t){var n,r=document.createDocumentFragment(),d=(0,e.default)(t),i=d&&e.default.find(t),o=i?null===(n=e.default.matches(t))||void 0===n?void 0:n.find(function(e){return new RegExp(e,"i").test(i)}):null;return c(r,null,d?"I think so, yes\n":"I don't think so, no\nI could not find a pattern I recognise"),i&&c(r,null,"The substring "),i&&c(r,"kbd",i),o&&c(r,null," matches the pattern "),o&&c(r,"kbd",o),r}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.innerHTML;for(e=e.trim();o.firstChild;)o.removeChild(o.firstChild);""!==e?(o.appendChild(l(e)),o.className="",setTimeout(function(){o.className="highlight"},100)):o.appendChild(document.createTextNode("Insert user agent string in the text box"))}(0,t.amend)(n.default),i.childNodes.forEach(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)}),i.appendChild(document.createTextNode(a?decodeURIComponent(a):navigator.userAgent)),i.addEventListener("keyup",u),i.addEventListener("paste",u),i.addEventListener("focus",function(){return i.select()}),s()} +"use strict";var e=o(require("..")),t=require("../src/amend/index.js"),n=o(require("../src/list.json"));function o(e){return e&&e.__esModule?e:{default:e}}{var d,i=document.querySelector("textarea"),r=document.querySelector("output"),a=document.querySelector('[id="copy-link"]'),u=window.location.search.replace(/\?ua=(.*)$/,"$1");function c(e){var t=e.target.value;clearTimeout(d),d=setTimeout(m,200,t)}function l(e,t,n){if(t){var o=document.createElement("kbd");o.appendChild(document.createTextNode(n)),e.appendChild(o)}else e.appendChild(document.createTextNode(n))}function s(t){var n,o=document.createDocumentFragment(),d=(0,e.default)(t),i=d&&e.default.find(t),r=i?null===(n=e.default.matches(t))||void 0===n?void 0:n.find(function(e){return new RegExp(e,"i").test(i)}):null;return l(o,null,d?"I think so, yes\n":"I don't think so, no\nI could not find a pattern I recognise"),i&&l(o,null,"The substring "),i&&l(o,"kbd",i),r&&l(o,null," matches the pattern "),r&&l(o,"kbd",r),o}function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.innerHTML;for(e=e.trim();r.firstChild;)r.removeChild(r.firstChild);""!==e?(r.appendChild(s(e)),r.className="",setTimeout(function(){r.className="highlight"},100)):r.appendChild(document.createTextNode("Insert user agent string in the text box"))}(0,t.amend)(n.default),i.childNodes.forEach(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)}),i.appendChild(document.createTextNode(u?decodeURIComponent(u):navigator.userAgent)),i.addEventListener("keyup",c),i.addEventListener("paste",c),i.addEventListener("focus",function(){return i.select()}),m(),a.addEventListener("click",function(){var e=document.location,t=e.protocol,n=e.host,o=e.pathname;navigator.clipboard.writeText([t,"//",n,o,"?ua=",encodeURIComponent(i.value)].join(""));var d=document.createElement("dialog");d.appendChild(document.createTextNode("copied to clipboard")),document.body.appendChild(d),setTimeout(function(){d.showModal(),setTimeout(function(){d.addEventListener("transitionend",function(){d.close(),document.body.removeChild(d)}),d.style.opacity=0},2e3)},0)})} },{"..":"mdAn","../src/amend/index.js":"s4Oy","../src/list.json":"Z5TU"}]},{},["mpVp"], null) -//# sourceMappingURL=script.112d385d.js.map \ No newline at end of file +//# sourceMappingURL=script.6d7019c8.js.map \ No newline at end of file diff --git a/script.6d7019c8.js.map b/script.6d7019c8.js.map new file mode 100644 index 0000000..ff60d4b --- /dev/null +++ b/script.6d7019c8.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/index.js","src/amend/index.js","src/isbot/index.js","../src/amend/index.js","../src/list.json","script.js"],"names":["amend","list","RegExp","test","error","forEach","_ref","_ref2","_slicedToArray","search","replace","index","lastIndexOf","splice","flags","_list","WeakMap","_pattern","_update","WeakSet","_index","Isbot","patterns","_this","_classCallCheck","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","_classPrivateFieldSet","slice","_classPrivateMethodGet","_update2","call","Object","defineProperties","ua","entries","getOwnPropertyDescriptors","prototype","reduce","accumulator","prop","descriptor","assign","_defineProperty","bind","get","_createClass","key","_classPrivateFieldGet","Boolean","match","arguments","length","undefined","filter","entry","exclude","matches","_this2","filters","push","apply","rule","_index2","map","toLowerCase","join","indexOf","isbot","module","exports","_","_interopRequireDefault","require","obj","__esModule","default","timer","textarea","document","querySelector","output","copyLink","query","window","location","change","target","clearTimeout","setTimeout","check","append","parent","tag","string","ele","createElement","appendChild","createTextNode","details","_isbot$matches","fragment","createDocumentFragment","is","found","find","pattern","innerHTML","trim","firstChild","removeChild","className","childNodes","child","_child$parentNode","parentNode","decodeURIComponent","navigator","userAgent","addEventListener","select","_document$location","protocol","host","pathname","clipboard","writeText","encodeURIComponent","dialog","body","showModal","close","style","opacity"],"mappings":"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","file":"script.6d7019c8.js","sourceRoot":"../page","sourcesContent":["import { Isbot } from './isbot/index.js'\n\nconst isbot = new Isbot()\n\nexport default isbot\n","/**\n * Mutate given list of patter strings\n * @param {string[]} list\n * @returns {string[]}\n */\nexport function amend (list) {\n try {\n // Risk: Uses lookbehind assertion, avoid breakage in parsing by using RegExp constructor\n new RegExp('(? {\n const index = list.lastIndexOf(search)\n if (~index) {\n list.splice(index, 1, replace)\n }\n }\n )\n\n return list\n}\n","import list from '../list.json' assert { type: 'json' }\nimport { amend } from '../amend/index.js'\n\namend(list)\n\nconst flags = 'i'\n\n/**\n * Test user agents for matching patterns\n */\nexport class Isbot {\n /**\n * @type {string[]}\n */\n #list\n\n /**\n * @type {RegExp}\n */\n #pattern\n\n constructor (patterns) {\n this.#list = patterns || list.slice()\n this.#update()\n\n const isbot = ua => this.test(ua)\n\n return Object.defineProperties(\n isbot,\n Object.entries(Object.getOwnPropertyDescriptors(Isbot.prototype)).reduce(\n (accumulator, [prop, descriptor]) => {\n if (typeof descriptor.value === 'function') {\n Object.assign(\n accumulator,\n { [prop]: { value: this[prop].bind(this) } }\n )\n }\n if (typeof descriptor.get === 'function') {\n Object.assign(\n accumulator,\n { [prop]: { get: () => this[prop] } }\n )\n }\n return accumulator\n },\n {}\n )\n )\n }\n\n /**\n * Recreate the pattern from rules list\n */\n #update () {\n this.#pattern = new RegExp(\n this.#list.join('|'),\n flags\n )\n }\n\n /**\n * Find the first index of an existing rule or -1 if not found\n * @param {string} rule\n * @returns {number}\n */\n #index (rule) {\n return this.#list.indexOf(rule.toLowerCase())\n }\n\n /**\n * Get a clone of the pattern\n * @type RegExp\n */\n get pattern () {\n return new RegExp(this.#pattern)\n }\n\n /**\n * Match given string against out pattern\n * @param {string} ua User Agent string\n * @returns {boolean}\n */\n test (ua) {\n return Boolean(ua) && this.#pattern.test(ua)\n }\n\n /**\n * Get the match for strings' known crawler pattern\n * @param {string} ua User Agent string\n * @returns {string|null}\n */\n find (ua = '') {\n const match = ua.match(this.#pattern)\n return match && match[0]\n }\n\n /**\n * Get the patterns that match user agent string if any\n * @param {string} ua User Agent string\n * @returns {string[]}\n */\n matches (ua = '') {\n return this.#list.filter(\n entry => new RegExp(entry, flags).test(ua)\n )\n }\n\n /**\n * Clear all patterns that match user agent\n * @param {string} ua User Agent string\n * @returns {void}\n */\n clear (ua = '') {\n this.exclude(this.matches(ua))\n }\n\n /**\n * Extent patterns for known crawlers\n * @param {string[]} filters\n * @returns {void}\n */\n extend (filters = []) {\n [].push.apply(\n this.#list,\n filters.filter(\n rule => this.#index(rule) === -1\n ).map(\n filter => filter.toLowerCase()\n )\n )\n this.#update()\n }\n\n /**\n * Exclude patterns from bot pattern rule\n * @param {string[]} filters\n * @returns {void}\n */\n exclude (filters = []) {\n let { length } = filters\n while (length--) {\n const index = this.#index(filters[length])\n if (index > -1) {\n this.#list.splice(index, 1)\n }\n }\n this.#update()\n }\n\n /**\n * Create a new Isbot instance using given list or self's list\n * @param {string[]} [list]\n * @returns {Isbot}\n */\n spawn (list) {\n return new Isbot(list || this.#list)\n }\n}\n","/**\n * Mutate given list of patter strings\n * @param {string[]} list\n * @returns {string[]}\n */\nexport function amend (list) {\n try {\n // Risk: Uses lookbehind assertion, avoid breakage in parsing by using RegExp constructor\n new RegExp('(? {\n const index = list.lastIndexOf(search)\n if (~index) {\n list.splice(index, 1, replace)\n }\n }\n )\n\n return list\n}\n","module.exports=[\" daum[ /]\",\" deusu/\",\" yadirectfetcher\",\"(?:^| )site\",\"(?:^|[^g])news\",\"@[a-z]\",\"\\\\(at\\\\)[a-z]\",\"\\\\(github\\\\.com/\",\"\\\\[at\\\\][a-z]\",\"^12345\",\"^<\",\"^[\\\\w \\\\.\\\\-\\\\(\\\\)]+(/v?\\\\d+(\\\\.\\\\d+)?(\\\\.\\\\d{1,10})?)?$\",\"^[^ ]{50,}$\",\"^active\",\"^ad muncher\",\"^amaya\",\"^anglesharp/\",\"^anonymous\",\"^avsdevicesdk/\",\"^axios/\",\"^bidtellect/\",\"^biglotron\",\"^btwebclient/\",\"^castro\",\"^clamav[ /]\",\"^client/\",\"^cobweb/\",\"^coccoc\",\"^custom\",\"^ddg[_-]android\",\"^discourse\",\"^dispatch/\\\\d\",\"^downcast/\",\"^duckduckgo\",\"^facebook\",\"^fdm[ /]\\\\d\",\"^getright/\",\"^gozilla/\",\"^hatena\",\"^hobbit\",\"^hotzonu\",\"^hwcdn/\",\"^jeode/\",\"^jetty/\",\"^jigsaw\",\"^linkdex\",\"^lwp[-: ]\",\"^metauri\",\"^microsoft bits\",\"^movabletype\",\"^mozilla/\\\\d\\\\.\\\\d \\\\(compatible;?\\\\)$\",\"^mozilla/\\\\d\\\\.\\\\d \\\\w*$\",\"^navermailapp\",\"^netsurf\",\"^offline explorer\",\"^php\",\"^postman\",\"^postrank\",\"^python\",\"^read\",\"^reed\",\"^restsharp/\",\"^snapchat\",\"^space bison\",\"^svn\",\"^swcd \",\"^taringa\",\"^test certificate info\",\"^thumbor/\",\"^tumblr/\",\"^user-agent:mozilla\",\"^valid\",\"^venus/fedoraplanet\",\"^w3c\",\"^webbandit/\",\"^webcopier\",\"^wget\",\"^whatsapp\",\"^xenu link sleuth\",\"^yahoo\",\"^yandex\",\"^zdm/\\\\d\",\"^zoom marketplace/\",\"^{{.*}}$\",\"adbeat\\\\.com\",\"appinsights\",\"archive\",\"ask jeeves/teoma\",\"bit\\\\.ly/\",\"bluecoat drtr\",\"bot\",\"browsex\",\"burpcollaborator\",\"capture\",\"catch\",\"check\",\"chrome-lighthouse\",\"chromeframe\",\"cloud\",\"crawl\",\"cryptoapi\",\"dareboost\",\"datanyze\",\"dataprovider\",\"dejaclick\",\"dmbrowser\",\"download\",\"evc-batch/\",\"feed\",\"firephp\",\"freesafeip\",\"gomezagent\",\"google\",\"headlesschrome/\",\"http\",\"httrack\",\"hubspot marketing grader\",\"hydra\",\"ibisbrowser\",\"images\",\"inspect\",\"iplabel\",\"ips-agent\",\"java\",\"library\",\"mail\\\\.ru/\",\"manager\",\"monitor\",\"morningscore/\",\"neustar wpm\",\"nutch\",\"offbyone\",\"optimize\",\"pageburst\",\"pagespeed\",\"perl\",\"phantom\",\"pingdom\",\"powermarks\",\"preview\",\"proxy\",\"ptst[ /]\\\\d\",\"reader\",\"rexx;\",\"rigor\",\"rss\",\"scan\",\"scrape\",\"search\",\"serp ?reputation ?management\",\"server\",\"sogou\",\"sparkler/\",\"speedcurve\",\"spider\",\"splash\",\"statuscake\",\"stumbleupon\\\\.com\",\"supercleaner\",\"synapse\",\"synthetic\",\"torrent\",\"tracemyfile\",\"transcoder\",\"trendsmapresolver\",\"twingly recon\",\"url\",\"virtuoso\",\"wappalyzer\",\"webglance\",\"webkit2png\",\"websitemetadataretriever\",\"whatcms/\",\"wordpress\",\"zgrab\"];","import isbot from '..'\nimport { amend } from '../src/amend/index.js'\nimport list from '../src/list.json'\n\n{\n const textarea = document.querySelector('textarea')\n const output = document.querySelector('output')\n const copyLink = document.querySelector('[id=\"copy-link\"]')\n let timer\n\n const query = window.location.search.replace(/\\?ua=(.*)$/, '$1')\n\n amend(list)\n\n textarea.childNodes.forEach(child => child.parentNode?.removeChild(child))\n textarea.appendChild(document.createTextNode(\n query\n ? decodeURIComponent(query)\n : navigator.userAgent\n )\n )\n textarea.addEventListener('keyup', change)\n textarea.addEventListener('paste', change)\n textarea.addEventListener('focus', () => textarea.select())\n check()\n\n function change ({ target: { value } }) {\n clearTimeout(timer)\n timer = setTimeout(check, 200, value)\n }\n\n function append (parent, tag, string) {\n if (tag) {\n const ele = document.createElement('kbd')\n ele.appendChild(document.createTextNode(string))\n parent.appendChild(ele)\n } else {\n parent.appendChild(document.createTextNode(string))\n }\n }\n\n function details (ua) {\n const fragment = document.createDocumentFragment()\n const is = isbot(ua)\n const found = is && isbot.find(ua)\n const pattern = found\n ? isbot.matches(ua)?.find(pattern => new RegExp(pattern, 'i').test(found))\n : null\n\n is\n ? append(fragment, null, 'I think so, yes\\n')\n : append(fragment, null, 'I don\\'t think so, no\\nI could not find a pattern I recognise')\n found && append(fragment, null, 'The substring ')\n found && append(fragment, 'kbd', found)\n pattern && append(fragment, null, ' matches the pattern ')\n pattern && append(fragment, 'kbd', pattern)\n return fragment\n }\n\n function check (value = textarea.innerHTML) {\n value = value.trim()\n while (output.firstChild) {\n output.removeChild(output.firstChild)\n }\n if (value === '') {\n output.appendChild(\n document.createTextNode(\n 'Insert user agent string in the text box'\n )\n )\n return\n }\n\n output.appendChild(details(value))\n\n output.className = ''\n setTimeout(() => { output.className = 'highlight' }, 100)\n }\n\n copyLink.addEventListener('click', () => {\n const { protocol, host, pathname } = document.location\n navigator.clipboard.writeText([\n protocol, '//', host, pathname, '?ua=', encodeURIComponent(textarea.value)\n ].join(''))\n const dialog = document.createElement('dialog')\n dialog.appendChild(document.createTextNode('copied to clipboard'))\n document.body.appendChild(dialog)\n setTimeout(() => {\n dialog.showModal()\n setTimeout(() => {\n dialog.addEventListener('transitionend', () => {\n dialog.close()\n document.body.removeChild(dialog)\n })\n dialog.style.opacity = 0\n }, 2000)\n }, 0)\n })\n}\n"]} \ No newline at end of file diff --git a/styles.b0c6cef4.css b/styles.55ef476d.css similarity index 68% rename from styles.b0c6cef4.css rename to styles.55ef476d.css index 0db9f0e..8e95570 100644 --- a/styles.b0c6cef4.css +++ b/styles.55ef476d.css @@ -1,2 +1,2 @@ -:root{--color-background:#e5e5e5;--color-foreground:#333;--color-shadow:rgba(13,39,80,0.2549019607843137);--color-highlight:#fff}*{margin:0;padding:0}html{font:100 100%/1.4 -apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,Arial,sans-serif}body,html{height:100%;display:flex;justify-content:center;align-items:center}body,textarea{background:var(--color-background);color:var(--color-foreground);text-shadow:var(--color-highlight) 1px 1px 0}form{width:90vw;padding:1em 0;text-align:center}h1,output,textarea{margin-bottom:1em}h1{font-weight:700;font-size:3em}textarea{font-size:2em;width:100%;height:5em;padding:.5em;resize:vertical;box-sizing:border-box;border-radius:.5em;box-shadow:var(--color-shadow) .5em .5em .5em,var(--color-highlight) -.5em -.5em .5em,inset var(--color-shadow) .5em .5em .5em,inset var(--color-highlight) -.5em -.5em .5em;border-width:0}output{display:block;white-space:pre-line;font-size:2em}kbd{display:inline-block;background:#eee;font-size:.8em;padding:0 .2em} -/*# sourceMappingURL=styles.b0c6cef4.css.map */ \ No newline at end of file +:root{--color-background:#e5e5e5;--color-foreground:#333;--color-shadow:rgba(13,39,80,0.2549019607843137);--color-highlight:#fff}*{margin:0;padding:0}html{font:100 100%/1.4 -apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,Arial,sans-serif}body,html{height:100%;display:flex;justify-content:center;align-items:center}body,textarea{background:var(--color-background);color:var(--color-foreground);text-shadow:var(--color-highlight) 1px 1px 0}form{width:90vw;padding:1em 0;text-align:center}h1,output,textarea{margin-bottom:1em}h1{font-weight:700;font-size:3em}textarea{font-size:2em;width:100%;height:5em;padding:.5em;resize:vertical;box-sizing:border-box;border-radius:.5em;box-shadow:var(--color-shadow) .5em .5em .5em,var(--color-highlight) -.5em -.5em .5em,inset var(--color-shadow) .5em .5em .5em,inset var(--color-highlight) -.5em -.5em .5em;border-width:0}output{display:block;white-space:pre-line;font-size:2em}kbd{display:inline-block;background:#eee;font-size:.8em;padding:0 .2em}dialog{position:fixed;top:10vh;left:0;z-index:100;width:20vw;margin:0 40vw;padding:1em;background:var(--color-foreground);color:var(--color-highlight);text-shadow:none;display:flex;justify-content:center;align-items:center;border-radius:1em;opacity:0;transition:opacity .3s ease-in-out;box-shadow:var(--color-shadow) 0 0 0 .5em}dialog[open]{opacity:1} +/*# sourceMappingURL=styles.55ef476d.css.map */ \ No newline at end of file diff --git a/styles.55ef476d.css.map b/styles.55ef476d.css.map new file mode 100644 index 0000000..c22678b --- /dev/null +++ b/styles.55ef476d.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["styles.css"],"names":[],"mappings":"AAAA,MACE,0BAA2B,CAC3B,uBAAwB,CACxB,gDAAyB,CACzB,sBACF,CAEA,EACE,QAAS,CACT,SACF,CAEA,KACE,0GACF,CAEA,UAEE,WAAY,CACZ,YAAa,CACb,sBAAuB,CACvB,kBACF,CAEA,cACE,kCAAmC,CACnC,6BAA8B,CAC9B,4CACF,CAEA,KACE,UAAW,CACX,aAAc,CACd,iBACF,CAEA,mBAGE,iBACF,CAEA,GACE,eAAgB,CAChB,aACF,CAEA,SACE,aAAc,CACd,UAAW,CACX,UAAW,CACX,YAAa,CACb,eAAgB,CAChB,qBAAsB,CAItB,kBAAmB,CACnB,4KAGyD,CACzD,cARF,CAWA,OACE,aAAc,CACd,oBAAqB,CACrB,aACF,CAEA,IACE,oBAAqB,CACrB,eAAgB,CAChB,cAAgB,CAChB,cACF,CACA,OACE,cAAe,CACf,QAAS,CACT,MAAO,CACP,WAAY,CACZ,UAAW,CACX,aAAc,CACd,WAAY,CACZ,kCAAmC,CACnC,4BAA6B,CAC7B,gBAAiB,CACjB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,iBAAkB,CAClB,SAAU,CACV,kCAAoC,CACpC,yCACF,CAEA,aACE,SACF","file":"styles.55ef476d.css","sourceRoot":"../page","sourcesContent":[":root {\n --color-background: #e5e5e5;\n --color-foreground: #333;\n --color-shadow: #0d275041;\n --color-highlight: #fff;\n}\n\n* {\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font: 100 100%/1.4 -apple-system, \"BlinkMacSystemFont\", \"Helvetica Neue\", \"Helvetica\", \"Lucida Grande\", \"Arial\", sans-serif;\n}\n\nhtml,\nbody {\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\nbody, textarea {\n background: var(--color-background);\n color: var(--color-foreground);\n text-shadow: var(--color-highlight) 1px 1px 0;\n}\n\nform {\n width: 90vw;\n padding: 1em 0;\n text-align: center;\n}\n\nh1,\ntextarea,\noutput {\n margin-bottom: 1em;\n}\n\nh1 {\n font-weight: 700;\n font-size: 3em;\n}\n\ntextarea {\n font-size: 2em;\n width: 100%;\n height: 5em;\n padding: .5em;\n resize: vertical;\n box-sizing: border-box;\n}\n\ntextarea {\n border-radius: .5em;\n box-shadow: var(--color-shadow) .5em .5em .5em,\n var(--color-highlight) -.5em -.5em .5em,\n inset var(--color-shadow) .5em .5em .5em,\n inset var(--color-highlight) -.5em -.5em .5em;\n border-width: 0;\n}\n\noutput {\n display: block;\n white-space: pre-line;\n font-size: 2em;\n}\n\nkbd {\n display: inline-block;\n background: #eee;\n font-size: 0.8em;\n padding: 0 0.2em;\n}\ndialog {\n position: fixed;\n top: 10vh;\n left: 0;\n z-index: 100;\n width: 20vw;\n margin: 0 40vw;\n padding: 1em;\n background: var(--color-foreground);\n color: var(--color-highlight);\n text-shadow: none;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 1em;\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n box-shadow: var(--color-shadow) 0 0 0 .5em;\n}\n\ndialog[open] {\n opacity: 1;\n}\n"]} \ No newline at end of file diff --git a/styles.b0c6cef4.css.map b/styles.b0c6cef4.css.map deleted file mode 100644 index d11730e..0000000 --- a/styles.b0c6cef4.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["styles.css"],"names":[],"mappings":"AAAA,MACE,0BAA2B,CAC3B,uBAAwB,CACxB,gDAAyB,CACzB,sBACF,CAEA,EACE,QAAS,CACT,SACF,CAEA,KACE,0GACF,CAEA,UAEE,WAAY,CACZ,YAAa,CACb,sBAAuB,CACvB,kBACF,CAEA,cACE,kCAAmC,CACnC,6BAA8B,CAC9B,4CACF,CAEA,KACE,UAAW,CACX,aAAc,CACd,iBACF,CAEA,mBAGE,iBACF,CAEA,GACE,eAAgB,CAChB,aACF,CAEA,SACE,aAAc,CACd,UAAW,CACX,UAAW,CACX,YAAa,CACb,eAAgB,CAChB,qBAAsB,CAItB,kBAAmB,CACnB,4KAGyD,CACzD,cARF,CAWA,OACE,aAAc,CACd,oBAAqB,CACrB,aACF,CAEA,IACE,oBAAqB,CACrB,eAAgB,CAChB,cAAgB,CAChB,cACF","file":"styles.b0c6cef4.css","sourceRoot":"../page","sourcesContent":[":root {\n --color-background: #e5e5e5;\n --color-foreground: #333;\n --color-shadow: #0d275041;\n --color-highlight: #fff;\n}\n\n* {\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font: 100 100%/1.4 -apple-system, \"BlinkMacSystemFont\", \"Helvetica Neue\", \"Helvetica\", \"Lucida Grande\", \"Arial\", sans-serif;\n}\n\nhtml,\nbody {\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\nbody, textarea {\n background: var(--color-background);\n color: var(--color-foreground);\n text-shadow: var(--color-highlight) 1px 1px 0;\n}\n\nform {\n width: 90vw;\n padding: 1em 0;\n text-align: center;\n}\n\nh1,\ntextarea,\noutput {\n margin-bottom: 1em;\n}\n\nh1 {\n font-weight: 700;\n font-size: 3em;\n}\n\ntextarea {\n font-size: 2em;\n width: 100%;\n height: 5em;\n padding: .5em;\n resize: vertical;\n box-sizing: border-box;\n}\n\ntextarea {\n border-radius: .5em;\n box-shadow: var(--color-shadow) .5em .5em .5em,\n var(--color-highlight) -.5em -.5em .5em,\n inset var(--color-shadow) .5em .5em .5em,\n inset var(--color-highlight) -.5em -.5em .5em;\n border-width: 0;\n}\n\noutput {\n display: block;\n white-space: pre-line;\n font-size: 2em;\n}\n\nkbd {\n display: inline-block;\n background: #eee;\n font-size: 0.8em;\n padding: 0 0.2em;\n}\n"]} \ No newline at end of file