def is_in_china(self, str_ip):
'''binary search'''
try:
ip = struct.unpack('>I', socket.inet_aton(str_ip))[0]
except socket.error:
return False
i = 0
j = len(self.china_subs) - 1
while (i <= j):
k = (i + j) // 2
if ip > self.china_subs[k][1]:
i = k + 1
elif ip < self.china_subs[k][0]:
j = k - 1
else:
return True
return False
评论列表
文章目录