fakefilter 0.1.95 → 0.1.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +17 -2
  2. package/assets/img/chart1.png +0 -0
  3. package/assets/img/chart2.png +0 -0
  4. package/assets/img/success-rate-10-minute-mail.com.png +0 -0
  5. package/assets/img/success-rate-10-minuten-mail.de.png +0 -0
  6. package/assets/img/success-rate-10mails.net.png +0 -0
  7. package/assets/img/success-rate-10minemail.com.png +0 -0
  8. package/assets/img/success-rate-10minut.com.pl.png +0 -0
  9. package/assets/img/success-rate-10minut.xyz.png +0 -0
  10. package/assets/img/success-rate-10minuteemails.com.png +0 -0
  11. package/assets/img/success-rate-10minutemail.co.za.png +0 -0
  12. package/assets/img/success-rate-10minutemail.com.png +0 -0
  13. package/assets/img/success-rate-10minutemail.info.png +0 -0
  14. package/assets/img/success-rate-10minutemail.net.png +0 -0
  15. package/assets/img/success-rate-10minutemail.org.png +0 -0
  16. package/assets/img/success-rate-10minutesemail.net.png +0 -0
  17. package/assets/img/success-rate-10minutesmail.us.png +0 -0
  18. package/assets/img/success-rate-1secmail.com.png +0 -0
  19. package/assets/img/success-rate-20minutemail.com.png +0 -0
  20. package/assets/img/success-rate-abandonmail.com.png +0 -0
  21. package/assets/img/success-rate-airmailbox.website.png +0 -0
  22. package/assets/img/success-rate-another-temp-mail.com.png +0 -0
  23. package/assets/img/success-rate-brodilla.email.png +0 -0
  24. package/assets/img/success-rate-byom.de.png +0 -0
  25. package/assets/img/success-rate-crazymailing.com.png +0 -0
  26. package/assets/img/success-rate-cryptogmail.com.png +0 -0
  27. package/assets/img/success-rate-default.tmail.thehp.in.png +0 -0
  28. package/assets/img/success-rate-developermail.com.png +0 -0
  29. package/assets/img/success-rate-dispemail.com.png +0 -0
  30. package/assets/img/success-rate-disposablemail.com.png +0 -0
  31. package/assets/img/success-rate-disposeamail.com.png +0 -0
  32. package/assets/img/success-rate-dispostable.com.png +0 -0
  33. package/assets/img/success-rate-dodsi.com.png +0 -0
  34. package/assets/img/success-rate-dropmail.me.png +0 -0
  35. package/assets/img/success-rate-easytrashmail.com.png +0 -0
  36. package/assets/img/success-rate-email-fake.com.png +0 -0
  37. package/assets/img/success-rate-emailfake.com.png +0 -0
  38. package/assets/img/success-rate-emailondeck.com.png +0 -0
  39. package/assets/img/success-rate-eyepaste.com.png +0 -0
  40. package/assets/img/success-rate-fakemail.io.png +0 -0
  41. package/assets/img/success-rate-fakemail.net.png +0 -0
  42. package/assets/img/success-rate-fakemailgenerator.com.png +0 -0
  43. package/assets/img/success-rate-fakermail.com.png +0 -0
  44. package/assets/img/success-rate-fex.plus.png +0 -0
  45. package/assets/img/success-rate-findtempmail.com.png +0 -0
  46. package/assets/img/success-rate-foxiomail.com.png +0 -0
  47. package/assets/img/success-rate-fyii.de.png +0 -0
  48. package/assets/img/success-rate-gecicimail.co.png +0 -0
  49. package/assets/img/success-rate-gecicimail.com.tr.png +0 -0
  50. package/assets/img/success-rate-generator.email.png +0 -0
  51. package/assets/img/success-rate-getnada.com.png +0 -0
  52. package/assets/img/success-rate-gettempmail.com.png +0 -0
  53. package/assets/img/success-rate-gpa.lu.png +0 -0
  54. package/assets/img/success-rate-guerrillamail.com.png +0 -0
  55. package/assets/img/success-rate-harakirimail.com.png +0 -0
  56. package/assets/img/success-rate-haribu.net.png +0 -0
  57. package/assets/img/success-rate-hizli.email.png +0 -0
  58. package/assets/img/success-rate-hottempmail.com.png +0 -0
  59. package/assets/img/success-rate-instant-email.org.png +0 -0
  60. package/assets/img/success-rate-instantemailaddress.com.png +0 -0
  61. package/assets/img/success-rate-linshi-email.com.png +0 -0
  62. package/assets/img/success-rate-lroid.com.png +0 -0
  63. package/assets/img/success-rate-luxusmail.org.png +0 -0
  64. package/assets/img/success-rate-mail-temp.com.png +0 -0
  65. package/assets/img/success-rate-mail.gen.tr.png +0 -0
  66. package/assets/img/success-rate-mail.gw.png +0 -0
  67. package/assets/img/success-rate-mail.tm.png +0 -0
  68. package/assets/img/success-rate-mail1a.de.png +0 -0
  69. package/assets/img/success-rate-mail7.io.png +0 -0
  70. package/assets/img/success-rate-mailcatch.com.png +0 -0
  71. package/assets/img/success-rate-maildim.com.png +0 -0
  72. package/assets/img/success-rate-maildrop.cc.png +0 -0
  73. package/assets/img/success-rate-mailinator.com.png +0 -0
  74. package/assets/img/success-rate-mailnesia.com.png +0 -0
  75. package/assets/img/success-rate-mailpoof.com.png +0 -0
  76. package/assets/img/success-rate-mailsac.com.png +0 -0
  77. package/assets/img/success-rate-mintemail.com.png +0 -0
  78. package/assets/img/success-rate-minuteinbox.com.png +0 -0
  79. package/assets/img/success-rate-moakt.com.png +0 -0
  80. package/assets/img/success-rate-mohmal.com.png +0 -0
  81. package/assets/img/success-rate-muellmail.com.png +0 -0
  82. package/assets/img/success-rate-mytemp.email.png +0 -0
  83. package/assets/img/success-rate-mytrashmailer.com.png +0 -0
  84. package/assets/img/success-rate-niepodam.pl.png +0 -0
  85. package/assets/img/success-rate-nolog.email.png +0 -0
  86. package/assets/img/success-rate-phaantm.de.png +0 -0
  87. package/assets/img/success-rate-shitmail.me.png +0 -0
  88. package/assets/img/success-rate-shitmail.org.png +0 -0
  89. package/assets/img/success-rate-spamdecoy.net.png +0 -0
  90. package/assets/img/success-rate-spamgourmet.com.png +0 -0
  91. package/assets/img/success-rate-spoofmail.de.png +0 -0
  92. package/assets/img/success-rate-t-mail.org.png +0 -0
  93. package/assets/img/success-rate-temp-inbox.com.png +0 -0
  94. package/assets/img/success-rate-temp-mail.io.png +0 -0
  95. package/assets/img/success-rate-temp-mail.org.png +0 -0
  96. package/assets/img/success-rate-temp-mails.com.png +0 -0
  97. package/assets/img/success-rate-temp.cab.png +0 -0
  98. package/assets/img/success-rate-tempail.com.png +0 -0
  99. package/assets/img/success-rate-tempinbox.xyz.png +0 -0
  100. package/assets/img/success-rate-tempmail.cn.png +0 -0
  101. package/assets/img/success-rate-tempmail.co.png +0 -0
  102. package/assets/img/success-rate-tempmail.dev.png +0 -0
  103. package/assets/img/success-rate-tempmail.ninja.png +0 -0
  104. package/assets/img/success-rate-tempmail.tel.png +0 -0
  105. package/assets/img/success-rate-tempmailed.com.png +0 -0
  106. package/assets/img/success-rate-tempmailid.com.png +0 -0
  107. package/assets/img/success-rate-tempmailo.com.png +0 -0
  108. package/assets/img/success-rate-tempo-email.com.png +0 -0
  109. package/assets/img/success-rate-tempo-mail.xyz.png +0 -0
  110. package/assets/img/success-rate-temporary-mail.net.png +0 -0
  111. package/assets/img/success-rate-temporarymail.com.png +0 -0
  112. package/assets/img/success-rate-tempos.email.png +0 -0
  113. package/assets/img/success-rate-tempr.email.png +0 -0
  114. package/assets/img/success-rate-temprmail.com.png +0 -0
  115. package/assets/img/success-rate-tenmail.org.png +0 -0
  116. package/assets/img/success-rate-throwaway.io.png +0 -0
  117. package/assets/img/success-rate-throwawaymail.com.png +0 -0
  118. package/assets/img/success-rate-tmailweb.com.png +0 -0
  119. package/assets/img/success-rate-trash-mail.com.png +0 -0
  120. package/assets/img/success-rate-trashmail.com.png +0 -0
  121. package/assets/img/success-rate-trashmail.de.png +0 -0
  122. package/assets/img/success-rate-trashmail.org.png +0 -0
  123. package/assets/img/success-rate-trashmail.ws.png +0 -0
  124. package/assets/img/success-rate-trashmails.com.png +0 -0
  125. package/assets/img/success-rate-txen.de.png +0 -0
  126. package/assets/img/success-rate-wegwerfemailadresse.com.png +0 -0
  127. package/assets/img/success-rate-yopmail.com.png +0 -0
  128. package/assets/img/success-rate-yopmail.fr.png +0 -0
  129. package/assets/img/success-rate-yopmail.net.png +0 -0
  130. package/examples/online.js +16 -0
  131. package/index.js +149 -26
  132. package/json/data.json +1 -1
  133. package/markdown/README.md +42 -1
  134. package/package.json +1 -1
  135. package/txt/data.txt +42 -1
package/README.md CHANGED
@@ -33,11 +33,13 @@ This format supports firstseen,lastseen,randomSubdomain properties
33
33
  [Txt](txt/data.txt)
34
34
 
35
35
  ## Javascript
36
- We have implemented npm/javascript interface for Javascript Developers
36
+ We have implemented npm/javascript interface for Javascript Developers as demonstration
37
37
 
38
38
  `npm i --save fakefilter`
39
39
 
40
- Demo:
40
+ You have to make sure that this npm package is always up2date in order this static implementation to work as designed.
41
+
42
+ Offline Lookup:
41
43
  ```
42
44
  const { isFakeDomain, isFakeEmail } = require('fakefilter')
43
45
 
@@ -45,6 +47,19 @@ console.log(isFakeDomain('domain.com'))
45
47
  console.log(isFakeEmail('user@domain.com'))
46
48
  ```
47
49
 
50
+
51
+ Online Lookup:
52
+ this version does not throw at all. You either get null (which indicates any error) or false or the object as reply
53
+ ```
54
+ ## also see examples/online.js
55
+ const { isFakeDomainOnline, isFakeEmailOnline } = require('fakefilter')
56
+
57
+ console.log(await isFakeDomainOnline('domain.com'))
58
+ console.log(await isFakeEmailOnline('user@domain.com'))
59
+
60
+ ```
61
+
62
+
48
63
  Test:
