最后活跃于 10 months ago

這段程式碼是一個 DNSBLChecker 工具,用於檢查指定的 IP 是否被列入常見的 DNS 黑名單(DNSBL)。支持動態添加或移除 DNSBL 提供者,並顯示檢查結果,包括列入的黑名單列表。

timmy 修订了这个 Gist 10 months ago. 转到此修订

没有任何变更

timmy 修订了这个 Gist 11 months ago. 转到此修订

没有任何变更

timmy 修订了这个 Gist 1 year ago. 转到此修订

1 file changed, 85 insertions

dnsbl_checker.py(文件已创建)

@@ -0,0 +1,85 @@
1 + import dns.resolver
2 +
3 + class DNSBLChecker:
4 + def __init__(self, providers=None):
5 + """
6 + 初始化 DNSBLChecker,允許自定義 DNSBL 提供者列表。
7 + :param providers: DNSBL 提供者列表 (可選,默認為常用黑名單提供者)
8 + """
9 + self.providers = providers or [
10 + "zen.spamhaus.org",
11 + "bl.spamcop.net",
12 + "dnsbl.sorbs.net",
13 + "b.barracudacentral.org"
14 + ]
15 +
16 + def add_provider(self, provider):
17 + """
18 + 新增一個 DNSBL 提供者。
19 + :param provider: 提供者的域名,例如 "new.blacklist.com"
20 + """
21 + if provider not in self.providers:
22 + self.providers.append(provider)
23 + print(f"已新增提供者:{provider}")
24 + else:
25 + print(f"提供者 {provider} 已存在。")
26 +
27 + def remove_provider(self, provider):
28 + """
29 + 移除一個 DNSBL 提供者。
30 + :param provider: 提供者的域名
31 + """
32 + if provider in self.providers:
33 + self.providers.remove(provider)
34 + print(f"已移除提供者:{provider}")
35 + else:
36 + print(f"提供者 {provider} 不在列表中。")
37 +
38 + def check_ip(self, ip_address):
39 + """
40 + 檢查 IP 是否被列入任何 DNSBL 提供者的黑名單中。
41 + :param ip_address: 要檢查的 IP 地址
42 + """
43 + reversed_ip = ".".join(reversed(ip_address.split(".")))
44 + blacklisted_by = []
45 +
46 + for provider in self.providers:
47 + query = f"{reversed_ip}.{provider}"
48 + try:
49 + # 嘗試解析 DNS 查詢
50 + dns.resolver.resolve(query, "A")
51 + blacklisted_by.append(provider)
52 + except dns.resolver.NXDOMAIN:
53 + # 未列入該提供者黑名單
54 + continue
55 + except Exception as e:
56 + print(f"檢查 {provider} 時發生錯誤:{e}")
57 +
58 + return blacklisted_by
59 +
60 + def display_result(self, ip_address):
61 + """
62 + 顯示檢查結果。
63 + :param ip_address: 要檢查的 IP 地址
64 + """
65 + blacklisted_by = self.check_ip(ip_address)
66 + if blacklisted_by:
67 + print(f"IP 地址 {ip_address} 被列入以下黑名單:")
68 + for provider in blacklisted_by:
69 + print(f"- {provider}")
70 + else:
71 + print(f"IP 地址 {ip_address} 未被列入任何黑名單。")
72 +
73 +
74 + if __name__ == "__main__":
75 + # 初始化 DNSBL 檢查器
76 + dnsbl_checker = DNSBLChecker()
77 +
78 + # 檢查 IP
79 + ip_to_check = "210.242.157.193" # 替換成你的郵件伺服器 IP 地址
80 + dnsbl_checker.display_result(ip_to_check)
81 +
82 + # 動態操作提供者列表
83 + dnsbl_checker.add_provider("new.blacklist.com")
84 + dnsbl_checker.remove_provider("bl.spamcop.net")
85 +
上一页 下一页