email_data 1695515208.0.0 → 1696494936.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd84203c05d1860528fe56a589a5f86878cebc7d72730b12e78a2fa481d821e1
4
- data.tar.gz: 11057089b8a8ba05acf29aa43942f99f680e4469a507994bd047fb7ad95096b1
3
+ metadata.gz: dc7d733def2f25edc5dcc8d5a5e820c401d70436970a70b9415c250235da3987
4
+ data.tar.gz: df619aeabcad30a2a2e97d7797384cabd3649d9c63e57309b2222f87e6b6f592
5
5
  SHA512:
6
- metadata.gz: 62d3623f7bc85a5942bdebf225a3fc26cd81b24b3fe706271e506b0c76eab47fa05e7922439740630150c68bcac2ae53886769ef5617ce490f36a53a6549429d
7
- data.tar.gz: fb9a720d7e907772927caba2dea439fdb3f9bc9b4903273d9be2dda4fae2f216f5042c7662a4b04135230376a4fe0c2aa0c2a06d07bd908d18c013f7da7c53f1
6
+ metadata.gz: b504123b4406a743856579e0651b7cb97ef1d01f71f4586999aaefcb324545e1bc0dc5e282043f4a1683d34b40fb8cb84ea6342b767b5e5d115424fbebb091b8
7
+ data.tar.gz: 7f34fedf68084e9d714579d615ea10f16f7805c9cacdf19bfe783a89a8d71b5a7ae36beb37e9077cfa66471be0755b1784ae2a79e57aebc992a5d76c674fc93b
@@ -3,30 +3,6 @@
3
3
 
4
4
  require_relative "helpers"
5
5
 
6
- def ten_minute_mail
7
- path = "disposable/10minutemail.txt"
8
- url = "https://10minutemail.com/session/address"
9
-
10
- 20.times do
11
- refresh_list(url: url, path: path) do |response|
12
- _account, host = response.data.fetch("address").split("@")
13
-
14
- [host]
15
- end
16
-
17
- sleep random_timeout
18
- end
19
- end
20
-
21
- def temp_mail
22
- path = "disposable/tempmail.txt"
23
- url = "https://api4.temp-mail.org/request/domains/format/json"
24
-
25
- refresh_list(url: url, path: path) do |response|
26
- response.data.map {|domain| domain.tr("@", "") }
27
- end
28
- end
29
-
30
6
  def temp_mail_address
31
7
  path = "disposable/tempmailaddress.txt"
32
8
  url = "https://www.tempmailaddress.com/index/index"
@@ -45,7 +21,16 @@ def tempmail_io
45
21
  url = "https://api.internal.temp-mail.io/api/v2/domains"
46
22
 
47
23
  refresh_list(url: url, path: path) do |response|
48
- response.data["domains"]
24
+ JSON.parse(response.data)["domains"]
25
+ end
26
+ end
27
+
28
+ def moakt
29
+ path = "disposable/moakt.txt"
30
+ url = "https://www.moakt.com/"
31
+
32
+ refresh_list(url: url, path: path) do |response|
33
+ response.data.dig("data", "hostnames") || []
49
34
  end
50
35
  end
51
36
 
@@ -58,7 +43,9 @@ def gmailnator
58
43
 
59
44
  response = Aitch.get(url: url, headers: default_headers)
60
45
 
61
- throw "Received #{response.status} when getting CSRF token" unless response.ok?
46
+ unless response.ok?
47
+ throw "Received #{response.status} when getting CSRF token"
48
+ end
62
49
 
63
50
  cookie_header = response.headers["set-cookie"]
64
51
  attr = response.data.css("#csrf_token").first
@@ -102,8 +89,10 @@ def domain_scraping(name, url, selector)
102
89
  new_domains = new_domains
103
90
  .map(&:squish)
104
91
  .reject(&:empty?)
105
- .map {|domain| domain[host_regex, 1]&.squish&.tr("@", "") }
106
- .reject(&:nil?)
92
+ .filter_map do |domain|
93
+ domain[host_regex,
94
+ 1]&.squish&.tr("@", "")
95
+ end
107
96
  .reject(&:empty?)
108
97
  .map {|domain| domain.gsub(/\s*\((.*?)\)/, "") }
109
98
 
@@ -132,7 +121,9 @@ def process_scraping(element, value_selector)
132
121
  end
133
122
  end
134
123
 
135
- raise "no value found: #{element} (value_selector: #{value_selector})" unless value
124
+ unless value
125
+ raise "no value found: #{element} (value_selector: #{value_selector})"
126
+ end
136
127
 
137
128
  value
138
129
  end
