@@ -153,60 +153,77 @@ async def main_async(
153153 await f .write (result_domain + "\n " )
154154 continue
155155
156- # 为了保险,再检查下时间是否是过期的。
157- # 检查“是否为赎回期”可能有缺漏,但是可以明确的是赎回期的特征:有域名过期时间但是时间过期了
158-
159- # 查询时间
160- match parsed_whois_data ["registry_expiry_date" ]:
161- case Err (datetime_paser_error ):
162- # 时间解析失败
163- if datetime_paser_error ["msg" ] == "Error Parsing Date" :
164- info (
165- f"{ INFO_ERROR_PARSING_DATE } err:{ datetime_paser_error ['err' ]} raw:{ datetime_paser_error ['raw' ]} " .format (
166- domain = result_domain
156+ STRICT_MODE : bool = True
157+
158+ def is_pass_strict_mode (domain : str ) -> bool :
159+ """有些域名不提供域名信息,所以无法进行严格检查。检查这个域名是否允许跳过检查。
160+
161+ Args:
162+ domain (str): 干净的域名如 a.li
163+
164+ Returns:
165+ bool: 可跳过返回 True,不可跳过返回 False
166+ """
167+ # 有些域名不提供域名信息,所以无法进行严格检查
168+ if domain .endswith (".li" ) or domain .endswith (".ch" ):
169+ return True
170+ return False
171+
172+ if STRICT_MODE and not is_pass_strict_mode (domain = result_domain ):
173+ # 严格检查
174+ # 为了保险,再检查下时间是否是过期的。
175+ # 检查“是否为赎回期”可能有缺漏,但是可以明确的是赎回期的特征:有域名过期时间但是时间过期了
176+ # 查询时间
177+ match parsed_whois_data ["registry_expiry_date" ]:
178+ case Err (datetime_paser_error ):
179+ # 时间解析失败
180+ if datetime_paser_error ["msg" ] == "Error Parsing Date" :
181+ info (
182+ f"{ INFO_ERROR_PARSING_DATE } err:{ datetime_paser_error ['err' ]} raw:{ datetime_paser_error ['raw' ]} " .format (
183+ domain = result_domain
184+ )
167185 )
168- )
169- elif datetime_paser_error [ "msg" ] == "Date not found" :
170- info (
171- f" { INFO_DATE_NOT_FOUND } raw: { datetime_paser_error [ 'raw' ] } " . format (
172- domain = result_domain
186+ elif datetime_paser_error [ "msg" ] == "Date not found" :
187+ info (
188+ f" { INFO_DATE_NOT_FOUND } raw: { datetime_paser_error [ 'raw' ] } " . format (
189+ domain = result_domain
190+ )
173191 )
174- )
175- else :
176- raise ValueError ("Invaid Data" ) # 不可能的路径
177-
178- # 解析失败的写入 error.txt 文件
179- if error_file is not None :
180- async with aiofiles .open (error_file , "a" , encoding = "utf-8" ) as f :
192+ else :
193+ raise ValueError ("Invaid Data" ) # 不可能的路径
194+
195+ # 解析失败的写入 error.txt 文件
196+ if error_file is not None :
197+ async with aiofiles .open (error_file , "a" , encoding = "utf-8" ) as f :
198+ await f .write (result_domain + "\n " )
199+ continue
200+ case Ok (expired_date ):
201+ pass
202+ case _:
203+ exit (- 1 )
204+
205+ # 计算查到的时间是否过期
206+ is_expired_result : Result [bool , Exception ] = is_datetime_expired (expired_date )
207+ match is_expired_result :
208+ case Err (e ):
209+ # 在检查时间是否过期的时候出现错误
210+ info (f"{ INFO_CHECKING_DATE_EXPIRED } { e } " .format (domain = result_domain ))
211+ # 解析失败的写入 error.txt 文件
212+ if error_file is not None :
213+ async with aiofiles .open (error_file , "a" , encoding = "utf-8" ) as f :
214+ await f .write (result_domain + "\n " )
215+ continue
216+ case Ok (is_expired ):
217+ pass
218+
219+ # 判断是否过期
220+ if is_expired :
221+ info (INFO_EXPIRED .format (domain = result_domain ))
222+ # 已过期的写入 output.txt 文件
223+ if output_file is not None :
224+ async with aiofiles .open (output_file , "a" , encoding = "utf-8" ) as f :
181225 await f .write (result_domain + "\n " )
182226 continue
183- case Ok (expired_date ):
184- pass
185- case _:
186- exit (- 1 )
187-
188- # 计算查到的时间是否过期
189- is_expired_result : Result [bool , Exception ] = is_datetime_expired (expired_date )
190- match is_expired_result :
191- case Err (e ):
192- # 在检查时间是否过期的时候出现错误
193- info (f"{ INFO_CHECKING_DATE_EXPIRED } { e } " .format (domain = result_domain ))
194- # 解析失败的写入 error.txt 文件
195- if error_file is not None :
196- async with aiofiles .open (error_file , "a" , encoding = "utf-8" ) as f :
197- await f .write (result_domain + "\n " )
198- continue
199- case Ok (is_expired ):
200- pass
201-
202- # 判断是否过期
203- if is_expired :
204- info (INFO_EXPIRED .format (domain = result_domain ))
205- # 已过期的写入 output.txt 文件
206- if output_file is not None :
207- async with aiofiles .open (output_file , "a" , encoding = "utf-8" ) as f :
208- await f .write (result_domain + "\n " )
209- continue
210227
211228 # 输出未过期的
212229 info (INFO_NOT_EXPIRED .format (domain = result_domain ))
0 commit comments