Benign javascript Download

free-email-domains 1.9.23

legitimate domain list package

“Comprehensive list of free email provider domains for signup validation and disposable filtering.”

Install hook fetches branch-tip remote contentDeclares an npm postinstall lifecycle hook

Evidence

npm package author uses Gmail package.json · lines 1–26
1{
2 "name": "free-email-domains",
3 "description": "A comprehensive list of all free email domain providers",
4 "homepage": "https://github.com/Kikobeats/free-email-domains",
5 "version": "1.9.23",
6 "main": "domains.js",
7 "author": {
8 "email": "josefrancisco.verdu@gmail.com",
9 "name": "Kiko Beats",
10 "url": "https://kikobeats.com"
⋯16 lines
Has postinstall script hook package.json · lines 42–89
42:37…
43 "email": "[email protected]"
44 }
45 ],
46 "repository": {
47 "type": "git",
48 "url": "git+https://github.com/kikobeats/free-email-domains.git"
49 },
50 "bugs": {
⋯10 lines
61 "mail"
62 ],
63 "dependencies": {},
64 "devDependencies": {
65 "@commitlint/cli": "latest",
66 "@commitlint/config-conventional": "latest",
⋯5 lines
72 "nano-staged": "latest",
73 "should": "latest",
74 "simple-git-hooks": "latest",
75 "standard": "latest",
76 "standard-version": "latest"
77 },
78 "engines": {
79 "node": ">= 18"
80 },
81 "files": [
82 "domains.js",
83 "domains.json",
84 "index.d.ts",
85 "scripts"
86 ],
87 "scripts": {
88 "clean": "rm -rf node_modules",
89 "contributors": "(npx git-authors-cli && npx finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true",
raw.githubusercontent.com web file URL postinstall.mjs · lines 1–24
1import { writeFile } from 'node:fs/promises'
2
3const SOURCES = [
4 {
5 name: 'HubSpot blocked domains',
6 url: 'https://f.hubspotusercontent40.net/hubfs/2832391/Marketing/Lead-Capture/free-domains-2.csv'
7 },
8 {
9 name: 'Castle disposable email domains',
10 url: 'https://raw.githubusercontent.com/castle/disposable-email-domains/master/disposable-email-domains.txt'
11 },
12 {
13 name: 'Disposable email domains blocklist',
14 url: 'https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/main/disposable_email_blocklist.conf'
15 }
16]
17
18/** Additional domains not present in the URL */
19const DOMAINS = [
20 '2iij.net',
⋯4 lines
Ad-related CSS selector token postinstall.mjs · lines 60–71
60 'mail.goo.ne.jp',
61 'mail.sony.jp',
62 'megaegg.ne.jp',
63 'mesh.ad.jp',
64 'mineo.jp',
65 'mopera.net',
⋯6 lines
JavaScript fetch reads response body postinstall.mjs · lines 106–142
⋯11 lines
117
118async function fetchSource (source) {
119 const res = await fetch(source.url)
120
121 if (!res.ok) {
122 throw new Error(`Unable to fetch ${source.name} (${res.status})`)
123 }
124
125 const text = await res.text()
126
127 if (text.startsWith('<!DOCTYPE html') || text.includes('<html')) {
128 throw new Error(`Received HTML instead of domain list for ${source.name}`)
129 }
130
⋯6 lines
137 for (const domain of DOMAINS) domains.add(domain)
138 const sorted = Array.from(domains).sort()
139 await writeFile('domains.json', JSON.stringify(sorted, null, 2))
140}
141
142main().catch(error => console.error(error) || process.exit(1))

Showing the top 5 files — 1 more file (7 regions) not shown.

No evidence locations were recorded for this file. Raw result

Keyboard shortcuts on this page: j for the next sample, k for the previous one, x to go back to the feed, d to download the original bytes, r to re-queue the sample for analysis.