diff --git a/README.md b/README.md
index e755e3993..bb638231c 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,17 @@
-# Wappalyzer [![Travis](https://travis-ci.org/aliasio/wappalyzer.svg?branch=master)](https://travis-ci.org/aliasio/wappalyzer/)
+[![Travis](https://travis-ci.org/aliasio/wappalyzer.svg?branch=master)](https://travis-ci.org/aliasio/wappalyzer/)
+[![wappalyzer NPM](https://img.shields.io/badge/npm-wappalyzer-blue)](https://www.npmjs.com/package/wappalyzer)
+[![wappalyzer-core NPM](https://img.shields.io/badge/npm-wappalyzer--core-blue)](https://www.npmjs.com/package/wappalyzer-core)
+[![Github Sponsor](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&link=https://github.com/sponsors/AliasIO)](https://github.com/sponsors/AliasIO)
+
+
-[Wappalyzer](https://www.wappalyzer.com) identifies technologies on websites, including content management systems, ecommerce platforms, JavaScript frameworks, analytics tools and [much more](https://www.wappalyzer.com/technologies).
+# Wappalyzer
-* [wappalyzer on NPM](https://www.npmjs.com/package/wappalyzer)
-* [wappalyzer-core on NPM](https://www.npmjs.com/package/wappalyzer-core)
-* [Chrome extension](https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg)
-* [Firefox add-on](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)
-* [Edge extension](https://microsoftedge.microsoft.com/addons/detail/mnbndgmknlpdjdnjfmfcdjoegcckoikn)
-* [Safari extension](https://apps.apple.com/app/wappalyzer/id1520333300)
-* [All apps and integrations](https://www.wappalyzer.com/api/download)
-* [Wappalyzer REST APIs](https://www.wappalyzer.com/api/)
+
+
+**[Wappalyzer](https://www.wappalyzer.com) identifies technologies on websites, such as CMS, web frameworks, ecommerce platforms, JavaScript libraries, analytics tools and [more](https://www.wappalyzer.com/technologies).**
+
+If you don't have time to configure, host, debug and maintain your own infrastructure to analyse websites at scale, we offer a SaaS solution that has all the same capabilities and a lot more. Our [apps](https://www.wappalyzer.com/apps/) and [APIs](https://www.wappalyzer.com/api/) not only reveal the technology stack a website uses but also company and contact details, social media profiles, keywords and metadata.
## Prerequisites
@@ -92,6 +94,7 @@ Patterns (regular expressions) are kept in [`src/technologies.json`](https://git
"css": "\\.example-class",
"robots": "Disallow: /unique-path/",
"implies": "PHP\\;confidence:50",
+ "requires": "WordPress",
"meta": {
"generator": "(?:Example|Another Example)"
},
@@ -224,8 +227,7 @@ Plus any of:
-### Implies and excludes (optional)
-
+### Implies, requires and excludes (optional)
@@ -246,6 +248,14 @@ Plus any of:
"PHP"
+
+ requires
+ String | Array
+
+ Similar to implies but detection only runs if the required technology has been identified. Useful for themes for a specific CMS.
+
+ "WordPres"
+
excludes
String | Array
@@ -395,7 +405,6 @@ Patterns are essentially JavaScript regular expressions written as strings, but
Tags (a non-standard syntax) can be appended to patterns (and implies and excludes, separated by `\\;`) to store additional information.
-
@@ -433,7 +442,6 @@ Tags (a non-standard syntax) can be appended to patterns (and implies and exclud
Application version information can be obtained from a pattern using a capture group. A condition can be evaluated using the ternary operator (`?:`).
-
diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js
index dd5933ac8..35ec8a2a8 100644
--- a/src/drivers/npm/driver.js
+++ b/src/drivers/npm/driver.js
@@ -348,7 +348,7 @@ class Driver {
log(message, source = 'driver') {
if (this.options.debug) {
// eslint-disable-next-line no-console
- console.log(`wappalyzer | log | ${source} |`, message)
+ console.log(`log | ${source} |`, message)
}
}
}
@@ -393,7 +393,7 @@ class Site {
log(message, source = 'driver', type = 'log') {
if (this.options.debug) {
// eslint-disable-next-line no-console
- console[type](`wappalyzer | ${type} | ${source} |`, message)
+ console[type](`${type} | ${source} |`, message)
}
this.emit(type, { message, source })
@@ -422,7 +422,7 @@ class Site {
promiseTimeout(
promise,
fallback,
- errorMessage = 'The website took too long to respond'
+ errorMessage = 'Operation took too long to respond'
) {
let timeout = null
@@ -435,7 +435,11 @@ class Site {
timeout = setTimeout(() => {
clearTimeout(timeout)
- fallback ? resolve(fallback) : reject(new Error(errorMessage))
+ const error = new Error(errorMessage)
+
+ error.code = 'PROMISE_TIMEOUT_ERROR'
+
+ fallback !== undefined ? resolve(fallback) : reject(error)
}, this.options.maxWait)
}),
promise.then((value) => {
@@ -573,7 +577,9 @@ class Site {
try {
await this.promiseTimeout(
- page.goto(url.href, { waitUntil: 'domcontentloaded' })
+ page.goto(url.href, { waitUntil: 'domcontentloaded' }),
+ undefined,
+ 'Timeout (navigation)'
)
await sleep(1000)
@@ -596,10 +602,12 @@ class Site {
})
)
),
- { jsonValue: () => [] }
+ { jsonValue: () => [] },
+ 'Timeout (links)'
)
).jsonValue(),
- []
+ [],
+ 'Timeout (links)'
)
// CSS
@@ -629,10 +637,12 @@ class Site {
return css.join('\n')
}, this.options.htmlMaxRows),
- { jsonValue: () => '' }
+ { jsonValue: () => '' },
+ 'Timeout (css)'
)
).jsonValue(),
- ''
+ '',
+ 'Timeout (css)'
)
// Script tags
@@ -644,10 +654,12 @@ class Site {
.map(({ src }) => src)
.filter((src) => src)
),
- { jsonValue: () => [] }
+ { jsonValue: () => [] },
+ 'Timeout (scripts)'
)
).jsonValue(),
- []
+ [],
+ 'Timeout (scripts)'
)
// Meta tags
@@ -669,17 +681,19 @@ class Site {
{}
)
),
- { jsonValue: () => [] }
+ { jsonValue: () => [] },
+ 'Timeout (meta)'
)
).jsonValue(),
- []
+ [],
+ 'Timeout (meta)'
)
// JavaScript
- const js = await this.promiseTimeout(getJs(page), [])
+ const js = await this.promiseTimeout(getJs(page), [], 'Timeout (js)')
// DOM
- const dom = await this.promiseTimeout(getDom(page), [])
+ const dom = await this.promiseTimeout(getDom(page), [], 'Timeout (dom)')
// Cookies
const cookies = (await page.cookies()).reduce(
@@ -728,7 +742,8 @@ class Site {
return []
}),
- []
+ [],
+ 'Timeout (dns)'
)
}
@@ -771,9 +786,9 @@ class Site {
) {
await page.close()
- this.log('Page closed')
+ this.log(`Page closed (${url})`)
- throw new Error('No response from server')
+ throw new Error(`No response from server`)
}
this.cache[url.href] = {
@@ -838,12 +853,37 @@ class Site {
return reducedLinks
} catch (error) {
- if (error.constructor.name === 'TimeoutError') {
- throw new Error('The website took too long to respond')
+ let hostname = url
+
+ try {
+ ;({ hostname } = new URL(url))
+ } catch (error) {
+ // Continue
+ }
+
+ if (
+ error.constructor.name === 'TimeoutError' ||
+ error.code === 'PROMISE_TIMEOUT_ERROR'
+ ) {
+ const newError = new Error(
+ `The website took too long to respond: ${
+ error.message || error
+ } at ${hostname}`
+ )
+
+ newError.code = 'WAPPALYZER_TIMEOUT_ERROR'
+
+ throw newError
}
if (error.message.includes('net::ERR_NAME_NOT_RESOLVED')) {
- throw new Error('Hostname could not be resolved')
+ const newError = new Error(
+ `Hostname could not be resolved at ${hostname}`
+ )
+
+ newError.code = 'WAPPALYZER_DNS_ERROR'
+
+ throw newError
}
throw error
@@ -982,10 +1022,15 @@ class Site {
const { page, cookies, html, css, scripts, meta } =
this.cache[url.href]
- const js = await this.promiseTimeout(getJs(page, technologies), [])
+ const js = await this.promiseTimeout(
+ getJs(page, technologies),
+ [],
+ 'Timeout (js)'
+ )
const dom = await this.promiseTimeout(
getDom(page, technologies),
- []
+ [],
+ 'Timeout (dom)'
)
await this.onDetect(
diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json
index 717d15d6d..bd93a1197 100644
--- a/src/drivers/npm/package.json
+++ b/src/drivers/npm/package.json
@@ -13,7 +13,7 @@
"software"
],
"homepage": "https://www.wappalyzer.com/",
- "version": "6.7.6",
+ "version": "6.7.9",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
diff --git a/src/drivers/webextension/_locales/ca/messages.json b/src/drivers/webextension/_locales/ca/messages.json
index cd9a29824..4abf3f187 100644
--- a/src/drivers/webextension/_locales/ca/messages.json
+++ b/src/drivers/webextension/_locales/ca/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Taulers de missatgeria" },
diff --git a/src/drivers/webextension/_locales/de/messages.json b/src/drivers/webextension/_locales/de/messages.json
index 5cf57f269..6fa57f57e 100644
--- a/src/drivers/webextension/_locales/de/messages.json
+++ b/src/drivers/webextension/_locales/de/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Nachrichten Board" },
diff --git a/src/drivers/webextension/_locales/el/messages.json b/src/drivers/webextension/_locales/el/messages.json
index 65beb7af2..d081e7248 100644
--- a/src/drivers/webextension/_locales/el/messages.json
+++ b/src/drivers/webextension/_locales/el/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Διαδικτυακό Φόρουμ" },
diff --git a/src/drivers/webextension/_locales/en/messages.json b/src/drivers/webextension/_locales/en/messages.json
index 8da563f58..59f58dfa2 100644
--- a/src/drivers/webextension/_locales/en/messages.json
+++ b/src/drivers/webextension/_locales/en/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Message boards" },
diff --git a/src/drivers/webextension/_locales/es/messages.json b/src/drivers/webextension/_locales/es/messages.json
index 50846f876..8f26d5757 100644
--- a/src/drivers/webextension/_locales/es/messages.json
+++ b/src/drivers/webextension/_locales/es/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "Gestor de Contenido" },
"categoryName2": { "message": "Foro" },
diff --git a/src/drivers/webextension/_locales/fa/messages.json b/src/drivers/webextension/_locales/fa/messages.json
index 134357541..05ddfa5c8 100644
--- a/src/drivers/webextension/_locales/fa/messages.json
+++ b/src/drivers/webextension/_locales/fa/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "سیستم مدیریت محتوا" },
"categoryName2": { "message": "انجمن پیام" },
diff --git a/src/drivers/webextension/_locales/fr/messages.json b/src/drivers/webextension/_locales/fr/messages.json
index f215c1697..3c3674338 100644
--- a/src/drivers/webextension/_locales/fr/messages.json
+++ b/src/drivers/webextension/_locales/fr/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum" },
diff --git a/src/drivers/webextension/_locales/gl_ES/messages.json b/src/drivers/webextension/_locales/gl_ES/messages.json
index 7db65e573..578a6b1d6 100644
--- a/src/drivers/webextension/_locales/gl_ES/messages.json
+++ b/src/drivers/webextension/_locales/gl_ES/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Taboleiro de mensaxes" },
diff --git a/src/drivers/webextension/_locales/gr/messages.json b/src/drivers/webextension/_locales/gr/messages.json
index 2e75b9257..6d1f5ba95 100644
--- a/src/drivers/webextension/_locales/gr/messages.json
+++ b/src/drivers/webextension/_locales/gr/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Διαδικτυακό Φόρουμ" },
diff --git a/src/drivers/webextension/_locales/id/messages.json b/src/drivers/webextension/_locales/id/messages.json
index 2451ec79e..e5c8301fa 100644
--- a/src/drivers/webextension/_locales/id/messages.json
+++ b/src/drivers/webextension/_locales/id/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "Sistem Pengelola Konten" },
"categoryName2": { "message": "Papan Pesan" },
diff --git a/src/drivers/webextension/_locales/it/messages.json b/src/drivers/webextension/_locales/it/messages.json
index 6e5178d06..f42d0d0fe 100644
--- a/src/drivers/webextension/_locales/it/messages.json
+++ b/src/drivers/webextension/_locales/it/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum" },
diff --git a/src/drivers/webextension/_locales/ja/messages.json b/src/drivers/webextension/_locales/ja/messages.json
index 14b310c24..e4da2a79c 100644
--- a/src/drivers/webextension/_locales/ja/messages.json
+++ b/src/drivers/webextension/_locales/ja/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "会社種別" },
"attributeCompanyFounded": { "message": "会社創立日" },
"attributeKeywords": { "message": "キーワード" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "メッセージボード" },
diff --git a/src/drivers/webextension/_locales/ko/messages.json b/src/drivers/webextension/_locales/ko/messages.json
index 85bbadb5b..df970e38e 100644
--- a/src/drivers/webextension/_locales/ko/messages.json
+++ b/src/drivers/webextension/_locales/ko/messages.json
@@ -10,82 +10,85 @@
"optionTracking": { "message": "익명으로 wappalyzer.com에 식별된 기술 정보 전송" },
"optionThemeMode": { "message": "다크 모드 호환 활성화" },
"optionBadge": { "message": "아이콘에 식별된 기술 갯수 표시" },
- "optionShowCached": { "message": "Include cached detections in results" },
- "optionApiKey": { "message": "API key" },
- "optionApiKeyDescription": { "message": "get your API key" },
+ "optionShowCached": { "message": "결과에 캐시된 식별 정보 포함" },
+ "optionApiKey": { "message": "API 키" },
+ "optionApiKeyDescription": { "message": "API 키 얻기" },
"disableOnDomain": { "message": "이 웹 사이트에서 끄기" },
"clearCache": { "message": "캐시된 식별 정보 지우기" },
"nothingToDo": { "message": "여기에는 할 일이 없네요." },
"noAppsDetected": { "message": "식별된 기술이 없습니다." },
"categoryPin": { "message": "항상 아이콘 보이기" },
- "termsAccept": { "message": "I'm ok with that" },
- "termsDecline": { "message": "Disable" },
+ "termsAccept": { "message": "동의합니다" },
+ "termsDecline": { "message": "비활성화" },
"termsContent": { "message": "이 확장 기능은 사이트의 도메인과 식별된 기술을 포함한 익명 정보를 wappalyzer.com 에 전송합니다. 이 기능은 설정에서 비활성화 할 수 있습니다." },
"privacyPolicy": { "message": "개인정보처리방침" },
"createAlert": { "message": "이 웹 사이트에 대한 알림 받기" },
- "leadLists": { "message": "Lead generation tools" },
- "tabTechnologies": { "message": "Technologies" },
- "tabPro": { "message": "More info" },
- "creditBalance": { "message": "Credit balance:" },
- "proMessageHeading": { "message": "Unlock PRO features" },
- "proMessage": { "message": "Subscribe to a PRO plan to view company and contact information of the websites you visit." },
- "proButton": { "message": "Compare plans" },
- "proInfo": { "message": "Learn more" },
- "proEmpty": { "message": "No results found." },
- "proCrawl": { "message": "No results found, please check back later." },
- "formSave": { "message": "Save" },
+ "leadLists": { "message": "잠재 고객 발굴 툴" },
+ "tabTechnologies": { "message": "기술" },
+ "tabPro": { "message": "더 보기" },
+ "creditBalance": { "message": "소유 크레딧:" },
+ "proMessageHeading": { "message": "PRO 기능 해제하기" },
+ "proMessage": { "message": "PRO 플랜에 가입하면 방문하는 웹 사이트의 회사 및 연락처 정보를 볼 수 있습니다." },
+ "proButton": { "message": "플랜 비교하기" },
+ "proInfo": { "message": "더 알아보기" },
+ "proEmpty": { "message": "결과가 없습니다." },
+ "proCrawl": { "message": "결과가 없습니다, 잠시 후에 확인해주세요." },
+ "formSave": { "message": "저장" },
- "setCompany": { "message": "Company information" },
- "setKeywords": { "message": "Keywords" },
- "setEmail": { "message": "Email addresses" },
- "setPhone": { "message": "Phone numbers" },
- "setAddress": { "message": "Addresses" },
- "setContact": { "message": "Contact details" },
- "setSocial": { "message": "Social media accounts" },
- "setMeta": { "message": "Metadata" },
- "setLocale": { "message": "Locale" },
- "setTrackers": { "message": "Trackers" },
- "setSecurity": { "message": "Security" },
+ "setCompany": { "message": "회사 정보" },
+ "setKeywords": { "message": "키워드" },
+ "setEmail": { "message": "이메일 주소" },
+ "setPhone": { "message": "휴대폰 번호" },
+ "setAddress": { "message": "주소" },
+ "setContact": { "message": "연락처 상세" },
+ "setSocial": { "message": "소셜 미디어 계정" },
+ "setMeta": { "message": "메타데이터" },
+ "setLocale": { "message": "언어(지역)" },
+ "setTrackers": { "message": "추적기" },
+ "setSecurity": { "message": "보안" },
- "attributeIpCountry": { "message": "IP country" },
- "attributeIpRegion": { "message": "IP region" },
- "attributeLanguage": { "message": "Language" },
- "attributeEmail": { "message": "Email address" },
- "attributePhone": { "message": "Phone number" },
+ "attributeIpCountry": { "message": "IP 나라" },
+ "attributeIpRegion": { "message": "IP 지역" },
+ "attributeLanguage": { "message": "언어" },
+ "attributeEmail": { "message": "이메일 주소" },
+ "attributePhone": { "message": "휴대폰 번호" },
"attributeSkype": { "message": "Skype" },
"attributeWhatsapp": { "message": "WhatsApp" },
- "attributeInferredCompanyName": { "message": "Inferred company name" },
- "attributeTwitter": { "message": "Twitter" },
- "attributeFacebook": { "message": "Facebook" },
- "attributeInstagram": { "message": "Instagram" },
+ "attributeInferredCompanyName": { "message": "유추 회사 명" },
+ "attributeTwitter": { "message": "트위터" },
+ "attributeFacebook": { "message": "페이스북" },
+ "attributeInstagram": { "message": "인스타그램" },
"attributeGithub": { "message": "GitHub" },
"attributeTiktok": { "message": "TikTok" },
- "attributeYoutube": { "message": "YouTube" },
+ "attributeYoutube": { "message": "유튜브" },
"attributePinterest": { "message": "Pinterest" },
"attributeLinkedin": { "message": "LinkedIn" },
"attributeOwler": { "message": "Owler" },
- "attributeTitle": { "message": "Title" },
- "attributeDescription": { "message": "Description" },
- "attributeCopyright": { "message": "Copyright" },
- "attributeCopyrightYear": { "message": "Copyright year" },
- "attributeResponsive": { "message": "Responsive" },
- "attributeCertInfo_issuer": { "message": "Cert issuer" },
- "attributeCertInfo_protocol": { "message": "Cert protocol" },
- "attributeCertInfo_validTo": { "message": "Cert expiry" },
- "attributeHttps": { "message": "SSL/TLS enabled" },
+ "attributeTitle": { "message": "제목" },
+ "attributeDescription": { "message": "설명" },
+ "attributeCopyright": { "message": "저작권" },
+ "attributeCopyrightYear": { "message": "저작 년도" },
+ "attributeResponsive": { "message": "반응형" },
+ "attributeCertInfo_issuer": { "message": "인증서 발행자" },
+ "attributeCertInfo_protocol": { "message": "인증서 프로토콜" },
+ "attributeCertInfo_validTo": { "message": "인증서 만료" },
+ "attributeHttps": { "message": "SSL/TLS 활성화됨" },
"attributeTrackerGoogleAnalytics": { "message": "Google Analytics" },
"attributeTrackerGoogleAdSense": { "message": "Google AdSense" },
"attributeTrackerMedianet": { "message": "Medianet" },
- "attributeTrackerFacebook": { "message": "Facebook" },
- "attributeTrackerOptimizely": { "message": "Optimizely" },
- "attributeCompanyName": { "message": "Company name" },
- "attributeIndustry": { "message": "Industry" },
- "attributeAbout": { "message": "About" },
- "attributeLocations": { "message": "Locations" },
- "attributeCompanySize": { "message": "Company size" },
- "attributeCompanyType": { "message": "Company type" },
- "attributeCompanyFounded": { "message": "Company founded" },
- "attributeKeywords": { "message": "Keywords" },
+ "attributeTrackerFacebook": { "message": "페이스북" },
+ "attributeTrackerOptimizely": { "message": "최적화" },
+ "attributeCompanyName": { "message": "회사 정보" },
+ "attributeIndustry": { "message": "산업" },
+ "attributeAbout": { "message": "정보" },
+ "attributeLocations": { "message": "위치" },
+ "attributeCompanySize": { "message": "회사 크기" },
+ "attributeCompanyType": { "message": "회사 종류" },
+ "attributeCompanyFounded": { "message": "회사 상장" },
+ "attributeKeywords": { "message": "키워드" },
+ "attributeDns_spf": { "message": "SPF 레코드" },
+ "attributeDns_dmarc": { "message": "DMARC 레코드" },
+ "attributeSchemaOrgTypes": { "message": "schema.org 타입" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "포럼 소프트웨어" },
@@ -128,7 +131,7 @@
"categoryName39": { "message": "웹캠" },
"categoryName40": { "message": "프린터" },
"categoryName41": { "message": "결제 처리" },
- "categoryName42": { "message": "Tag managers" },
+ "categoryName42": { "message": "태그 관리자" },
"categoryName44": { "message": "CI" },
"categoryName46": { "message": "원격 접속" },
"categoryName47": { "message": "개발" },
@@ -154,18 +157,18 @@
"categoryName67": { "message": "쿠키 동의" },
"categoryName68": { "message": "접근성" },
"categoryName69": { "message": "소셜 로그인" },
- "categoryName70": { "message": "SSL/TLS certificate authorities" },
- "categoryName71": { "message": "Affiliate programs" },
- "categoryName72": { "message": "Appointment scheduling" },
- "categoryName73": { "message": "Surveys" },
- "categoryName74": { "message": "A/B testing" },
- "categoryName75": { "message": "Email" },
- "categoryName76": { "message": "Personalisation" },
- "categoryName77": { "message": "Retargeting" },
+ "categoryName70": { "message": "SSL/TLS 인증 기관" },
+ "categoryName71": { "message": "제휴 프로그램" },
+ "categoryName72": { "message": "약속 스케줄링" },
+ "categoryName73": { "message": "설문" },
+ "categoryName74": { "message": "A/B 테스팅" },
+ "categoryName75": { "message": "이메일" },
+ "categoryName76": { "message": "개인화" },
+ "categoryName77": { "message": "리타겟팅" },
"categoryName78": { "message": "RUM" },
- "categoryName79": { "message": "Geolocation" },
- "categoryName80": { "message": "WordPress themes" },
- "categoryName81": { "message": "Shopify themes" },
- "categoryName82": { "message": "Drupal themes" },
- "categoryName83": { "message": "Browser fingerprinting" }
+ "categoryName79": { "message": "위치" },
+ "categoryName80": { "message": "WordPress 테마" },
+ "categoryName81": { "message": "Shopify 테마" },
+ "categoryName82": { "message": "Drupal 테마" },
+ "categoryName83": { "message": "브라우저 지문 (fingerprinting)" }
}
diff --git a/src/drivers/webextension/_locales/pl/messages.json b/src/drivers/webextension/_locales/pl/messages.json
index 5abce19fd..d869ce66e 100644
--- a/src/drivers/webextension/_locales/pl/messages.json
+++ b/src/drivers/webextension/_locales/pl/messages.json
@@ -86,6 +86,10 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
+
"categoryName1": { "message": "System zarządzania treścią" },
"categoryName2": { "message": "Forum" },
"categoryName3": { "message": "Menedżer baz danych" },
diff --git a/src/drivers/webextension/_locales/pt/messages.json b/src/drivers/webextension/_locales/pt/messages.json
index 22588deaf..0921f9b27 100644
--- a/src/drivers/webextension/_locales/pt/messages.json
+++ b/src/drivers/webextension/_locales/pt/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Fórum" },
diff --git a/src/drivers/webextension/_locales/pt_BR/messages.json b/src/drivers/webextension/_locales/pt_BR/messages.json
index 2cda152dd..299969804 100644
--- a/src/drivers/webextension/_locales/pt_BR/messages.json
+++ b/src/drivers/webextension/_locales/pt_BR/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Fórum" },
diff --git a/src/drivers/webextension/_locales/ro/messages.json b/src/drivers/webextension/_locales/ro/messages.json
index 70a870844..4c253c69c 100644
--- a/src/drivers/webextension/_locales/ro/messages.json
+++ b/src/drivers/webextension/_locales/ro/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum de discuții" },
diff --git a/src/drivers/webextension/_locales/ru/messages.json b/src/drivers/webextension/_locales/ru/messages.json
index 10e4f61ad..687ddca32 100644
--- a/src/drivers/webextension/_locales/ru/messages.json
+++ b/src/drivers/webextension/_locales/ru/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Форум" },
diff --git a/src/drivers/webextension/_locales/sk/messages.json b/src/drivers/webextension/_locales/sk/messages.json
index 2cc0f8343..e20832a02 100644
--- a/src/drivers/webextension/_locales/sk/messages.json
+++ b/src/drivers/webextension/_locales/sk/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Message Board" },
diff --git a/src/drivers/webextension/_locales/tr/messages.json b/src/drivers/webextension/_locales/tr/messages.json
index 4a07825db..619ea9bc3 100644
--- a/src/drivers/webextension/_locales/tr/messages.json
+++ b/src/drivers/webextension/_locales/tr/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "İçerik Yönetim Sistemi" },
"categoryName2": { "message": "Mesaj Tahtası" },
diff --git a/src/drivers/webextension/_locales/uk/messages.json b/src/drivers/webextension/_locales/uk/messages.json
index f455511d7..dad6d7ec5 100644
--- a/src/drivers/webextension/_locales/uk/messages.json
+++ b/src/drivers/webextension/_locales/uk/messages.json
@@ -86,7 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
-
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Форум" },
diff --git a/src/drivers/webextension/_locales/uz/messages.json b/src/drivers/webextension/_locales/uz/messages.json
index 350b27c94..b3f466e6a 100644
--- a/src/drivers/webextension/_locales/uz/messages.json
+++ b/src/drivers/webextension/_locales/uz/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "CMS (KBT)" },
"categoryName2": { "message": "Forum" },
diff --git a/src/drivers/webextension/_locales/zh_CN/messages.json b/src/drivers/webextension/_locales/zh_CN/messages.json
index 835322922..84f3e4599 100644
--- a/src/drivers/webextension/_locales/zh_CN/messages.json
+++ b/src/drivers/webextension/_locales/zh_CN/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "内容管理系统(CMS)" },
"categoryName2": { "message": "信息板" },
diff --git a/src/drivers/webextension/_locales/zh_TW/messages.json b/src/drivers/webextension/_locales/zh_TW/messages.json
index e22bc1e74..1556c4287 100644
--- a/src/drivers/webextension/_locales/zh_TW/messages.json
+++ b/src/drivers/webextension/_locales/zh_TW/messages.json
@@ -86,6 +86,9 @@
"attributeCompanyType": { "message": "Company type" },
"attributeCompanyFounded": { "message": "Company founded" },
"attributeKeywords": { "message": "Keywords" },
+ "attributeDns_spf": { "message": "SPF record" },
+ "attributeDns_dmarc": { "message": "DMARC record" },
+ "attributeSchemaOrgTypes": { "message": "schema.org types" },
"categoryName1": { "message": "內容管理系統(CMS)" },
"categoryName2": { "message": "留言板/討論區" },
diff --git a/src/drivers/webextension/css/styles.css b/src/drivers/webextension/css/styles.css
index dabf5fa36..989064554 100644
--- a/src/drivers/webextension/css/styles.css
+++ b/src/drivers/webextension/css/styles.css
@@ -13,6 +13,7 @@
* {
box-sizing: border-box;
+ scrollbar-width: none;
}
body {
@@ -23,10 +24,13 @@ body {
font-size: .9rem;
line-height: 1.5rem;
margin: 0;
- width: 34rem;
overflow-x: hidden;
}
+.body__popup {
+ width: 34rem;
+}
+
a, a:focus, a:hover {
color: var(--color-primary);
outline: none;
diff --git a/src/drivers/webextension/html/options.html b/src/drivers/webextension/html/options.html
index 9b4efbeab..2535cc15f 100644
--- a/src/drivers/webextension/html/options.html
+++ b/src/drivers/webextension/html/options.html
@@ -11,7 +11,7 @@
-
+
diff --git a/src/drivers/webextension/html/popup.html b/src/drivers/webextension/html/popup.html
index 56c90f39e..3dcccc270 100644
--- a/src/drivers/webextension/html/popup.html
+++ b/src/drivers/webextension/html/popup.html
@@ -11,7 +11,7 @@
-
+