-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathip.py
106 lines (89 loc) · 3.84 KB
/
ip.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Author : BetaCodings
# Author : [email protected]
# Maintainer By: Emmanuel Martins
# Maintainer Email: [email protected]
# Created by BetaCodings on 07/12/2019.
import os
from . import Version
if Version.PYVERSION_MA < 3 and Version.PYVERSION_MI <= 7:
from urllib2 import urlopen
else:
from urllib.request import urlopen
import json
class ip():
def __init__(self):
self.HTTP_headers = ['SERVER_ADDR',
'REMOTE_ADDR',
'HTTP_CLIENT_IP'
]
self.HTTP_proxy_header = ['HTTP_VIA',
'VIA',
'Proxy-Connection',
'HTTP_X_FORWARDED_FOR',
'HTTP_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED',
'HTTP_CLIENT_IP',
'HTTP_FORWARDED_FOR_IP',
'X-PROXY-ID',
'MT-PROXY-ID',
'X-TINYPROXY',
'X_FORWARDED_FOR',
'FORWARDED_FOR',
'X_FORWARDED',
'FORWARDED',
'CLIENT-IP',
'CLIENT_IP',
'PROXY-AGENT',
'HTTP_X_CLUSTER_CLIENT_IP',
'FORWARDED_FOR_IP',
'HTTP_PROXY_CONNECTION'
]
self.ips = ['127.0.0.0', '127.0.0.1', '127.0.0.2', '192.0.0.0', '192.0.0.1', '192.168.0.0',
'192.168.0.1', '192.168.0.253', '192.168.0.254', '192.168.0.255', '192.168.1.0',
'192.168.1.1', '192.168.1.253', '192.168.1.254', '192.168.1.255', '192.168.2.0',
'192.168.2.1', '192.168.2.253', '192.168.2.254', '192.168.2.255', '10.0.0.0', '10.0.0.1',
'11.0.0.0', '11.0.0.1', '1.0.0.0', '1.0.1.0', '1.1.1.1', '255.0.0.0', '255.0.0.1',
'255.255.255.0', '255.255.255.254', '255.255.255.255', '0.0.0.0', '::', '0::', '::1',
'0:0:0:0:0:0:0:0']
self.ip = ""
self.hostname = ""
self.city = ""
self.region = ""
self.country = ""
self.loc = ""
self.org = ""
self.is_vpn = False
return None
def get(self):
for header in self.HTTP_headers:
if self.os(header) is not "":
self.ip = '127.0.0.0' if self.os(header) in self.ips else self.os(header)
self.property(self.ip)
return self
def os(self, header):
return os.environ.get(header, '')
def check(self, ip):
for header in self.HTTP_proxy_header:
response = True if self.os(header) is not "" else False
return response
def vpn(self):
for header in self.HTTP_proxy_header:
if self.os(header) is not "":
self.ip = self.os(header)
self.is_vpn = self.check(self, self.ip)
self.property(self.ip)
return self
def property(self, ip):
ipU= "http://ipinfo.io/{ip}/json".format(ip=ip)
url_ip = urlopen(ipU).read()
response = url_ip.decode('utf-8')
j_response = json.loads(response)
if j_response.get("bogon", "") == "":
self.hostname = j_response.get("hostname", "")
self.city = j_response.get("city", "")
self.region = j_response.get("region", "")
self.country = j_response.get("country", "")
self.loc = j_response.get("loc", "")
self.org = j_response.get("org", "")
return self