@@ -147,25 +138,24 @@ threads << thread { load_github_url("https://raw.githubusercontent.com/maxmalysh
147
138
  threads << thread { load_github_url("https://raw.githubusercontent.com/jespernissen/disposable-maildomain-list/master/disposable-maildomain-list.txt") }
148
139
  threads << thread { load_github_url("https://raw.githubusercontent.com/wesbos/burner-email-providers/master/emails.txt") }
149
140
  threads << thread { load_github_url("https://gist.github.com/fnando/dafe542cac13f831bbf5521a55248116/raw/disposable.txt") }
150
- threads << thread { ten_minute_mail }
151
- threads << thread { temp_mail }
152
141
  threads << thread { temp_mail_address }
153
142
  threads << thread { tempmail_io }
143
+ threads << thread { moakt }
154
144
  threads << thread { load_file("disposable/disposable_manually_added.txt") }
145
+
146
+ 10.times do
147
+ threads << thread { domain_scraping("10minutemail", "https://10minutemail.net/?lang=en", "#fe_text::attr(value)") }
148
+ end
149
+
150
+ threads << thread { domain_scraping("forwardemail", "https://forwardemail.net/en/disposable-addresses", "code::text()") }
155
151
  threads << thread { domain_scraping("guerrillamail", "https://www.guerrillamail.com/", "select option::attr(value)") }
156
- threads << thread { domain_scraping("moakt", "https://www.moakt.com", "select option::attr(value)") }
157
152
  threads << thread { domain_scraping("tempr", "https://tempr.email/", "select[name=DomainId] option::text()") }
158
- threads << thread { domain_scraping("yepmail", "https://yepmail.co/", "select[name=domain] option::text()") }
159
153
  threads << thread { domain_scraping("fake_email_generator", "https://fakemailgenerator.net", "[data-mailhost]::attr(data-mailhost)") }
160
- threads << thread { domain_scraping("tempemails", "https://www.tempemails.net/", "select[name=domain] option::attr(value)") }
161
- threads << thread { domain_scraping("clipmails", "https://clipmails.com/", ".domain-selector::text()") }
162
154
  threads << thread { domain_scraping("1secmail", "https://www.1secmail.com/", "select[id=domain] option::attr(value)") }
163
155
  threads << thread { domain_scraping("emailfake", "https://generator.email", ".tt-suggestion p::text()") }
164
156
  threads << thread { domain_scraping("emailfake", "https://emailfake.com/", ".tt-suggestion p::text()") }
165
157
  threads << thread { domain_scraping("emailfake", "https://email-fake.com/", ".tt-suggestion p::text()") }
166
158
  threads << thread { domain_scraping("receivemail", "https://www.receivemail.org/", "select[name=domain] option::text()") }
167
- threads << thread { domain_scraping("itemp", "https://itemp.email", "select[name=domain] option::text()") }
168
- threads << thread { domain_scraping("cs", "https://www.cs.email", "select[id=gm-host-select] option::text()") }
169
159
  threads << thread { domain_scraping("tempmail", "https://tempmail.io/settings/", "select[id=domain] option::text()") }
170
160
  threads << thread { domain_scraping("tempemail", "https://tempemail.co", "select[name=email_domain] option::text()") }
171
161
 
@@ -194,14 +184,17 @@ Dir["./data/disposable/**/*.txt"].map do |file|
194
184
  end
195
185
 
196
186
  ignore_domains = normalize_list(File.read("#{__dir__}/../data/free_email_domains.txt").lines)
197
- .map {|domain| RootDomain.call(domain) }
187
+ .map do |domain|
188
+ RootDomain.call(domain)
189
+ end
198
190
  ignore_domains += normalize_list(File.read("#{__dir__}/../data/private_relays.txt").lines)
199
- .map {|line| RootDomain.call(line) }
191
+ .map do |line|
192
+ RootDomain.call(line)
193
+ end
200
194
 
201
195
  puts "=> Normalize domains (count: #{domains.size})"
202
196
  domains = domains
203
- .map {|domain| RootDomain.call(domain.split("@").last.downcase) }
204
- .compact
197
+ .filter_map {|domain| RootDomain.call(domain.split("@").last.downcase) }
205
198
  .uniq
206
199
  .select {|domain| EmailData.tlds.include?(domain.split(".").last) }
207
200
 
@@ -210,6 +203,5 @@ save_file("disposable_domains.txt", domains - ignore_domains)
210
203
 
211
204
  emails = normalize_list(File.read("#{__dir__}/../data/manual/disposable_emails.txt").lines)
212
205
  emails += normalize_list(File.read("#{__dir__}/../data/disposable_emails.txt").lines)
213
- emails += gmailnator
214
206
  puts "=> Saving email proxies (count: #{emails.size})"
215
207
  save_file("disposable_emails.txt", emails)