1
2
3
4
5
6
7
8
9
10
11const TXT_VENDORS = [
12
13 ['anthropic-domain-verification', 'Anthropic (Claude)', 'ai'],
14 ['openai-domain-verification', 'OpenAI', 'ai'],
15 ['cursor-domain-verification', 'Cursor', 'ai'],
16 ['perplexity-ai-domain-verification', 'Perplexity', 'ai'],
17 ['elevenlabs', 'ElevenLabs', 'ai'],
18 ['dust-domain-verification', 'Dust', 'ai'],
19 ['gamma-domain-verification', 'Gamma', 'ai'],
20 ['decagon-domain-verification', 'Decagon', 'ai'],
21 ['gc-ai-domain-verification', 'GC AI', 'ai'],
22 ['glean-domain-verification', 'Glean', 'ai'],
23 ['writer-domain-verification', 'Writer', 'ai'],
24 ['sierra-domain-verification', 'Sierra', 'ai'],
25 ['harvey-domain-verification', 'Harvey', 'ai'],
26 ['copy-ai-domain-verification', 'Copy.ai', 'ai'],
27 ['synthesia-domain-verification', 'Synthesia', 'ai'],
28
29
30 ['google-site-verification', 'Google Workspace', 'email'],
31 ['MS', 'Microsoft 365', 'email'],
32 ['protonmail-verification', 'Proton Mail', 'email'],
33 ['zoho-verification', 'Zoho', 'email'],
34 ['yahoo-verification-key', 'Yahoo', 'email'],
35 ['amazonses', 'Amazon SES', 'email-marketing'],
36 ['mailru-verification', 'Mail.ru', 'email'],
37
38
39 ['hubspot-developer-verification', 'HubSpot', 'crm-sales'],
40 ['hubspot-domain-verification', 'HubSpot', 'crm-sales'],
41 ['klaviyo-site-verification', 'Klaviyo', 'email-marketing'],
42 ['drift-domain-verification', 'Drift', 'support'],
43 ['facebook-domain-verification', 'Meta Ads', 'advertising'],
44 ['tiktok-developers-site-verification', 'TikTok', 'advertising'],
45 ['pinterest-site-verification', 'Pinterest', 'advertising'],
46 ['liveramp-site-verification', 'LiveRamp', 'analytics'],
47 ['segment-site-verification', 'Segment', 'analytics'],
48 ['mixpanel-domain-verify', 'Mixpanel', 'analytics'],
49 ['amplitude-domain-verification', 'Amplitude', 'analytics'],
50 ['reachdesk-verification', 'Reachdesk', 'crm-sales'],
51 ['outreach-domain-verification', 'Outreach', 'crm-sales'],
52
53
54 ['atlassian-domain-verification', 'Atlassian', 'collaboration'],
55 ['atlassian-sending-domain-verification', 'Atlassian', 'collaboration'],
56 ['slack-domain-verification', 'Slack', 'collaboration'],
57 ['zoom-domain-verification', 'Zoom', 'collaboration'],
58 ['ZOOM_verify', 'Zoom', 'collaboration'],
59 ['webexdomainverification', 'Cisco Webex', 'collaboration'],
60 ['notion-domain-verification', 'Notion', 'collaboration'],
61 ['airtable-verification', 'Airtable', 'collaboration'],
62 ['miro-verification', 'Miro', 'collaboration'],
63 ['whimsical', 'Whimsical', 'collaboration'],
64 ['canva-site-verification', 'Canva', 'design'],
65 ['figma-domain-verification', 'Figma', 'design'],
66 ['loom-verification', 'Loom', 'collaboration'],
67 ['loom-site-verification', 'Loom', 'collaboration'],
68 ['dropbox-domain-verification', 'Dropbox', 'collaboration'],
69 ['box-domain-verification', 'Box', 'collaboration'],
70 ['smartsheet-site-validation', 'Smartsheet', 'collaboration'],
71 ['monday-com-verification', 'Monday.com', 'collaboration'],
72 ['linear-domain-verification', 'Linear', 'devtools'],
73 ['asana-domain-verification', 'Asana', 'collaboration'],
74 ['lucidlink-verification', 'LucidLink', 'collaboration'],
75 ['wework-site-verification', 'WeWork', 'workplace'],
76 ['parallels-domain-verification', 'Parallels', 'devtools'],
77 ['teamviewer-sso-verification', 'TeamViewer', 'devtools'],
78 ['citrix-verification-code', 'Citrix', 'devtools'],
79
80
81 ['docker-verification', 'Docker', 'devtools'],
82 ['mongodb-site-verification', 'MongoDB', 'devtools'],
83 ['postman-domain-verification', 'Postman', 'devtools'],
84 ['jetbrains-domain-verification', 'JetBrains', 'devtools'],
85 ['gradle-verification', 'Gradle', 'devtools'],
86 ['gitlab-pages-verification-code', 'GitLab', 'devtools'],
87 ['github-domain-verification', 'GitHub', 'devtools'],
88 ['vercel-domain-verification', 'Vercel', 'cloud-hosting'],
89 ['aws-domain-control-verification', 'AWS', 'cloud-hosting'],
90 ['hcp-domain-verification', 'HashiCorp', 'devtools'],
91 ['browserstack-domain-verification', 'BrowserStack', 'devtools'],
92 ['status-page-domain-verification', 'Atlassian Statuspage', 'observability'],
93 ['datadog-domain-verification', 'Datadog', 'observability'],
94 ['_visual-studio-marketplace-datadog', 'Datadog', 'observability'],
95 ['sentry-domain-verification', 'Sentry', 'observability'],
96 ['unity-sso-verification', 'Unity', 'devtools'],
97 ['autodesk-domain-verification', 'Autodesk', 'design'],
98 ['cloudflare_dashboard_sso', 'Cloudflare', 'cdn-dns'],
99
100
101 ['jamf-site-verification', 'Jamf', 'security'],
102 ['wiz-domain-verification', 'Wiz', 'security'],
103 ['h1-domain-verification', 'HackerOne', 'security'],
104 ['bugcrowd-verification', 'Bugcrowd', 'security'],
105 ['1password-site-verification', '1Password', 'security'],
106 ['knowbe4-site-verification', 'KnowBe4', 'security'],
107 ['paloaltonetworks-site-verification', 'Palo Alto Networks', 'security'],
108 ['detectify-verification', 'Detectify', 'security'],
109 ['censys-domain-verification', 'Censys', 'security'],
110 ['datadome-domain-verify', 'DataDome', 'security'],
111 ['have-i-been-pwned-verification', 'Have I Been Pwned', 'security'],
112 ['onetrust-domain-verification', 'OneTrust', 'legal-privacy'],
113 ['_globalsign-domain-verification', 'GlobalSign', 'security'],
114 ['globalsign-domain-verification', 'GlobalSign', 'security'],
115 ['okta-domain-verification', 'Okta', 'identity-sso'],
116 ['duo-domain-verification', 'Cisco Duo', 'identity-sso'],
117 ['probely', 'Probely', 'security'],
118 ['heyhack-verification', 'HeyHack', 'security'],
119 ['cisco-ci-domain-verification', 'Cisco', 'security'],
120
121
122 ['stripe-verification', 'Stripe', 'payments'],
123 ['docusign', 'DocuSign', 'esignature'],
124 ['adobe-idp-site-verification', 'Adobe', 'design'],
125 ['adobe-sign-verification', 'Adobe Sign', 'esignature'],
126 ['twilio-domain-verification', 'Twilio', 'communications'],
127 ['zapier-domain-verification-challenge', 'Zapier', 'automation'],
128 ['shopify-verification-code', 'Shopify', 'ecommerce'],
129 ['rzp-site-verification', 'Razorpay', 'payments'],
130 ['uber-domain-verification', 'Uber for Business', 'workplace'],
131 ['bettercomp-verify', 'BetterComp', 'hr'],
132 ['reejig-platform-domain-verification', 'Reejig', 'hr'],
133 ['fadv-validation', 'First Advantage', 'hr'],
134 ['workday-domain-verification', 'Workday', 'hr'],
135 ['apple-domain-verification', 'Apple Business Manager', 'workplace'],
136 ['mgverify', 'Mailgun', 'email-marketing'],
137 ['CKO', 'Checkout.com', 'payments'],
138 ['ecostruxure-it-verification', 'Schneider EcoStruxure', 'workplace'],
139 ['masv', 'MASV', 'collaboration'],
140 ['neat-pulse-domain-verification', 'Neat Pulse', 'workplace'],
141 ['serval-domain-verification', 'Serval', 'ai'],
142 ['pinnacle-domain-verification', 'Pinnacle', 'workplace'],
143 ['calendly-domain-verification', 'Calendly', 'collaboration'],
144 ['pendo-domain-verification', 'Pendo', 'analytics'],
145 ['snowflake-domain-verification', 'Snowflake', 'devtools'],
146 ['databricks-domain-verification', 'Databricks', 'devtools'],
147 ['ramp-domain-verification', 'Ramp', 'payments'],
148 ['brex-domain-verification', 'Brex', 'payments'],
149 ['navan-domain-verification', 'Navan', 'workplace'],
150 ['rippling-domain-verification', 'Rippling', 'hr'],
151 ['gusto-domain-verification', 'Gusto', 'hr'],
152 ['deel-domain-verification', 'Deel', 'hr'],
153 ['greenhouse-domain-verification', 'Greenhouse', 'hr'],
154 ['lattice-domain-verification', 'Lattice', 'hr'],
155];
156
157
158const SPF_VENDORS = [
159 ['_spf.google.com', 'Google Workspace', 'email'],
160 ['spf.protection.outlook.com', 'Microsoft 365', 'email'],
161 ['mail.zendesk.com', 'Zendesk', 'support'],
162 ['_spf.salesforce.com', 'Salesforce', 'crm-sales'],
163 ['amazonses.com', 'Amazon SES', 'email-marketing'],
164 ['mktomail.com', 'Marketo', 'email-marketing'],
165 ['sendgrid.net', 'SendGrid', 'email-marketing'],
166 ['servers.mcsv.net', 'Mailchimp', 'email-marketing'],
167 ['mailgun.org', 'Mailgun', 'email-marketing'],
168 ['spf.mandrillapp.com', 'Mailchimp Transactional', 'email-marketing'],
169 ['mg-spf.greenhouse.io', 'Greenhouse', 'hr'],
170 ['_spf.atlassian.net', 'Atlassian', 'collaboration'],
171 ['stspg-customer.com', 'Atlassian Statuspage', 'observability'],
172 ['spf.mailjet.com', 'Mailjet', 'email-marketing'],
173 ['_spf.hubspot.com', 'HubSpot', 'crm-sales'],
174 ['spf.mtasv.net', 'Postmark', 'email-marketing'],
175 ['helpscoutemail.com', 'Help Scout', 'support'],
176 ['_spf.intercom.io', 'Intercom', 'support'],
177 ['pardot.com', 'Salesforce Pardot', 'email-marketing'],
178 ['spf.qualtrics.com', 'Qualtrics', 'analytics'],
179 ['_spf.workday.com', 'Workday', 'hr'],
180 ['spf.klaviyo.com', 'Klaviyo', 'email-marketing'],
181 ['customeriomail.com', 'Customer.io', 'email-marketing'],
182 ['spf.braze.com', 'Braze', 'email-marketing'],
183 ['_spf.lever.co', 'Lever', 'hr'],
184 ['_spf.ashbyhq.com', 'Ashby', 'hr'],
185];
186
187
188const MX_VENDORS = [
189 ['aspmx.l.google.com', 'Google Workspace'],
190 ['l.google.com', 'Google Workspace'],
191 ['googlemail.com', 'Google Workspace'],
192 ['outlook.com', 'Microsoft 365'],
193 ['protection.outlook.com', 'Microsoft 365'],
194 ['pphosted.com', 'Proofpoint'],
195 ['ppe-hosted.com', 'Proofpoint'],
196 ['mimecast.com', 'Mimecast'],
197 ['cf-emailsecurity.net', 'Cloudflare Email Security'],
198 ['zoho.com', 'Zoho Mail'],
199 ['zohomail', 'Zoho Mail'],
200 ['protonmail.ch', 'Proton Mail'],
201 ['messagingengine.com', 'Fastmail'],
202 ['barracudanetworks.com', 'Barracuda'],
203 ['mailgun.org', 'Mailgun'],
204 ['improvmx.com', 'ImprovMX'],
205 ['forwardemail.net', 'Forward Email'],
206];
207
208
209const NS_VENDORS = [
210 ['cloudflare.com', 'Cloudflare'],
211 ['awsdns', 'AWS Route 53'],
212 ['azure-dns', 'Azure DNS'],
213 ['nsone.net', 'NS1'],
214 ['dnsimple.com', 'DNSimple'],
215 ['googledomains.com', 'Google Domains'],
216 ['ultradns', 'UltraDNS'],
217 ['akam.net', 'Akamai'],
218 ['dynect.net', 'Oracle Dyn'],
219 ['name-services.com', 'Enom'],
220 ['domaincontrol.com', 'GoDaddy'],
221 ['registrar-servers.com', 'Namecheap'],
222 ['vercel-dns.com', 'Vercel'],
223 ['netlify.com', 'Netlify'],
224];
225
226
227const HEADER_VENDORS = [
228 ['cf-ray', 'Cloudflare', 'cdn-dns'],
229 ['x-vercel-id', 'Vercel', 'cloud-hosting'],
230 ['x-nf-request-id', 'Netlify', 'cloud-hosting'],
231 ['x-amz-cf-id', 'AWS CloudFront', 'cdn-dns'],
232 ['x-served-by', 'Fastly', 'cdn-dns'],
233 ['x-github-request-id', 'GitHub Pages', 'cloud-hosting'],
234 ['x-shopify-stage', 'Shopify', 'ecommerce'],
235 ['x-drupal-cache', 'Drupal', 'cms'],
236 ['x-generator', null, 'cms'],
237 ['x-wix-request-id', 'Wix', 'cms'],
238 ['x-hs-hub-id', 'HubSpot CMS', 'cms'],
239];
240
241
242const HTML_VENDORS = [
243 ['googletagmanager.com', 'Google Tag Manager', 'analytics'],
244 ['google-analytics.com', 'Google Analytics', 'analytics'],
245 ['cdn.segment.com', 'Segment', 'analytics'],
246 ['cdn.mxpnl.com', 'Mixpanel', 'analytics'],
247 ['static.hotjar.com', 'Hotjar', 'analytics'],
248 ['cdn.amplitude.com', 'Amplitude', 'analytics'],
249 ['plausible.io', 'Plausible', 'analytics'],
250 ['posthog.com', 'PostHog', 'analytics'],
251 ['widget.intercom.io', 'Intercom', 'support'],
252 ['js.driftt.com', 'Drift', 'support'],
253 ['static.zdassets.com', 'Zendesk', 'support'],
254 ['embed.tawk.to', 'Tawk.to', 'support'],
255 ['js.hs-scripts.com', 'HubSpot', 'crm-sales'],
256 ['js.hsforms.net', 'HubSpot', 'crm-sales'],
257 ['snap.licdn.com', 'LinkedIn Insight', 'advertising'],
258 ['connect.facebook.net', 'Meta Pixel', 'advertising'],
259 ['analytics.tiktok.com', 'TikTok Pixel', 'advertising'],
260 ['cdn.shopify.com', 'Shopify', 'ecommerce'],
261 ['wp-content', 'WordPress', 'cms'],
262 ['wp-includes', 'WordPress', 'cms'],
263 ['assets.squarespace.com', 'Squarespace', 'cms'],
264 ['cdn.sanity.io', 'Sanity', 'cms'],
265 ['webflow.com', 'Webflow', 'cms'],
266 ['contentful.com', 'Contentful', 'cms'],
267 ['js.stripe.com', 'Stripe', 'payments'],
268 ['paypal.com/sdk', 'PayPal', 'payments'],
269 ['checkout.com', 'Checkout.com', 'payments'],
270 ['browser.sentry-cdn.com', 'Sentry', 'observability'],
271 ['datadoghq-browser-agent', 'Datadog RUM', 'observability'],
272 ['cookiebot.com', 'Cookiebot', 'legal-privacy'],
273 ['cdn.cookielaw.org', 'OneTrust', 'legal-privacy'],
274 ['usercentrics.eu', 'Usercentrics', 'legal-privacy'],
275 ['_next/static', 'Next.js', 'framework'],
276 ['__NUXT__', 'Nuxt', 'framework'],
277 ['data-svelte', 'Svelte', 'framework'],
278 ['ng-version', 'Angular', 'framework'],
279 ['gatsby-', 'Gatsby', 'framework'],
280];
281
282const CATEGORY_LABELS = {
283 ai: 'AI & LLM tools',
284 email: 'Email hosting',
285 'email-marketing': 'Email & marketing delivery',
286 'crm-sales': 'CRM & sales',
287 support: 'Customer support',
288 analytics: 'Analytics',
289 advertising: 'Advertising & pixels',
290 security: 'Security',
291 'identity-sso': 'Identity & SSO',
292 collaboration: 'Collaboration',
293 devtools: 'Developer tools',
294 observability: 'Observability',
295 'cloud-hosting': 'Cloud & hosting',
296 'cdn-dns': 'CDN & DNS',
297 payments: 'Payments',
298 hr: 'HR & recruiting',
299 esignature: 'E-signature',
300 design: 'Design',
301 ecommerce: 'E-commerce',
302 cms: 'CMS',
303 framework: 'Web framework',
304 automation: 'Automation',
305 communications: 'Communications',
306 'legal-privacy': 'Legal & privacy',
307 workplace: 'Workplace',
308};
309
310
311
312
313
314
315function matchTxt(record) {
316 const value = String(record || '').trim();
317 let best = null;
318 for (const [prefix, vendor, category] of TXT_VENDORS) {
319 if (value.toLowerCase().startsWith(prefix.toLowerCase())
320
321 && (value.length === prefix.length || /[=:\-_.]/.test(value[prefix.length] || ''))) {
322 if (!best || prefix.length > best.prefix.length) best = { prefix, vendor, category };
323 }
324 }
325 return best ? { vendor: best.vendor, category: best.category } : null;
326}
327
328export {
329 TXT_VENDORS, SPF_VENDORS, MX_VENDORS, NS_VENDORS,
330 HEADER_VENDORS, HTML_VENDORS, CATEGORY_LABELS, matchTxt,
331};