最後活躍 10 months ago

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

timmy 已修改 10 months ago. 還原成這個修訂版本

沒有任何變更

timmy 已修改 11 months ago. 還原成這個修訂版本

沒有任何變更

timmy 已修改 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 +
上一頁 下一頁