diff --git a/bin/sync-disposable-emails b/bin/sync-disposable-emails index 3c1a8d6..b410acf 100755 --- a/bin/sync-disposable-emails +++ b/bin/sync-disposable-emails @@ -3,30 +3,6 @@ require_relative "helpers" -def ten_minute_mail - path = "disposable/10minutemail.txt" - url = "https://10minutemail.com/session/address" - - 20.times do - refresh_list(url: url, path: path) do |response| - _account, host = response.data.fetch("address").split("@") - - [host] - end - - sleep random_timeout - end -end - -def temp_mail - path = "disposable/tempmail.txt" - url = "https://api4.temp-mail.org/request/domains/format/json" - - refresh_list(url: url, path: path) do |response| - response.data.map {|domain| domain.tr("@", "") } - end -end - def temp_mail_address path = "disposable/tempmailaddress.txt" url = "https://www.tempmailaddress.com/index/index" @@ -45,7 +21,16 @@ def tempmail_io url = "https://api.internal.temp-mail.io/api/v2/domains" refresh_list(url: url, path: path) do |response| - response.data["domains"] + JSON.parse(response.data)["domains"] + end +end + +def moakt + path = "disposable/moakt.txt" + url = "https://www.moakt.com/" + + refresh_list(url: url, path: path) do |response| + response.data.dig("data", "hostnames") || [] end end @@ -58,7 +43,9 @@ def gmailnator response = Aitch.get(url: url, headers: default_headers) - throw "Received #{response.status} when getting CSRF token" unless response.ok? + unless response.ok? + throw "Received #{response.status} when getting CSRF token" + end cookie_header = response.headers["set-cookie"] attr = response.data.css("#csrf_token").first @@ -102,8 +89,10 @@ def domain_scraping(name, url, selector) new_domains = new_domains .map(&:squish) .reject(&:empty?) - .map {|domain| domain[host_regex, 1]&.squish&.tr("@", "") } - .reject(&:nil?) + .filter_map do |domain| + domain[host_regex, + 1]&.squish&.tr("@", "") + end .reject(&:empty?) .map {|domain| domain.gsub(/\s*\((.*?)\)/, "") } @@ -132,7 +121,9 @@ def process_scraping(element, value_selector) end end - raise "no value found: #{element} (value_selector: #{value_selector})" unless value + unless value + raise "no value found: #{element} (value_selector: #{value_selector})" + end value end @@ -147,25 +138,24 @@ threads << thread { load_github_url("https://raw.githubusercontent.com/maxmalysh threads << thread { load_github_url("https://raw.githubusercontent.com/jespernissen/disposable-maildomain-list/master/disposable-maildomain-list.txt") } threads << thread { load_github_url("https://raw.githubusercontent.com/wesbos/burner-email-providers/master/emails.txt") } threads << thread { load_github_url("https://gist.github.com/fnando/dafe542cac13f831bbf5521a55248116/raw/disposable.txt") } -threads << thread { ten_minute_mail } -threads << thread { temp_mail } threads << thread { temp_mail_address } threads << thread { tempmail_io } +threads << thread { moakt } threads << thread { load_file("disposable/disposable_manually_added.txt") } + +10.times do + threads << thread { domain_scraping("10minutemail", "https://10minutemail.net/?lang=en", "#fe_text::attr(value)") } +end + +threads << thread { domain_scraping("forwardemail", "https://forwardemail.net/en/disposable-addresses", "code::text()") } threads << thread { domain_scraping("guerrillamail", "https://www.guerrillamail.com/", "select option::attr(value)") } -threads << thread { domain_scraping("moakt", "https://www.moakt.com", "select option::attr(value)") } threads << thread { domain_scraping("tempr", "https://tempr.email/", "select[name=DomainId] option::text()") } -threads << thread { domain_scraping("yepmail", "https://yepmail.co/", "select[name=domain] option::text()") } threads << thread { domain_scraping("fake_email_generator", "https://fakemailgenerator.net", "[data-mailhost]::attr(data-mailhost)") } -threads << thread { domain_scraping("tempemails", "https://www.tempemails.net/", "select[name=domain] option::attr(value)") } -threads << thread { domain_scraping("clipmails", "https://clipmails.com/", ".domain-selector::text()") } threads << thread { domain_scraping("1secmail", "https://www.1secmail.com/", "select[id=domain] option::attr(value)") } threads << thread { domain_scraping("emailfake", "https://generator.email", ".tt-suggestion p::text()") } threads << thread { domain_scraping("emailfake", "https://emailfake.com/", ".tt-suggestion p::text()") } threads << thread { domain_scraping("emailfake", "https://email-fake.com/", ".tt-suggestion p::text()") } threads << thread { domain_scraping("receivemail", "https://www.receivemail.org/", "select[name=domain] option::text()") } -threads << thread { domain_scraping("itemp", "https://itemp.email", "select[name=domain] option::text()") } -threads << thread { domain_scraping("cs", "https://www.cs.email", "select[id=gm-host-select] option::text()") } threads << thread { domain_scraping("tempmail", "https://tempmail.io/settings/", "select[id=domain] option::text()") } threads << thread { domain_scraping("tempemail", "https://tempemail.co", "select[name=email_domain] option::text()") } @@ -194,14 +184,17 @@ Dir["./data/disposable/**/*.txt"].map do |file| end ignore_domains = normalize_list(File.read("#{__dir__}/../data/free_email_domains.txt").lines) - .map {|domain| RootDomain.call(domain) } + .map do |domain| + RootDomain.call(domain) +end ignore_domains += normalize_list(File.read("#{__dir__}/../data/private_relays.txt").lines) - .map {|line| RootDomain.call(line) } + .map do |line| + RootDomain.call(line) +end puts "=> Normalize domains (count: #{domains.size})" domains = domains - .map {|domain| RootDomain.call(domain.split("@").last.downcase) } - .compact + .filter_map {|domain| RootDomain.call(domain.split("@").last.downcase) } .uniq .select {|domain| EmailData.tlds.include?(domain.split(".").last) } @@ -210,6 +203,5 @@ save_file("disposable_domains.txt", domains - ignore_domains) emails = normalize_list(File.read("#{__dir__}/../data/manual/disposable_emails.txt").lines) emails += normalize_list(File.read("#{__dir__}/../data/disposable_emails.txt").lines) -emails += gmailnator puts "=> Saving email proxies (count: #{emails.size})" save_file("disposable_emails.txt", emails) diff --git a/data/disposable_domains.txt b/data/disposable_domains.txt index 3c39878..b175907 100644 --- a/data/disposable_domains.txt +++ b/data/disposable_domains.txt @@ -12407,6 +12407,7 @@ airmaxstyles.com airmaxtn1-90paschers.com airmaxtnmagasin.com airmaxukproshop.com +airmighty.net airmo.net airnons.info airnova.pl @@ -18875,6 +18876,7 @@ aztraumacenter.org azu17053eveav.com azulaomarine.com azulgold.com +azulmoving.com azumail.com azunyan.net azurebfh.me @@ -23537,6 +23539,7 @@ bigtetek.tk bigthinkideas.com bigtitscamsplus.com bigtonehorsens.com +bigtux.online bigtuyul.me bigtw.at bigua.info @@ -26715,6 +26718,7 @@ brazzhnikov.ru brborganikhayvancilik.com brborganikhayvancilik.xyz brbqx.com +brbrasiltransportes.com brbtarim.xyz brbu.com brclip.com @@ -30827,6 +30831,7 @@ ccs.pl ccsastunt.com ccsoh.org cctrl.org +ccttool.xyz cctvcamerasrus.xyz cctyoo.com ccunurses.com @@ -32625,6 +32630,7 @@ chivasso.ml chivasso.tk chivesilicone.com chixindianzi.com +chloefd.com chmail.cf chmembership.com chmento.com @@ -39404,6 +39410,7 @@ datotira.cf datovej.ninja datrainternusa.com datrr.gq +datscans.com datsun311parts.com datthocu.xyz datum2.com @@ -39479,6 +39486,7 @@ davinci.com davincidiamonds.com davis.exchange davis1.xyz +davistechnologiesllc.com davnub.ml davomo.com davuboutique.site @@ -43515,6 +43523,7 @@ doktordiv.ru doktoremail.eu dokumakonserbileklik.com dokuzbilisim.com +dolcemia.net dolcher.ru dolequ.com dolimite.com @@ -48738,6 +48747,7 @@ enticefit.com entirelynl.nl entitlemonitor.com entlc.com +entobio.com entopios.net entopios.org entrastd.com @@ -48954,6 +48964,7 @@ epozn.net epp73.de eppicsi.site eppik.ru +epppl.com eppvcanks.shop epreng.net eprimeinc.com @@ -49082,6 +49093,7 @@ eqstqbh7hotkm.gq eqstqbh7hotkm.ml eqstqbh7hotkm.tk eqtlvr.us +equalityautobrokers.com equalitywalk.org equalizer700je.online equalla.icu @@ -50235,6 +50247,7 @@ everalive.com everblood.com evercountry.com everestcast.net +everestgenerators.com evergreenghana.net evergreenideas.info evergreensenior.site @@ -52118,6 +52131,7 @@ faulcon.com faultbaselinefrock.site fauna1flora.ru faurecia.co.in +fauxemail.com fauxto.org fav.cc fav.org @@ -60352,6 +60366,7 @@ goat.coach goat.si goatmail.uk goaustralianow.com +goautoline.com gob0u9.site gobaby.online gobahis98.com @@ -61813,6 +61828,7 @@ gregburnette.com gregcompany.ru greggamel.com greggamel.net +gregmikesell.com gregorheating.co.uk gregoria1818.site gregoriobersi.com @@ -62149,6 +62165,7 @@ gsrscs.xyz gsrv.co.uk gssa9fa5.fun gssetdh.com +gssfire.com gssindia.com gstatic-cache-fra1.xyz gstore96.ru @@ -62272,6 +62289,7 @@ guardprotection.website guardvisor.ru guatemala.org guayturwork.cf +gub40877nezid.com gubiturkey.net gubkiss.com gubuk.team @@ -62609,6 +62627,7 @@ gustore.co gustpay.com gustr.com gusw.com +gutechinternational.com gutenmorgen.site gutezinsen.biz gutierrezmail.bid @@ -64570,6 +64589,7 @@ hdsdentistportal.org hdserialonline.ru hdserialy.ru hdseriionline.ru +hdservice.net hdsfysd.ml hdsfysd.tk hdsports247.net @@ -70698,6 +70718,7 @@ incredibility.info incredibleguys.com incredibleproduct.ru incrediemail.com +inctart.com incubatank.asia incubator-hostel.com incubatorhostel.com @@ -73306,6 +73327,7 @@ iyoqmail.com iyouwe.com iyqi.com iyqnmail.com +iyr64972zslsz.com iytyicvta.pl iyumail.com iyurmail.com @@ -74374,6 +74396,7 @@ jesien-zima.pl jesienne-trendy.pw jesisale.site jeskwe.com +jesocalsupply.com jessarhodes.site jessebreeden.com jessejames.net @@ -81469,6 +81492,7 @@ lbbxyhyf.shop lbcore.live lbe.kr lbedhm.us +lbg-llc.com lbhuxcywcxjnh.cf lbhuxcywcxjnh.ga lbhuxcywcxjnh.gq @@ -81735,6 +81759,7 @@ learnquranandtajweed.com learnrealestateinvestingonline.com learnskillsforlife.us learnsystem.online +learntobeabody.com learntofly.me learntoparty.com learnwithvideo.org @@ -86286,6 +86311,7 @@ macgcanhau.gq macgcanhau.ml macgcanhau.tk machadobarcelona.com +machaimichaelenterprise.com machdroid.xyz machinalix.biz machinalix.net @@ -90098,6 +90124,7 @@ mediadelta.com mediafate.com mediaflow.cd mediaho.net +mediaholy.com mediahydra.ru mediakavkaz.ru mediakomp.ru @@ -91387,6 +91414,7 @@ miamihousewife.org miamimetro.com miamimotorcycleaccidentattorneys.com miamiquote.com +miamiriverboatyard.com miamislime.com miamitourssightseeing.com miamiwrongfuldeathattorneys.com @@ -93864,6 +93892,7 @@ morningdiet.shop morningmood.shop morningritual.shop morningstarkafe.xyz +morningstarlawn.com morningstiffnesspodcast.org morningtreat.shop morningtry.shop @@ -96702,8 +96731,11 @@ namebacki.com namebrandent.com namecie.site namefake.com +namehash.fyi +namehideaddress.net nameladymedically.com namemail.xyz +namemailsire.com namemerfo.com nameofname.pw nameofpic.org.ua @@ -96712,6 +96744,7 @@ nameplanet.com nameprediction.com nameq.io namesearcher4america.com +namesecret.fyi namesever.website nameshirt.xyz namesloz.com @@ -99366,6 +99399,7 @@ nmav.xyz nmbbmnm2.info nmbxw.info nmcc.info +nmemail.top nmfefq.us nmfrvry.cf nmfrvry.ga @@ -104282,6 +104316,7 @@ ototarz.com otozuz.com otpku.com otrabajo.com +otratransportation.com otsevers.com otsoft.pl otsonointi.org @@ -107776,6 +107811,7 @@ phoenix-homes-and-lifestyles.com phoenix-ws.pro phoenixdate.com phoenixemergencycare.com +phoenixexteriorsllc.com phoenixgreenvillesinn.com phoenixhomeoffer.com phoenixndt.in @@ -114259,6 +114295,7 @@ qxlvqptiudxbp5.tk qxpaperk.com qxtgd.com qxxx.site +qxz99631zslsz.com qy5p96.us qydwa.live qyeu.com @@ -118558,6 +118595,7 @@ rockpooldiningroup.com rockport.se rockrtmail.com rocks.xyz +rocksech-mail.net rocksmartlink.site rockstar-rp.ru rockstarkelly.com @@ -120065,6 +120103,7 @@ rvbspending.com rvctf.com rvdogs.com rvemold.com +rvi96658omeie.com rviixj.us rvitwc.com rvjtudarhs.cf @@ -122488,6 +122527,7 @@ sctcwe1qet6rktdd.ga sctcwe1qet6rktdd.gq sctcwe1qet6rktdd.ml sctcwe1qet6rktdd.tk +sctransportnmore.com scubado.info scubasvg.com scufupzil.ga @@ -126285,6 +126325,7 @@ skuzos.biz skv-object.ru skvorets.com skwbet.info +skxemail.com skxmdx.fun skxmh.com sky-grad.com @@ -127568,6 +127609,7 @@ solar.pizza solaraction.network solaraction.org solaractivist.network +solaravenue.org solarbet99.site solarclassroom.net solarcoopc.site @@ -128279,6 +128321,7 @@ sparkgnome.com sparkgrowthteam.com sparklepuzzles.app sparkles.rocks +sparklingnewsflow.com sparklogics.com sparkmail.top sparkmobile.xyz @@ -134424,6 +134467,7 @@ terrafirmacollective.org terraform.cloud terraform.dev terraformproject.com +terrafusionperu.com terrainshift.info terranasaurus.com terraorousa.com @@ -135994,6 +136038,7 @@ theunitestars.com theupperroomyork.com theupscalecircle.com theuvitinh.org +thevacayclub.com thevalentines.faith thevaltrexnetwork.online thevapeonator.com @@ -151069,6 +151114,7 @@ wrayauto.com wrayultratrim.com wrcbsaei.shop wrdtme.us +wremail.xyz wrench.buzz wrenchenbt.space wrengostic.com @@ -152396,6 +152442,7 @@ xihunwu.com xiii.nu xiinoo31.com xijjfjoo.turystyka.pl +xik23839zslsz.com xikihn.us xilaimai.club xilaohu.top @@ -152661,6 +152708,7 @@ xl7fnr.us xl8037.com xl9837.com xlarge.kiwi +xlazy.cc xlby.com xlchapi.com xlcool.com @@ -156235,6 +156283,7 @@ yqdongze.com yqejb1.site yqeo.com yqevzp.online +yqi01525omeie.com yqjmtqpl.shop yqlnd.art yquhnhipm.pl @@ -158271,6 +158320,7 @@ zqrni.com zqrni.net zqw.pl zr8la.us +zra29701nezid.com zran5yxefwrcpqtcq.cf zran5yxefwrcpqtcq.ga zran5yxefwrcpqtcq.gq