49
64
  ```
50
65
  node index.js
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,16 @@
1
+ const { isFakeDomainOnline, isFakeEmailOnline } = require('./../index')
2
+
3
+ async function start() {
4
+ try {
5
+ // not disposable answer
6
+ console.log(await isFakeDomainOnline('domain.com'))
7
+ console.log(await isFakeEmailOnline('user@domain.com'))
8
+ // disposable answer
9
+ console.log(await isFakeDomainOnline('grr.la'))
10
+ console.log(await isFakeEmailOnline('user@grr.la'))
11
+ } catch (err) {
12
+ console.log(err)
13
+ }
14
+ }
15
+
16
+ start()
package/index.js CHANGED
@@ -1,62 +1,185 @@
1
-
2
1
  /*
2
+
3
3
  Basic Javascript Interface to lookup by Email or Domain
4
+
5
+ Important: you need to auto update npm package daily to make continious feed
6
+
4
7
  */
5
8
  const assert = require('assert');
6
9
  const static_json = require('./json/data.json')
10
+ const https = require('https')
7
11
 
8
12
  function hostnameFromEmailAddress(email) {
9
- if (email && typeof email==='string' && email.search(/@/)>0)
13
+ if (email && typeof email === 'string' && email.search(/@/) > 0)
10
14
  return email.split(/@/)[1]
11
15
  return null
12
16
  }
13
17
 
14
- function isFakeDomain(domain,json=false) {
15
- if (!json) json=static_json
16
- for(let dom of Object.keys(json.domains)) {
18
+ function isFakeDomain(domain, json = false) {
19
+ if (!json) json = static_json
20
+ for (let dom of Object.keys(json.domains)) {
17
21
  // exact match
18
- if (dom===domain.toLowerCase().trim()) return dom
22
+ if (dom === domain.toLowerCase().trim()) return dom
19
23
  // subdomain match
20
- if (domain.search(new RegExp(`.+\\.${dom}`))===0) return dom
24
+ if (domain.search(new RegExp(`.+\\.${dom}`)) === 0) return dom
21
25
  }
22
26
  return false
23
27
  }
24
28
 
25
- function isFakeEmail(email,json=false) {
26
- return isFakeDomain(hostnameFromEmailAddress(email),json)
29
+ function fetch(url, timeout = 5000,json=true) {
30
+ return new Promise(async function (resolve, reject) {
31
+ try {
32
+ let request = https.get(url, (res) => {
33
+ if (res.statusCode !== 200) {
34
+ res.resume()
35
+ return reject('STATUSCODE')
36
+ }
37
+ let data = ''
38
+ res.on('data', (chunk) => { data += chunk })
39
+ res.on('close', () => {
40
+ if (json) {
41
+ try {
42
+ return resolve(JSON.parse(data))
43
+ }catch(err) {
44
+ return resolve(false)
45
+ }
46
+ }
47
+ return resolve(data)
48
+ })
49
+ })
50
+ request.setTimeout(timeout, () => {
51
+ request.destroy()
52
+ return reject('TIMEOUT')
53
+ })
54
+ request.end()
55
+
56
+ request.on('error', (err) => {
57
+ return reject(err)
58
+ })
59
+ } catch (err3) {
60
+ // errors like ERR_INVALID_PROTOCOL is thrown here
61
+ reject(err3)
62
+ }
63
+ })
27
64
  }
28
65
 
29
- // basic tests
30
- if (require.main==module) {
66
+ function isFakeEmail(email, json = false) {
67
+ return isFakeDomain(hostnameFromEmailAddress(email), json)
68
+ }
69
+
70
+ function isFakeEmailOnline(email, timeout=5000) {
71
+ return isFakeDomainOnline(hostnameFromEmailAddress(email), timeout)
72
+ }
73
+
74
+
75
+ function isFakeDomainOnline(domain,timeout=5000) {
76
+ // we intentionally do not reject because we do not want to hold
77
+ // the process too long, null indicates error
78
+ return new Promise(async function (resolve, reject) {
79
+ try {
80
+ let answer = await fetch(`https://fakefilter.net/api/is/fakedomain/${domain}`,timeout,true)
81
+ if (answer && answer.hasOwnProperty('retcode') && answer.retcode===200)
82
+ return resolve(answer)
83
+ }catch(err) {
84
+ // error returns null
85
+ return resolve(null)
86
+ }
87
+ })
88
+ }
89
+
90
+ async function runTests() {
91
+ // fetch tests
92
+
93
+ // not existing domain
94
+ try {
95
+ await fetch(`https://nonexisting${Date.now()}.com`)
96
+ assert.equal(false, true) // we should never reach this position
97
+ } catch (err) {
98
+ assert.equal(err.code, 'ENOTFOUND')
99
+ }
100
+
101
+ // not existing url on existing domain
102
+ try {
103
+ await fetch(`https://fakefilter.net/notexisting`)
104
+ assert.equal(false, true) // we should never reach this position
105
+ } catch (err) {
106
+ assert.equal(err, 'STATUSCODE')
107
+ }
108
+
109
+ // invalid protocoll
110
+ try {
111
+ await fetch(`htps://fakefilter.net/notexisting`)
112
+ assert.equal(false, true) // we should never reach this position
113
+ } catch (err) {
114
+ assert.equal(err.code, 'ERR_INVALID_PROTOCOL')
115
+ }
116
+
117
+ // invalid url
118
+ try {
119
+ await fetch(`://fakefilter.net/notexisting`)
120
+ assert.equal(false, true) // we should never reach this position
121
+ } catch (err) {
122
+ assert.equal(err.code, 'ERR_INVALID_URL')
123
+ }
124
+
125
+
126
+ // 404
127
+ try {
128
+ await fetch(`https://fakefilter.net/api/is/fakedomain/`)
129
+ assert.equal(false, true) // we should never reach this position
130
+ } catch (err) {
131
+ assert.equal(err, 'STATUSCODE')
132
+ }
133
+
134
+ // non FakeDomain
135
+ assert.equal((await fetch(`https://fakefilter.net/api/is/fakedomain/fakefilter.net`)).retcode,200)
136
+ // FakeDomain
137
+ assert.equal((await fetch(`https://fakefilter.net/api/is/fakedomain/fakefilte r.net`)).retcode,-50)
138
+
139
+
31
140
  let json = static_json
32
141
  console.log(`Running tests`)
33
142
  let all_domains = Object.keys(json.domains)
143
+
34
144
  // all domains we know must be detected as FakeDomain
35
- for(let domain of all_domains)
36
- {
145
+ for (let domain of all_domains) {
146
+ // if (domain!=='www.barryogorman.com') continue
37
147
  // console.log((domain),isFakeDomain(domain)===domain.toLowerCase())
38
148
  // exact match
39
-
40
- assert.notEqual(isFakeDomain(domain),false)
149
+ // console.log(`>> ${domain}`)
150
+
151
+ assert.notEqual(isFakeDomain(domain), false)
41
152
  // subdomain match for example any@sub.test.com should match if test.com is part of the filter
42
- assert.notEqual(isFakeDomain(`sub.${domain}`),false)
153
+ assert.notEqual(isFakeDomain(`sub.${domain}`), false)
43
154
 
44
- assert.notEqual(isFakeDomain(`sub.sub.${domain}`),false)
45
- assert.notEqual(isFakeDomain(`another.sub.sub.${domain}`),false)
155
+ assert.notEqual(isFakeDomain(`sub.sub.${domain}`), false)
156
+ assert.notEqual(isFakeDomain(`another.sub.sub.${domain}`), false)
46
157
  // sub$hostname should not be detected as fakedomain - if we have test.com in the filter, subtest.com should not be detected as fake
47
- if (domain.search(/^[^.]+\.[^.]+$/)==0)
48
- {
49
- assert.equal(isFakeEmail(`any@sub${domain}`),false)
50
- assert.equal(isFakeDomain(`sub${domain}`),false)
51
- }
52
- assert.notEqual(isFakeEmail(`any@${domain}`),false)
53
- assert.notEqual(isFakeEmail(`any@sub.${domain}`),false)
158
+ if (domain.search(/^[^.]+\.[^.]+$/) == 0) {
159
+ assert.equal(isFakeEmail(`any@sub${domain}`), false)
160
+ assert.equal(isFakeDomain(`sub${domain}`), false)
161
+ }
162
+ assert.notEqual(isFakeEmail(`any@${domain}`), false)
163
+ assert.notEqual(isFakeEmail(`any@sub.${domain}`), false)
164
+
165
+ // RESTFul API query
166
+ assert.equal((await isFakeDomainOnline(domain)).isFakeDomain,domain)
167
+ assert.equal((await isFakeEmailOnline(`any@${domain}`)).isFakeDomain, domain)
168
+ assert.equal((await isFakeEmailOnline(`any@sub${domain}`)).isFakeDomain, false)
54
169
  }
55
170
  console.log(`OK`)
171
+ process.exit(0)
56
172
  }
57
173
 
174
+ // basic tests
175
+ if (require.main == module) runTests()
58
176
 
59
177
  module.exports = {
178
+ // offline version
60
179
  isFakeDomain,
61
- isFakeEmail
180
+ isFakeEmail,
181
+
182
+ // online version
183
+ isFakeDomainOnline,
184
+ isFakeEmailOnline
62
185
  }