Merge branch 'master' into master

main
Elbert Alias 4 years ago committed by GitHub
commit 1b5c94e778
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -98,7 +98,7 @@ Patterns (regular expressions) are kept in [`src/technologies.json`](https://git
"url": ".+\\.example\\.com", "url": ".+\\.example\\.com",
"oss": true, "oss": true,
"saas": true, "saas": true,
"pricing": ["low", "medium", "high", "freemium", "onetime", "recurring", "poa"], "pricing": ["medium", "freemium", "recurring"],
"website": "https://example.com", "website": "https://example.com",
} }
``` ```

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com/", "homepage": "https://www.wappalyzer.com/",
"version": "6.5.25", "version": "6.5.26",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

@ -1,5 +1,5 @@
{ {
"github": { "message": "Forker Wappalyzer sur GitHub!" }, "github": { "message": "Forker Wappalyzer sur GitHub !" },
"noAppsDetected": { "message": "Pas d'applications détectées." }, "noAppsDetected": { "message": "Pas d'applications détectées." },
"nothingToDo": { "message": "Rien à faire ici." }, "nothingToDo": { "message": "Rien à faire ici." },
"optionTracking": { "message": "Envoyer anonymement des rapports sur les applications détectées à wappalyzer.com pour la recherche" }, "optionTracking": { "message": "Envoyer anonymement des rapports sur les applications détectées à wappalyzer.com pour la recherche" },
@ -15,11 +15,11 @@
"twitter": { "message": "Suivre Wappalyzer sur Twitter" }, "twitter": { "message": "Suivre Wappalyzer sur Twitter" },
"website": { "message": "Aller sur wappalyzer.com" }, "website": { "message": "Aller sur wappalyzer.com" },
"categoryPin": { "message": " Toujours afficher l'icône" }, "categoryPin": { "message": " Toujours afficher l'icône" },
"termsAccept": { "message": "I'm ok with that" }, "termsAccept": { "message": "Je suis OK avec ça" },
"termsDecline": { "message": "Disable" }, "termsDecline": { "message": "Disable" },
"termsContent": { "message": "This extension sends anonymous information about websites you visit, including domain name and identified technologies, to <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. This can be disabled in the settings." }, "termsContent": { "message": "This extension sends anonymous information about websites you visit, including domain name and identified technologies, to <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. This can be disabled in the settings." },
"privacyPolicy": { "message": "Privacy policy" }, "privacyPolicy": { "message": "Politique de confidentialité" },
"createAlert": { "message": "Create an alert for this website" }, "createAlert": { "message": "Créer un alerte pour ce site web" },
"leadLists": { "message": "Lead generation tools" }, "leadLists": { "message": "Lead generation tools" },
"categoryName1": { "message": "CMS" }, "categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum" }, "categoryName2": { "message": "Forum" },
@ -80,18 +80,18 @@
"categoryName57": { "message": "Générateur de site statique" }, "categoryName57": { "message": "Générateur de site statique" },
"categoryName58": { "message": "User Onboarding" }, "categoryName58": { "message": "User Onboarding" },
"categoryName59": { "message": "Librairies JavaScript" }, "categoryName59": { "message": "Librairies JavaScript" },
"categoryName60": { "message": "Contenus" }, "categoryName60": { "message": "Conteneurs" },
"categoryName61": { "message": "SaaS" }, "categoryName61": { "message": "SaaS" },
"categoryName62": { "message": "PaaS" }, "categoryName62": { "message": "PaaS" },
"categoryName63": { "message": "IaaS" }, "categoryName63": { "message": "IaaS" },
"categoryName64": { "message": "Reverse Proxy" }, "categoryName64": { "message": "Proxy inversé" },
"categoryName65": { "message": "Load Balancer" }, "categoryName65": { "message": "Load Balancer" },
"categoryName66": { "message": "Frameworks UI" }, "categoryName66": { "message": "Frameworks UI" },
"categoryName67": { "message": "Cookie compliance" }, "categoryName67": { "message": "Cookie compliance" },
"categoryName68": { "message": "Accessibilité" }, "categoryName68": { "message": "Accessibilité" },
"categoryName69": { "message": "Connexion avec les réseaux sociaux" }, "categoryName69": { "message": "Connexion avec les réseaux sociaux" },
"categoryName70": { "message": "SSL/TLS certificate authorities" }, "categoryName70": { "message": "SSL/TLS certificate authorities" },
"categoryName71": { "message": "Affiliate programs" }, "categoryName71": { "message": "Programmes affiliés" },
"categoryName72": { "message": "Appointment scheduling" }, "categoryName72": { "message": "Appointment scheduling" },
"categoryName73": { "message": "Surveys" }, "categoryName73": { "message": "Surveys" },
"categoryName74": { "message": "A/B testing" }, "categoryName74": { "message": "A/B testing" },

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

@ -0,0 +1,5 @@
<svg width="2443" height="2443" viewBox="0 0 2443 2443" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M50.4 1721.6L862.5 314.9L1566.2 721.2L754.2 2127.9L50.4 1721.6Z" fill="#FBBC04"/>
<path d="M2385.1 1716.7L1572.5 309.5C1467.6 111.1 1221.8 35.2999 1023.4 140.2C825 245.1 749.3 490.9 854.1 689.3C858.7 698 863.6 706.5 868.8 714.9L1681.4 2122.1C1791 2317.9 2038.6 2387.8 2234.4 2278.2C2430.2 2168.6 2500.1 1921 2390.5 1725.2C2388.7 1722 2386.9 1718.9 2385.1 1715.8V1716.7Z" fill="#4285F4"/>
<path d="M406.3 2327.9C630.693 2327.9 812.6 2145.99 812.6 1921.6C812.6 1697.21 630.693 1515.3 406.3 1515.3C181.907 1515.3 0 1697.21 0 1921.6C0 2145.99 181.907 2327.9 406.3 2327.9Z" fill="#34A853"/>
</svg>

After

Width:  |  Height:  |  Size: 706 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 137.5 166" role="img"><path fill="#1292ee" d="M9.9 97.2l48.6-48.6c6.3-6.2 10.2-14.9 10.2-24.4 0-9.4-3.8-18-9.9-24.2L10.2 48.6C3.9 54.8 0 63.5 0 73c0 9.5 3.8 18 9.9 24.2zM127.6 68.8L79 117.4c-6.3 6.2-10.2 14.9-10.2 24.4 0 9.4 3.8 18 9.9 24.2l48.6-48.6c6.3-6.2 10.2-14.9 10.2-24.4 0-9.5-3.8-18-9.9-24.2zM127.3 48.7s0-.1 0 0c6.3-6.2 10.2-14.9 10.2-24.4 0-9.4-3.8-18-9.9-24.2L10.2 117.4C3.9 123.6 0 132.3 0 141.8c0 9.4 3.8 18 9.9 24.2L127.3 48.7z"></path></svg>

After

Width:  |  Height:  |  Size: 511 B

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 250 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><circle cx="125" cy="125" r="118.391" style="fill:#222;"/><text x="63.371px" y="189.151px" style="font-family:'OpenSans-Bold', 'Open Sans', sans-serif;font-weight:700;font-size:179.729px;fill:#fff;">B</text></svg>

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="264" height="288" viewBox="0 0 264 288">
<path fill="#7A34FF" fill-rule="evenodd" d="M180,260.874545 L142.532111,247.249859 C136.209084,244.950576 132,238.941267 132,232.213164 L132,155.42 L132,155.42 L26.6378426,59.6362206 C9.67222516,44.212932 0,22.9283669 0,0 L180,0 L180,260.874545 Z M216,273.965455 L216,0 L248,0 C256.836556,-1.623249e-15 264,7.163444 264,16 L264,279.9984 C264,284.416678 260.418278,287.9984 256,287.9984 C255.06758,287.9984 254.142338,287.835396 253.266055,287.516747 L216,273.965455 L216,273.965455 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 584 B

@ -231,6 +231,29 @@ const Content = {
return technologies return technologies
}, []) }, [])
// Detect Google Ads
if (/^(www\.)?google(\.[a-z]{2,3}){1,2}$/.test(location.hostname)) {
const ads = document.querySelectorAll('#tads [data-text-ad] a[data-pcu]')
for (const ad of ads) {
Content.driver('detectTechnology', [ad.href, 'Google Ads'])
}
}
// Detect Microsoft Ads
if (/^(www\.)?bing\.com$/.test(location.hostname)) {
const ads = document.querySelectorAll('.b_ad .b_adurl cite')
for (const ad of ads) {
const url = ad.textContent.split(' ')[0].trim()
Content.driver('detectTechnology', [
url.startsWith('http') ? url : `http://${url}`,
'Microsoft Advertising',
])
}
}
Content.driver('analyzeDom', [location.href, dom]) Content.driver('analyzeDom', [location.href, dom])
}, },
} }

