-
-
Save tuanchauict/5331ed56ad9a93aa0285 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 beginL; | |
long endL; | |
String begin; | |
String end; | |
public IpRange(String input) { | |
//input format: "x.x.x.x - x.x.x.x" | |
String[] split = input.split("-"); | |
begin = split[0].trim(); | |
end = split[1].trim(); | |
} | |
public IpRange(String begin, String end) { | |
this.begin = begin; | |
this.end = end; | |
} | |
public boolean contains(long ipLong) { | |
return (getBeginL() <= ipLong && ipLong <= getEndL()); | |
} | |
public boolean contains(String ip) { | |
long ipLong = ipToLong(ip); | |
return contains(ipLong); | |
} | |
long getBeginL() { | |
if (beginL == 0) { | |
beginL = ipToLong(begin); | |
} | |
return beginL; | |
} | |
long getEndL() { | |
if (endL == 0) { | |
endL = ipToLong(end); | |
} | |
return endL; | |
} | |
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 boolean isBlackList(String ipAddress) { | |
long ipLong = ipToLong(ipAddress); | |
for (IpRange blackRange : blacklistIpRanges) { | |
if (blackRange.contains(ipLong)) { | |
return true; | |
} | |
} | |
return false; | |
} | |
} |
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 org.junit.Test; | |
public class TestIpRange{ | |
@Test | |
public void testIpToLong(){ | |
assert IpRange.ipToLong("0.0.0.0") == 0; | |
assert IpRange.ipToLong("0.0.0.1") == 1; | |
assert IpRange.ipToLong("0.0.1.0") == 256; | |
assert IpRange.ipToLong("0.0.1.1") == 257; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment