2008-11-25 チャンプルとは炒めるという意味だったか
■[python] スパムチャンプル python 
python で 上記を利用するソース・・・というよりは、
Life with IT さんの ruby 版をまんま移植。
import socket import re def CheckSpamIP(check_ip = False): # スパムIPアドレス spam_ip = "127.0.0.2" # IPアドレスが不当な場合はスパムとみなす # (単純にXXX.XXX.XXX.XXXかどうかだけチェック) if not re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}").match(check_ip): return True # IPアドレス逆順並べ替え(AAA.BBB.CCC.DDD -> DDD.CCC.BBB.AAA) ip_rev = ".".join(reversed(check_ip.split("."))) # 検索ドメイン生成 host = "%s.dnsbl.spam-champuru.livedoor.com" % ip_rev # ドメイン正引き try: ip = socket.gethostbyname(host) except: # 正引き失敗時はスパム元IPアドレス以外と判断 return False # 正引き後アドレス判定 if ip == spam_ip: # スパム return True else: # スパム以外 return False
これでいいと思うけどどうかな。
# test iplist = [ "192.0.2.1", # スパム判定用 "59.106.108.86", # www.hatena.ne.jp "203.131.197.197", # www.livedoor.com "1.2.3", # IPアドレス不正 "", # IPアドレス不正 ] for ip in iplist: ret = CheckSpamIP(ip) print "%(ip)s -> %(ret)s" % locals()
1.2.3.4 isn't spam.
192.0.2.1 -> True
59.106.108.86 -> False
203.131.197.197 -> False
1.2.3 -> True
-> True
コメント