-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathads.py
61 lines (53 loc) · 1.38 KB
/
ads.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from multiprocessing import Value
import ip2dns,re
import ipaddress
ips={}
domains={}
def init():
with open("data/ads.txt", "r") as f:
for l in f.readlines():
try:
ip,domain = l.split()
except:
print("Failed parsing from data/ads.txt: ",l)
continue
ip=ipaddress.ip_address(ip)
ips[int(ip)]="ad" # todo: ad/tracking/malware/???
domains[domain]="ad" # todo: ad/tracking/malware/???
# TODO: move
ip2dns.feed(ip,domain)
with open("data/ads_domainsonly.txt", "r") as f:
for domain in f.readlines():
domain=domain.strip()
if domain and " " not in domain:
domains[domain]="ad" # todo: ad/tracking/malware/???
def classifyIP(ip,check_domains=False):
isad = ips.get(int(ip))
if isad:
return isad
if check_domains:
domains = ip2dns.getByIp(ip)
if domains:
for domain in domains:
isad = classifyDomain(domain)
if isad:
return isad
names=ip2dns.getShortByIp(ip)
if names:
for domain in names:
isad = classifyDomain(domain)
if isad:
return isad
return False
def classifyDomain(domain):
assert not isinstance(domain, list),"supply a domain"
return domains.get(domain)
if __name__ == '__main__':
init()
for k,v in domains.items():
print("domains",k,v)
break
for k,v in ips.items():
print("ips",k,v)
break
print("get chartbeat",classifyDomain(ip2dns.getByIp(ipaddress.ip_address("174.129.218.62"))))