Last active
September 18, 2015 06:37
-
-
Save minhanhhere/91e57a9bc9b1f235b2d0 to your computer and use it in GitHub Desktop.
Goodbye Google
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Arrays; | |
import java.util.List; | |
public class IpRange { | |
//region BlackListIpRanges | |
public static final List<IpRange> blacklistIpRanges = Arrays.asList( | |
new IpRange("104.132.0.0 - 104.135.255.255"), | |
new IpRange("104.154.0.0 - 104.155.255.255"), | |
new IpRange("104.196.0.0 - 104.199.255.255"), | |
new IpRange("107.167.160.0 - 107.167.191.255"), | |
new IpRange("107.178.192.0 - 107.178.255.255"), | |
new IpRange("107.188.128.0 - 107.188.255.255"), | |
new IpRange("108.170.192.0 - 108.170.255.255"), | |
new IpRange("108.177.0.0 - 108.177.127.255"), | |
new IpRange("108.59.80.0 - 108.59.95.255"), | |
new IpRange("113.21.241.0 - 113.21.241.63"), | |
new IpRange("12.216.80.0 - 12.216.80.255"), | |
new IpRange("130.211.0.0 - 130.211.255.255"), | |
new IpRange("142.250.0.0 - 142.251.255.255"), | |
new IpRange("146.148.0.0 - 146.148.127.255"), | |
new IpRange("149.3.176.0 - 149.3.176.255"), | |
new IpRange("149.3.177.0 - 149.3.177.255"), | |
new IpRange("162.216.148.0 - 162.216.151.255"), | |
new IpRange("162.222.176.0 - 162.222.183.255"), | |
new IpRange("172.217.0.0 - 172.217.255.255"), | |
new IpRange("172.253.0.0 - 172.253.255.255"), | |
new IpRange("173.192.13.200 - 173.192.13.207"), | |
new IpRange("173.194.0.0 - 173.194.255.255"), | |
new IpRange("173.227.247.0 - 173.227.247.63"), | |
new IpRange("173.255.112.0 - 173.255.127.255"), | |
new IpRange("192.104.160.0 - 192.104.161.255"), | |
new IpRange("192.119.16.0 - 192.119.31.255"), | |
new IpRange("192.158.28.0 - 192.158.31.255"), | |
new IpRange("192.178.0.0 - 192.179.255.255"), | |
new IpRange("192.200.224.0 - 192.200.255.255"), | |
new IpRange("193.120.166.64 - 193.120.166.127"), | |
new IpRange("193.142.125.0 - 193.142.125.255"), | |
new IpRange("193.186.4.0 - 193.186.4.255"), | |
new IpRange("193.51.224.128 - 193.51.224.191"), | |
new IpRange("195.22.207.0 - 195.22.207.63"), | |
new IpRange("199.192.112.0 - 199.192.115.255"), | |
new IpRange("199.223.232.0 - 199.223.239.255"), | |
new IpRange("200.202.122.0 - 200.202.122.255"), | |
new IpRange("206.169.145.192 - 206.169.145.255"), | |
new IpRange("207.223.160.0 - 207.223.175.255"), | |
new IpRange("209.85.128.0 - 209.85.255.255"), | |
new IpRange("212.113.7.128 - 212.113.7.191"), | |
new IpRange("212.188.10.0 - 212.188.10.255"), | |
new IpRange("212.188.7.0 - 212.188.7.255"), | |
new IpRange("212.6.83.0 - 212.6.83.63"), | |
new IpRange("212.6.83.64 - 212.6.83.127"), | |
new IpRange("213.144.182.0 - 213.144.182.63"), | |
new IpRange("213.152.1.64 - 213.152.1.95"), | |
new IpRange("213.200.103.128 - 213.200.103.191"), | |
new IpRange("216.21.160.0 - 216.21.175.255"), | |
new IpRange("216.239.32.0 - 216.239.63.255"), | |
new IpRange("216.252.220.0 - 216.252.223.255"), | |
new IpRange("216.58.192.0 - 216.58.223.255"), | |
new IpRange("217.163.7.0 - 217.163.7.255"), | |
new IpRange("217.30.152.192 - 217.30.152.223"), | |
new IpRange("23.228.128.0 - 23.228.191.255"), | |
new IpRange("23.236.48.0 - 23.236.63.255"), | |
new IpRange("23.251.128.0 - 23.251.159.255"), | |
new IpRange("23.255.128.0 - 23.255.255.255"), | |
new IpRange("38.107.216.0 - 38.107.216.63"), | |
new IpRange("38.98.51.0 - 38.98.51.63"), | |
new IpRange("4.3.2.0 - 4.3.2.255"), | |
new IpRange("41.206.47.0 - 41.206.47.127"), | |
new IpRange("45.56.0.0 - 45.56.63.255"), | |
new IpRange("62.116.207.0 - 62.116.207.63"), | |
new IpRange("62.231.91.64 - 62.231.91.127"), | |
new IpRange("62.78.98.128 - 62.78.98.191"), | |
new IpRange("64.233.160.0 - 64.233.191.255"), | |
new IpRange("64.68.88.0 - 64.68.95.255"), | |
new IpRange("64.9.224.0 - 64.9.255.255"), | |
new IpRange("66.102.0.0 - 66.102.15.255"), | |
new IpRange("66.249.64.0 - 66.249.95.255"), | |
new IpRange("70.32.128.0 - 70.32.159.255"), | |
new IpRange("72.14.192.0 - 72.14.255.255"), | |
new IpRange("74.125.0.0 - 74.125.255.255"), | |
new IpRange("74.94.170.0 - 74.94.170.15"), | |
new IpRange("77.67.49.64 - 77.67.49.127"), | |
new IpRange("8.15.202.0 - 8.15.202.255"), | |
new IpRange("8.34.208.0 - 8.34.215.255"), | |
new IpRange("8.34.216.0 - 8.34.223.255"), | |
new IpRange("8.35.192.0 - 8.35.199.255"), | |
new IpRange("8.35.200.0 - 8.35.207.255"), | |
new IpRange("8.6.48.0 - 8.6.55.255"), | |
new IpRange("8.8.4.0 - 8.8.4.255"), | |
new IpRange("8.8.8.0 - 8.8.8.255"), | |
new IpRange("80.149.20.0 - 80.149.20.63"), | |
new IpRange("80.149.20.64 - 80.149.20.127"), | |
new IpRange("80.227.152.32 - 80.227.152.39"), | |
new IpRange("80.228.66.128 - 80.228.66.255"), | |
new IpRange("80.239.142.192 - 80.239.142.255"), | |
new IpRange("80.239.174.64 - 80.239.174.127"), | |
new IpRange("80.239.229.192 - 80.239.229.255"), | |
new IpRange("86.127.118.128 - 86.127.118.191"), | |
new IpRange("88.204.177.192 - 88.204.177.255"), | |
new IpRange("89.207.224.0 - 89.207.231.255"), | |
new IpRange("90.84.58.0 - 90.84.58.63"), | |
new IpRange("92.241.132.64 - 92.241.132.127"), | |
new IpRange("95.80.231.0 - 95.80.231.63"), | |
new IpRange("99.198.128.0 - 99.198.255.255") | |
); | |
//endregion | |
long begin; | |
long end; | |
public IpRange(String input) { | |
//input format: "x.x.x.x - x.x.x.x" | |
String[] split = input.split("-"); | |
begin = ipToLong(split[0].trim()); | |
end = ipToLong(split[1].trim()); | |
} | |
public boolean contains(long ipLong) { | |
return (begin <= ipLong && ipLong <= end); | |
} | |
public boolean contains(String ip) { | |
long ipLong = ipToLong(ip); | |
return contains(ipLong); | |
} | |
public static long ipToLong(String ipAddress) { | |
long result = 0; | |
String[] ipAddressInArray = ipAddress.split("\\."); | |
for (int i = 3; i >= 0; i--) { | |
long ip = Long.parseLong(ipAddressInArray[3 - i]); | |
// left shifting 24,16,8,0 and bitwise OR | |
// 1. 192 << 24 | |
// 1. 168 << 16 | |
// 1. 1 << 8 | |
// 1. 2 << 0 | |
result |= ip << (i * 8); | |
} | |
return result; | |
} | |
public static String longToIp(long i) { | |
return ((i >> 24) & 0xFF) + | |
"." + ((i >> 16) & 0xFF) + | |
"." + ((i >> 8) & 0xFF) + | |
"." + (i & 0xFF); | |
} | |
public static boolean isBlackList(String ipAddress) { | |
long ipLong = ipToLong(ipAddress); | |
for (IpRange blackRange : blacklistIpRanges) { | |
if (blackRange.contains(ipLong)) { | |
return true; | |
} | |
} | |
return false; | |
} | |
@Override | |
public String toString() { | |
return String.format("%s - %s", longToIp(begin), longToIp(end)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage: