Repo ini berisi daftar domain alamat email sekali pakai dan sementara yang sering digunakan untuk mendaftarkan pengguna palsu untuk melakukan spam atau menyalahgunakan beberapa layanan.
Kami tidak dapat menjamin semua produk tersebut masih dapat dianggap sekali pakai, namun kami melakukan pemeriksaan dasar sehingga kemungkinan besar produk tersebut dapat sekali pakai pada suatu waktu.
Fileallowlist.conf mengumpulkan domain email yang sering kali diidentifikasi sebagai domain sekali pakai, namun kenyataannya tidak.
Jangan ragu untuk membuat PR dengan penambahan atau meminta penghapusan beberapa domain (dengan alasannya).
Secara khusus, harap sebutkan di PR Anda di mana seseorang dapat membuat alamat email sekali pakai yang menggunakan domain tersebut, sehingga pengelola dapat memverifikasinya.
Silakan tambahkan domain sekali pakai baru langsung ke dalam sekali pakai_email_blocklist.conf dalam format yang sama (hanya domain tingkat kedua di baris baru tanpa @), lalu jalankan maintenance.sh. Skrip shell akan membantu Anda mengubah huruf besar menjadi huruf kecil, mengurutkan, menghapus duplikat, dan menghapus domain yang diizinkan.
Anda dapat menyalin, memodifikasi, mendistribusikan dan menggunakan karya tersebut, bahkan untuk tujuan komersial, semuanya tanpa meminta izin.
11/2/21 Kami membuat akun organisasi github dan mentransfer repositori ke sana.
18/04/19 @di bergabung sebagai pengelola inti proyek ini. Terima kasih!
31/7/17 @deguif bergabung sebagai pengelola inti proyek ini. Terima kasih!
12/6/16 - Tersedia sebagai modul PyPI berkat @di
27/7/16 - Mengonversi semua domain ke level kedua. Ini berarti bahwa mulai dari penerapan ini, pelaksana harus berhati-hati dalam mencocokkan nama domain tingkat kedua dengan benar, yaitu @xxx.yyy.zzz
harus cocok dengan yyy.zzz
dalam daftar blokir di mana zzz
adalah akhiran publik. Info lebih lanjut di #46
2/9/14 - Komit pertama 393c21f5
Daftar Isi: Python, PHP, Go, Ruby on Rails, NodeJS, C#, bash, Java, Swift
with open ( 'disposable_email_blocklist.conf' ) as blocklist :
blocklist_content = { line . rstrip () for line in blocklist . readlines ()}
if email . partition ( '@' )[ 2 ] in blocklist_content :
message = "Please enter your permanent email address."
return ( False , message )
else :
return True
Tersedia sebagai modul PyPI berkat @di
>> > from disposable_email_domains import blocklist
>> > 'bearsarefuzzy.com' in blocklist
True
disumbangkan oleh @txt3rob, @deguif, @pjebs dan @Wruczek
function isDisposableEmail ( $ email , $ blocklist_path = null ) {
if (! $ blocklist_path ) $ blocklist_path = __DIR__ . ' /disposable_email_blocklist.conf ' ;
$ disposable_domains = file ( $ blocklist_path , FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
$ domain = mb_strtolower ( explode ( ' @ ' , trim ( $ email ))[ 1 ]);
return in_array ( $ domain , $ disposable_domains );
}
Atau periksa paket Komposer https://github.com/elliotjreed/disposable-emails-filter-php.
disumbangkan oleh @pjebs
import ( "bufio" ; "os" ; "strings" ;)
var disposableList = make ( map [ string ] struct {}, 3500 )
func init () {
f , _ := os . Open ( "disposable_email_blocklist.conf" )
for scanner := bufio . NewScanner ( f ); scanner . Scan (); {
disposableList [ scanner . Text ()] = struct {}{}
}
f . Close ()
}
func isDisposableEmail ( email string ) ( disposable bool ) {
segs := strings . Split ( email , "@" )
_ , disposable = disposableList [ strings . ToLower ( segs [ len ( segs ) - 1 ])]
return
}
Atau periksa paket Go https://github.com/rocketlaunchr/anti-disposable-email.
disumbangkan oleh @MitsunChieh
Dalam model sumber daya, biasanya user.rb
:
before_validation :reject_email_blocklist
def reject_email_blocklist
blocklist = File . read ( 'config/disposable_email_blocklist.conf' ) . split ( " n " )
if blocklist . include? ( email . split ( '@' ) [ 1 ] )
errors [ :email ] << 'invalid email'
return false
else
return true
end
end
disumbangkan oleh @boywithkeyboard
import { readFile } from 'node:fs/promises'
let blocklist
async function isDisposable ( email ) {
if ( ! blocklist ) {
const content = await readFile ( 'disposable_email_blocklist.conf' , { encoding : 'utf-8' } )
blocklist = content . split ( 'rn' ) . slice ( 0 , - 1 )
}
return blocklist . includes ( email . split ( '@' ) [ 1 ] )
}
Atau periksa paket NPM https://github.com/mziyut/disposable-email-domains-js.
private static readonly Lazy < HashSet < string > > _emailBlockList = new Lazy < HashSet < string > > ( ( ) =>
{
var lines = File . ReadLines ( " disposable_email_blocklist.conf " )
. Where ( line => ! string . IsNullOrWhiteSpace ( line ) && ! line . TrimStart ( ) . StartsWith ( " // " ) ) ;
return new HashSet < string > ( lines , StringComparer . OrdinalIgnoreCase ) ;
} ) ;
private static bool IsBlocklisted ( string domain ) => _emailBlockList . Value . Contains ( domain ) ;
.. .
var addr = new MailAddress ( email ) ;
if ( IsBlocklisted ( addr . Host ) ) )
throw new ApplicationException ( " Email is blocklisted. " ) ;
#!/bin/bash
# This script checks if an email address is temporary.
# Read blocklist file into a bash array
mapfile -t blocklist < disposable_email_blocklist.conf
# Check if email domain is in blocklist
if [[ " ${blocklist[@]} " =~ " ${email#*@} " ]]; then
message="Please enter your permanent email address."
return_value=false
else
return_value=true
fi
# Return result
echo "$return_value"
Kode mengasumsikan bahwa Anda telah menambahkan sekali disposable_email_blocklist.conf
di samping kelas Anda sebagai sumber daya classpath.
private static final Set < String > DISPOSABLE_EMAIL_DOMAINS ;
static {
Set < String > domains = new HashSet <>();
try ( BufferedReader in = new BufferedReader (
new InputStreamReader (
EMailChecker . class . getResourceAsStream ( "disposable_email_blocklist.conf" ), StandardCharsets . UTF_8 ))) {
String line ;
while (( line = in . readLine ()) != null ) {
line = line . trim ();
if ( line . isEmpty ()) {
continue ;
}
domains . add ( line );
}
} catch ( IOException ex ) {
LOG . error ( "Failed to load list of disposable email domains." , ex );
}
DISPOSABLE_EMAIL_DOMAINS = domains ;
}
public static boolean isDisposable ( String email ) throws AddressException {
InternetAddress contact = new InternetAddress ( email );
return isDisposable ( contact );
}
public static boolean isDisposable ( InternetAddress contact ) throws AddressException {
String address = contact . getAddress ();
int domainSep = address . indexOf ( '@' );
String domain = ( domainSep >= 0 ) ? address . substring ( domainSep + 1 ) : address ;
return DISPOSABLE_EMAIL_DOMAINS . contains ( domain );
}
disumbangkan oleh @ 1998code
func checkBlockList ( email : String , completion : @escaping ( Bool ) -> Void ) {
let url = URL ( string : " https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf " ) !
let task = URLSession . shared . dataTask ( with : url ) { data , response , error in
if let data = data {
if let string = String ( data : data , encoding : . utf8 ) {
let lines = string . components ( separatedBy : " n " )
for line in lines {
if email . contains ( line ) {
completion ( true )
return
}
}
}
}
completion ( false )
}
task . resume ( )
}