@ -8,6 +8,7 @@ const {
analyze, analyze,
analyzeManyToMany, analyzeManyToMany,
resolve, resolve,
getTechnology,
} = Wappalyzer } = Wappalyzer
const { agent, promisify, getOption, setOption, open } = Utils const { agent, promisify, getOption, setOption, open } = Utils
@ -211,6 +212,19 @@ const Driver = {
) )
}, },
/**
* Force a technology detection by URL and technology name
* @param {String} url
* @param {String} name
*/
detectTechnology(url, name) {
const technology = getTechnology(name)
return Driver.onDetect(url, [
{ technology, pattern: { regex: '', confidence: 100 }, version: '' },
])
},
/** /**
* Enable scripts to call Driver functions through messaging * Enable scripts to call Driver functions through messaging
* @param {Object} message * @param {Object} message
@ -411,7 +425,13 @@ const Driver = {
await Driver.setIcon(url, resolved) await Driver.setIcon(url, resolved)
if (url) { if (url) {
const tabs = await promisify(chrome.tabs, 'query', { url }) let tabs = []
try {
tabs = await promisify(chrome.tabs, 'query', { url })
} catch (error) {
// Continue
}
tabs.forEach(({ id }) => (Driver.cache.tabs[id] = resolved)) tabs.forEach(({ id }) => (Driver.cache.tabs[id] = resolved))
} }
@ -454,34 +474,38 @@ const Driver = {
return return
} }
;(await promisify(chrome.tabs, 'query', { url })).forEach( let tabs = []
({ id: tabId }) => {
chrome.browserAction.setBadgeText(
{
tabId,
text:
badge && technologies.length
? technologies.length.toString()
: '',
},
() => {}
)
chrome.browserAction.setIcon( try {
{ tabs = await promisify(chrome.tabs, 'query', { url })
tabId, } catch (error) {
path: chrome.extension.getURL( // Continue
`../images/icons/${ }
/\.svg$/i.test(icon)
? `converted/${icon.replace(/\.svg$/, '.png')}` tabs.forEach(({ id: tabId }) => {
: icon chrome.browserAction.setBadgeText(
}` {
), tabId,
}, text:
() => {} badge && technologies.length ? technologies.length.toString() : '',
) },
} () => {}
) )
chrome.browserAction.setIcon(
{
tabId,
path: chrome.extension.getURL(
`../images/icons/${
/\.svg$/i.test(icon)
? `converted/${icon.replace(/\.svg$/, '.png')}`
: icon
}`
),
},
() => {}
)
})
}, },
/** /**

@ -3,11 +3,11 @@
;(function () { ;(function () {
try { try {
const onMessage = ({ data }) => { const onMessage = ({ data }) => {
if (!data.wappalyzer) { if (!data.wappalyzer || !data.wappalyzer.technologies) {
return return
} }
const { technologies } = data.wappalyzer || {} const { technologies } = data.wappalyzer
removeEventListener('message', onMessage) removeEventListener('message', onMessage)

@ -55,7 +55,6 @@ const Popup = {
if (themeMode) { if (themeMode) {
document.querySelector('body').classList.add('theme-mode') document.querySelector('body').classList.add('theme-mode')
} }
document.querySelector('body').classList.add('theme-mode')
// Terms // Terms
const termsAccepted = const termsAccepted =

@ -4,7 +4,7 @@
"author": "Wappalyzer", "author": "Wappalyzer",
"homepage_url": "https://www.wappalyzer.com/", "homepage_url": "https://www.wappalyzer.com/",
"description": "Identify web technologies", "description": "Identify web technologies",
"version": "6.5.25", "version": "6.5.26",
"default_locale": "en", "default_locale": "en",
"manifest_version": 2, "manifest_version": 2,
"icons": { "icons": {

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com/", "homepage": "https://www.wappalyzer.com/",
"version": "6.5.25", "version": "6.5.26",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

@ -1169,7 +1169,9 @@
], ],
"description": "Akamai is global content delivery network (CDN) services provider for media and software delivery, and cloud security solutions.", "description": "Akamai is global content delivery network (CDN) services provider for media and software delivery, and cloud security solutions.",
"headers": { "headers": {
"X-Akamai-Transformed": "" "X-Akamai-Transformed": "",
"X-EdgeConnect-MidMile-RTT": "",
"X-EdgeConnect-Origin-MEX-Latency": ""
}, },
"icon": "akamai.svg", "icon": "akamai.svg",
"pricing": [ "pricing": [
@ -1218,26 +1220,28 @@
}, },
"Akamai mPulse": { "Akamai mPulse": {
"cats": [ "cats": [
13, 10,
10 47
], ],
"cookies": { "cookies": {
"akaas_AB-Testing": "" "akaas_AB-Testing": ""
}, },
"description": "Akamai mPulse is a real user monitoring (RUM) solution that enables companies to monitor, find, and fix website and application performance issues.", "description": "Akamai mPulse is a real user monitoring (RUM) solution that enables companies to monitor, find, and fix website and application performance issues.",
"html": [
"<script>[\\s\\S]*?go-mpulse\\.net\\/boomerang[\\s\\S]*?</script>"
],
"icon": "akamai.svg", "icon": "akamai.svg",
"implies": "Akamai", "implies": [
"Boomerang"
],
"js": { "js": {
"BOOMR": "", "BOOMR_API_key": ""
"BOOMR_API_key": "",
"BOOMR_lstart": "",
"BOOMR_mq": ""
}, },
"pricing": [ "pricing": [
"poa" "poa"
], ],
"saas": true, "saas": true,
"website": "https://www.akamai.com/uk/en/products/performance/mpulse-real-user-monitoring.jsp" "website": "https://developer.akamai.com/akamai-mpulse-real-user-monitoring-solution"
}, },
"Akaunting": { "Akaunting": {
"cats": [ "cats": [
@ -1381,22 +1385,6 @@
"saas": true, "saas": true,
"website": "https://affiliate-program.amazon.com.au/" "website": "https://affiliate-program.amazon.com.au/"
}, },
"Azion": {
"cats": [
31
],
"description": "",
"headers": {
"Server": "^Azion "
},
"dns": {
"CNAME": "azioncdn\\.net\\.?$"
},
"icon": "Azion.svg",
"saas": true,
"pricing": ["poa", "payg"],
"website": "https://www.azion.com/"
},
"Amazon Cloudfront": { "Amazon Cloudfront": {
"cats": [ "cats": [
31 31
@ -2282,6 +2270,25 @@
], ],
"website": "https://github.com/axios/axios" "website": "https://github.com/axios/axios"
}, },
"Azion": {
"cats": [
31
],
"description": "",
"dns": {
"CNAME": "azioncdn\\.net\\.?$"
},
"headers": {
"Server": "^Azion "
},
"icon": "Azion.svg",
"pricing": [
"poa",
"payg"
],
"saas": true,
"website": "https://www.azion.com/"
},
"Azure": { "Azure": {
"cats": [ "cats": [
62 62
@ -2830,6 +2837,20 @@
"scripts": "booksy\\.com/widget/code\\.js", "scripts": "booksy\\.com/widget/code\\.js",
"website": "https://booksy.com/" "website": "https://booksy.com/"
}, },
"Boomerang": {
"cats": [
59
],
"description": "boomerang is a JavaScript library that measures the page load time experienced by real users, commonly called RUM (Real User Measurement).",
"icon": "boomerang.svg",
"js": {
"BOOMR": "",
"BOOMR_lstart": "",
"BOOMR_mq": ""
},
"oss": true,
"website": "https://akamai.github.io/boomerang"
},
"Bootstrap": { "Bootstrap": {
"cats": [ "cats": [
66 66
@ -5200,9 +5221,28 @@
6 6
], ],
"cpe": "cpe:/a:commerceguys:commerce", "cpe": "cpe:/a:commerceguys:commerce",
"html": "<[^>]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)",
"icon": "Drupal Commerce.png", "icon": "Drupal Commerce.png",
"description": "Drupal Commerce is open-source ecommerce software that augments the content management system Drupal.",
"html": "<[^>]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)",
"dom": {
"form.commerce-order-item-add-to-cart-form,form.commerce-add-to-cart": {
"attributes": {
"class": ""
}
},
"aside#cart-offcanvas": {
"attributes": {
"id": ""
}
}
},
"scripts": [
"/modules/(?:contrib/)?commerce/js/conditions\\.js\\;confidence:50",
"/profiles/commerce_kickstart/modules/contrib/commerce/modules/checkout/commerce_checkout\\.js\\;confidence:50",
"/sites/(?:all|default)/modules/(?:contrib/)?commerce/modules/checkout/commerce_checkout\\.js\\;confidence:50"
],
"implies": "Drupal", "implies": "Drupal",
"oss": true,
"website": "http://drupalcommerce.org" "website": "http://drupalcommerce.org"
}, },
"Duda": { "Duda": {
@ -5699,6 +5739,21 @@
], ],
"website": "https://etherpad.org" "website": "https://etherpad.org"
}, },
"Etracker": {
"cats": [
10,
74
],
"description": "Etracker is a web optimization solution.",
"icon": "Etracker.png",
"js": {
"_etracker": ""
},
"scripts": "\\.etracker\\.com",
"saas": true,
"pricing": ["low","recurring"],
"website": "https://www.etracker.com"
},
"Eveve": { "Eveve": {
"cats": [ "cats": [
5, 5,
@ -5733,8 +5788,13 @@
], ],
"description": "ExpertRec is a collaborative Web search engine, which allows users share search histories through a web browser.", "description": "ExpertRec is a collaborative Web search engine, which allows users share search histories through a web browser.",
"icon": "ExpertRec.png", "icon": "ExpertRec.png",
"scripts": "cse\\.expertrec\\.com/api/js/ci_common\\.js\\?id=.*$", "pricing": [
"website": "https://expertrec.com" "low",
"recurring"
],
"saas": true,
"scripts": "expertrec\\.com/api/js/ci_common\\.js\\?id=.*",
"website": "https://www.expertrec.com"
}, },
"Express": { "Express": {
"cats": [ "cats": [
@ -6453,7 +6513,23 @@
"meta": { "meta": {
"generator": "^Frontity(.*)" "generator": "^Frontity(.*)"
}, },
"website": "https://frontity.org/" "website": "https://frontity.org
},
"Frosmo": {
"cats": [
32,
74
],
"description": "Frosmo is a SaaS company wich provides AI-driven personalization products.",
"icon": "Frosmo.png",
"js": {
"frosmo": "",
"_frosmo": ""
},
"scripts": "frosmo\\.easy\\.js",
"saas": true,
"pricing": ["poa"],
"website": "https://frosmo.com"
}, },
"FrontPage": { "FrontPage": {
"cats": [ "cats": [
@ -7011,6 +7087,16 @@
"scripts": "js/gogs\\.js", "scripts": "js/gogs\\.js",
"website": "http://gogs.io" "website": "http://gogs.io"
}, },
"Google Ads": {
"cats": [
36
],
"description": "Google Ads is an online advertising platform developed by Google.",
"icon": "Google Ads.svg",
"saas": true,
"pricing": ["payg"],
"website": "https://ads.google.com"
},
"Google AdSense": { "Google AdSense": {
"cats": [ "cats": [
36 36
@ -7646,6 +7732,20 @@
"scripts": "hellobar\\.js", "scripts": "hellobar\\.js",
"website": "http://hellobar.com" "website": "http://hellobar.com"
}, },
"Helpscout": {
"cats": [
52
],
"description": "Simple Customer Service Software and Education.",
"icon": "Helpscout.svg",
"js": {
"Beacon": "\\;confidence:25"
},
"saas": true,
"pricing": ["low", "recurring"],
"scripts": "beacon-v2\\.helpscout\\.net",
"website": "https://www.helpscout.com/"
},
"Heroku": { "Heroku": {
"cats": [ "cats": [
62 62
@ -9356,6 +9456,30 @@
"scripts": "npm/leanplum-sdk\\@([\\d.]+)\\;version:\\1", "scripts": "npm/leanplum-sdk\\@([\\d.]+)\\;version:\\1",
"website": "https://www.leanplum.com" "website": "https://www.leanplum.com"
}, },
"Lede": {
"cats": [
1
],
"description": "Lede is a publishing platform and growth program designed to support journalism startups and news media.",
"html": [
"<a [^>]*href=\"[^\"]+joinlede.com"
],
"icon": "lede.png",
"implies": [
"WordPress",
"WordPress VIP"
],
"js": {
"ledeChartbeatViews": "",
"ledeEngagement": "",
"ledeEngagementReset": ""
},
"meta": {
"og:image": "https?\\:\\/\\/lede-admin"
},
"saas": true,
"website": "https://joinlede.com/"
},
"Less": { "Less": {
"cats": [ "cats": [
19 19
@ -10602,14 +10726,13 @@
}, },
"Microsoft Advertising": { "Microsoft Advertising": {
"cats": [ "cats": [
10,
36 36
], ],
"cookies": { "cookies": {
"_uetsid": "\\w+", "_uetsid": "\\w+",
"_uetvid": "\\w+" "_uetvid": "\\w+"
}, },
"description": "Microsoft Advertising is a service that provides pay per click advertising on both the Bing and Yahoo! search engines.", "description": "Microsoft Advertising is an online advertising platform developed by Microsoft.",
"icon": "Microsoft.png", "icon": "Microsoft.png",
"js": { "js": {
"UET": "", "UET": "",
@ -10620,7 +10743,7 @@
], ],
"saas": true, "saas": true,
"scripts": "bat\\.bing\\.com/bat\\.js", "scripts": "bat\\.bing\\.com/bat\\.js",
"website": "https://about.ads.microsoft.com" "website": "https://ads.microsoft.com"
}, },
"Microsoft Excel": { "Microsoft Excel": {
"cats": [ "cats": [
@ -12911,6 +13034,24 @@
"icon": "Phusion Passenger.png", "icon": "Phusion Passenger.png",
"website": "https://phusionpassenger.com" "website": "https://phusionpassenger.com"
}, },
"Pico": {
"cats": [
53
],
"icon": "pico.svg",
"js": {
"Pico": ""
},
"scripts": [
"widget\\.pico\\.tools"
],
"pricing": [
"low",
"recurring"
],
"saas": true,
"website": "https://trypico.com"
},
"Pimcore": { "Pimcore": {
"cats": [ "cats": [
1, 1,
@ -18947,7 +19088,10 @@
"x-powered-by": "^WordPress\\.com VIP" "x-powered-by": "^WordPress\\.com VIP"
}, },
"icon": "wpvip.svg", "icon": "wpvip.svg",
"implies": "WordPress", "implies": [
"WordPress",
"Automattic"
],
"website": "https://wpvip.com" "website": "https://wpvip.com"
}, },
"Wowza Media Server": { "Wowza Media Server": {