package Ġcom . lag rad ost . cloud stream 3 . network Ċ Ċ import Ġandroidx . annotation . Any Thread Ċ import Ġcom . lag rad ost . cloud stream 3 . USER _ AGENT Ċ import Ġcom . lag rad ost . cloud stream 3 . app Ċ import Ġcom . lag rad ost . nice http . Requests . Companion . await Ċ import Ġcom . lag rad ost . nice http . getC ookies Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . Headers . Companion . to Headers Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ Ċ /** Ċ Ġ* Ġ@ param Ġalways By pass Ġwill Ġpre - empt ively Ġfetch Ġd dos Ġguard Ġcookies Ġif Ġtrue . Ċ Ġ* ĠIf Ġfalse Ġit Ġwill Ġonly Ġtry Ġto Ġget Ġcookies Ġwhen Ġa Ġrequest Ġreturns Ġ 4 0 3 Ċ Ġ* Ġ*/ Ċ // ĠAs Ġseen Ġin Ġhttps :// github . com / anime - dl / anime - downloader / blob / master / anime _ downloader / sites / er air aws . py Ċ @ Any Thread Ċ class ĠD dos Guard K iller ( private Ġval Ġalways By pass : ĠBoolean ) Ġ: ĠInter ceptor Ġ{ ĊĠĠĠ Ġval Ġsaved Cookies Map Ġ= Ġmutable Map Of < String , ĠMap < String , ĠString >>() ĊĊĠĠĠ Ġprivate Ġvar Ġd dos By pass Path : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠ Ġif Ġ( always By pass ) Ġreturn @ run Blocking Ġbypass D dos Guard ( request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġreturn @ run Blocking Ġif Ġ( response . code Ġ== Ġ 4 0 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbypass D dos Guard ( request ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġbypass D dos Guard ( request : ĠRequest ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġd dos By pass Path Ġ= Ġd dos By pass Path Ġ?: ĠRegex ("' (.* ? )' "). find ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// check . dd os - guard . net / check . js " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). text ĊĠĠĠĠĠĠĠ Ġ) ?. group Values ?. get ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcookies Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved Cookies Map [ request . url . host ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġno Ġcookies Ġare Ġfound Ġfetch Ġand Ġsave Ġem . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ( request . url . scheme Ġ+ Ġ" ://" Ġ+ Ġrequest . url . host Ġ+ Ġ( dd os By pass Path Ġ?: Ġ" ")). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . get ( it , Ġcache Time Ġ= Ġ 0 ). cookies . also Ġ{ Ġcookies Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved Cookies Map [ request . url . host ] Ġ= Ġcookies ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġget Headers ( request . headers . toMap (), Ġcookies Ġ+ Ġrequest . cookies ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapp . base Client . new Call ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( headers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠ Ġ} Ċ }