├── !ptools.bat ├── .gitignore ├── README.md ├── checkip.bat ├── dig.bat ├── googleip.txt ├── ip_range_origin.txt └── python ├── cacert.pem ├── checkip.md ├── checkip.py ├── generate_ip_range_bad.bat ├── generate_ip_range_bad.py ├── ip_bad.txt ├── ip_range_bad.txt ├── iptools.py ├── pydig.md ├── pydig.py ├── python27.dll ├── python27.exe └── python27.zip /!ptools.bat: -------------------------------------------------------------------------------- 1 | @echo off & title checkiptools 2 | cd /d %~dp0 3 | :do 4 | "%~dp0python/python27.exe" "%~dp0python/iptools.py" 5 | pause 6 | call :do -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ip.txt 2 | ip_output.txt 3 | googleip-* 4 | *tmp* 5 | dig_* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | CheckIpTools 2 | ============ 3 | 4 | 集成 checkgoogleip,python(带netaddr),以及一些实用的小工具。源代码取自 [checkgoogleip](https://github.com/moonshawdo/checkgoogleip)、[XX-Net](https://github.com/XX-net/XX-Net)、双手码出,感谢大家的辛勤付出! 5 | 6 | 在 [checkgoogleip](https://github.com/moonshawdo/checkgoogleip) 原有基础上增加逐个扫描googleip-001.txt、googleip-002.txt...以控制内存,并将扫描结果保存到tmp文件夹,扫描完成后自动删除googleip文件。若无googleip-001.txt命名规则的文件则扫描 googleip.txt。 7 | 8 | ## 下载地址 9 | * Windows:[CheckIpTools](https://github.com/xyuanmu/checkiptools/archive/master.zip) 10 | * Linux:[CheckIpTools For Linux](https://github.com/xyuanmu/checkiptools/archive/Linux.zip) 11 | 12 | 13 | ## 目录文件说明: 14 | | 文件 | 详细信息 | 15 | | ---- | -------- | 16 | | !ptools.bat | 转换IP小工具,输入相应编号进行操作 | 17 | | checkip.bat | 用于扫描谷歌IP工具的工具,提取自[checkgoogleip](https://github.com/moonshawdo/checkgoogleip),[详细使用说明](https://github.com/xyuanmu/checkiptools/blob/master/python/checkip.md) | 18 | | dig.bat | pydig 小工具,用于查找谷歌IP(GGC),[详细使用说明](https://github.com/xyuanmu/checkiptools/blob/master/python/pydig.md) | 19 | | googleip.txt | 整合后的IP段,可用于 [XX-Net](https://github.com/XX-net/XX-Net) 或者 GoGo Tester(记得保存IP段格式为 x.x.x.x/xx 并改名.ip结尾) | 20 | | ip_range_bad.txt | 包含IP段黑名单的文件,支持 checkgoogleip IP组格式,支持 # 注释,已移到 python 目录 | 21 | | ip_bad_csm.txt | 用户自定义IP段黑名单,新建一份文件即可 | 22 | | ip_range_origin.txt | 包含原始IP段的文件,支持 checkgoogleip IP组格式,支持 # 注释,**以后只需将新IP段添加进来用 !ptools.bat 转换即可** | 23 | 24 | ## 工具预览: 25 | ![checkiptools](https://cloud.githubusercontent.com/assets/12442896/13596701/0280b8da-e54f-11e5-93c1-4dacc70ca4ae.png) 26 | -------------------------------------------------------------------------------- /checkip.bat: -------------------------------------------------------------------------------- 1 | @cd /d %~dp0 2 | @"%~dp0python/python27.exe" "%~dp0python/checkip.py" 3 | @pause -------------------------------------------------------------------------------- /dig.bat: -------------------------------------------------------------------------------- 1 | @echo off & title pydig 2 | cd /d %~dp0 3 | :do 4 | "%~dp0python/python27.exe" "%~dp0python/pydig.py" 5 | pause 6 | call :do -------------------------------------------------------------------------------- /googleip.txt: -------------------------------------------------------------------------------- 1 | 1.9.22.0-1.9.22.255 2 | 1.9.24.0-1.9.24.255 3 | 1.9.57.0-1.9.57.255 4 | 1.9.131.0-1.9.131.255 5 | 1.179.248.0-1.179.253.255 6 | 1.255.22.0-1.255.22.255 7 | 1.255.33.0-1.255.33.255 8 | 2.127.237.0-2.127.237.255 9 | 2.127.251.0-2.127.252.255 10 | 4.31.38.0-4.31.38.255 11 | 4.31.115.0-4.31.115.255 12 | 4.34.16.0-4.34.16.255 13 | 4.35.2.0-4.35.2.255 14 | 4.35.21.0-4.35.21.255 15 | 4.35.108.0-4.35.108.255 16 | 4.35.153.0-4.35.153.255 17 | 4.53.36.0-4.53.36.255 18 | 4.53.56.0-4.53.56.255 19 | 4.53.79.0-4.53.79.255 20 | 4.53.166.0-4.53.166.255 21 | 4.53.202.0-4.53.202.255 22 | 4.59.40.0-4.59.40.255 23 | 4.59.67.0-4.59.67.255 24 | 4.59.90.0-4.59.90.255 25 | 5.20.5.0-5.20.5.255 26 | 5.22.190.0-5.22.190.255 27 | 5.102.167.0-5.102.167.255 28 | 5.102.252.0-5.102.252.255 29 | 5.157.98.0-5.157.98.255 30 | 5.226.127.0-5.226.127.255 31 | 8.35.80.0-8.35.80.255 32 | 23.228.129.0-23.228.129.255 33 | 23.236.5.0-23.236.5.255 34 | 24.35.3.0-24.35.3.255 35 | 24.41.214.0-24.41.214.255 36 | 24.48.248.0-24.48.248.255 37 | 24.53.238.0-24.53.238.255 38 | 24.100.187.0-24.100.187.255 39 | 24.116.134.0-24.116.134.255 40 | 24.139.135.0-24.139.135.255 41 | 24.149.5.0-24.149.5.255 42 | 24.155.92.0-24.155.92.255 43 | 24.156.131.0-24.156.131.255 44 | 24.156.153.0-24.156.153.255 45 | 24.214.95.0-24.214.95.255 46 | 24.220.112.0-24.220.112.255 47 | 24.225.16.0-24.225.16.255 48 | 24.226.15.0-24.226.16.255 49 | 24.244.4.0-24.244.4.255 50 | 24.244.19.0-24.244.19.255 51 | 24.244.152.0-24.244.152.255 52 | 27.80.250.0-27.80.250.255 53 | 27.90.140.0-27.90.143.255 54 | 27.90.189.0-27.90.189.255 55 | 27.100.64.0-27.100.64.255 56 | 27.106.94.0-27.106.94.255 57 | 27.121.46.0-27.121.46.255 58 | 27.121.51.0-27.121.51.255 59 | 27.121.54.0-27.121.54.255 60 | 27.123.17.0-27.123.17.255 61 | 27.123.212.0-27.123.212.255 62 | 27.131.16.0-27.131.16.255 63 | 31.7.160.0-31.7.160.255 64 | 31.24.56.0-31.24.56.255 65 | 31.31.48.0-31.31.48.255 66 | 31.46.5.0-31.46.5.255 67 | 31.46.22.0-31.46.22.255 68 | 31.55.162.0-31.55.163.255 69 | 31.55.166.0-31.55.167.255 70 | 31.55.184.0-31.55.184.255 71 | 31.172.32.0-31.172.32.255 72 | 31.209.137.0-31.209.137.255 73 | 31.210.208.0-31.210.208.255 74 | 31.211.248.0-31.211.248.255 75 | 36.37.218.0-36.37.218.255 76 | 36.68.81.0-36.68.81.255 77 | 36.68.95.0-36.68.95.255 78 | 36.68.97.0-36.68.98.255 79 | 36.68.102.0-36.68.102.255 80 | 36.68.110.0-36.68.111.255 81 | 36.68.115.0-36.68.115.255 82 | 36.68.122.0-36.68.122.255 83 | 36.68.127.0-36.68.127.255 84 | 36.75.19.0-36.75.20.255 85 | 36.75.24.0-36.75.25.255 86 | 36.75.31.0-36.75.31.255 87 | 36.75.56.0-36.75.56.255 88 | 36.75.98.0-36.75.98.255 89 | 36.76.161.0-36.76.161.255 90 | 36.76.168.0-36.76.169.255 91 | 36.76.171.0-36.76.171.255 92 | 36.82.34.0-36.82.34.255 93 | 36.82.42.0-36.82.42.255 94 | 36.82.44.0-36.82.44.255 95 | 36.82.47.0-36.82.47.255 96 | 36.82.232.0-36.82.232.255 97 | 36.82.238.0-36.82.238.255 98 | 36.83.12.0-36.83.12.255 99 | 36.83.17.0-36.83.17.255 100 | 36.83.26.0-36.83.26.255 101 | 36.85.116.0-36.85.116.255 102 | 36.85.119.0-36.85.119.255 103 | 36.85.227.0-36.85.227.255 104 | 37.8.144.0-37.8.144.255 105 | 37.29.1.0-37.29.1.255 106 | 37.58.167.0-37.58.167.255 107 | 37.139.254.0-37.139.254.255 108 | 37.157.151.0-37.157.151.255 109 | 37.228.69.0-37.228.69.255 110 | 38.68.16.0-38.68.16.255 111 | 40.133.6.0-40.133.6.255 112 | 40.136.3.0-40.136.3.255 113 | 41.71.136.0-41.71.136.255 114 | 41.74.24.0-41.74.24.255 115 | 41.77.223.0-41.77.223.255 116 | 41.78.62.0-41.78.62.255 117 | 41.84.159.0-41.84.159.255 118 | 41.84.195.0-41.84.195.255 119 | 41.87.140.0-41.87.140.255 120 | 41.128.200.0-41.128.200.255 121 | 41.160.35.0-41.160.35.255 122 | 41.184.60.0-41.184.60.255 123 | 41.187.111.0-41.187.111.255 124 | 41.188.12.0-41.188.12.255 125 | 41.189.63.0-41.189.63.255 126 | 41.189.230.0-41.189.230.255 127 | 41.191.219.0-41.191.219.255 128 | 41.201.128.0-41.201.129.255 129 | 41.201.164.0-41.201.164.255 130 | 41.205.32.0-41.205.32.255 131 | 41.206.47.0-41.206.47.255 132 | 41.206.64.0-41.206.64.255 133 | 41.206.96.0-41.206.96.255 134 | 41.214.4.0-41.214.4.255 135 | 41.219.127.0-41.219.127.255 136 | 41.220.75.0-41.220.75.255 137 | 41.221.166.0-41.221.166.255 138 | 41.221.196.0-41.221.196.255 139 | 41.223.219.0-41.223.219.255 140 | 41.254.36.0-41.254.36.255 141 | 42.112.8.0-42.112.10.255 142 | 42.119.211.0-42.119.211.255 143 | 43.230.130.0-43.230.130.255 144 | 43.240.231.0-43.240.231.255 145 | 43.245.144.0-43.245.144.255 146 | 43.245.193.0-43.245.193.255 147 | 43.245.201.0-43.245.201.255 148 | 45.56.65.0-45.56.65.255 149 | 45.56.121.0-45.56.121.255 150 | 45.56.123.0-45.56.123.255 151 | 45.64.20.0-45.64.20.255 152 | 45.64.29.0-45.64.31.255 153 | 45.64.34.0-45.64.34.255 154 | 45.64.253.0-45.64.253.255 155 | 45.116.219.0-45.116.219.255 156 | 45.120.85.0-45.120.85.255 157 | 46.16.9.0-46.16.9.255 158 | 46.21.52.0-46.21.52.255 159 | 46.29.169.0-46.29.169.255 160 | 46.61.155.0-46.61.155.255 161 | 46.108.1.0-46.108.1.255 162 | 46.149.88.0-46.149.88.255 163 | 46.227.113.0-46.227.113.255 164 | 46.229.224.0-46.229.224.255 165 | 46.236.127.0-46.236.127.255 166 | 46.237.127.0-46.237.127.255 167 | 46.238.143.0-46.238.143.255 168 | 46.249.95.0-46.249.95.255 169 | 46.249.159.0-46.249.159.255 170 | 46.249.239.0-46.249.239.255 171 | 49.98.24.0-49.98.25.255 172 | 49.98.35.0-49.98.35.255 173 | 49.106.234.0-49.106.234.255 174 | 49.231.56.0-49.231.56.255 175 | 49.231.58.0-49.231.58.255 176 | 49.231.60.0-49.231.60.255 177 | 49.243.141.0-49.243.141.255 178 | 50.0.2.0-50.0.2.255 179 | 50.22.229.0-50.22.229.255 180 | 50.27.150.0-50.27.150.255 181 | 50.86.10.0-50.86.10.255 182 | 54.204.39.0-54.204.39.255 183 | 58.27.27.0-58.27.27.255 184 | 58.27.61.0-58.27.61.255 185 | 58.27.108.0-58.27.109.255 186 | 58.69.77.0-58.69.77.255 187 | 58.123.102.0-58.123.102.255 188 | 58.123.220.0-58.123.220.255 189 | 58.145.238.0-58.145.238.255 190 | 58.162.16.0-58.162.16.255 191 | 58.162.62.0-58.162.62.255 192 | 58.176.217.0-58.176.217.255 193 | 59.18.34.0-59.18.35.255 194 | 59.18.44.0-59.18.46.255 195 | 59.18.49.0-59.18.49.255 196 | 59.190.145.0-59.190.145.255 197 | 60.199.175.0-60.199.175.255 198 | 61.7.18.0-61.7.18.255 199 | 61.19.1.0-61.19.2.255 200 | 61.33.130.0-61.33.130.255 201 | 61.36.166.0-61.36.166.255 202 | 61.37.150.0-61.37.150.255 203 | 61.41.59.0-61.41.59.255 204 | 61.47.115.0-61.47.115.255 205 | 61.86.203.0-61.86.203.255 206 | 61.91.8.0-61.91.9.255 207 | 61.91.18.0-61.91.18.255 208 | 61.91.161.0-61.91.161.255 209 | 61.94.86.0-61.94.86.255 210 | 61.114.99.0-61.114.99.255 211 | 61.122.213.0-61.122.213.255 212 | 61.205.127.0-61.205.127.255 213 | 61.219.131.0-61.219.131.255 214 | 61.238.203.0-61.238.203.255 215 | 61.238.239.0-61.238.239.255 216 | 61.245.3.0-61.245.3.255 217 | 62.1.38.0-62.1.38.255 218 | 62.8.95.0-62.8.95.255 219 | 62.24.155.0-62.24.155.255 220 | 62.24.158.0-62.24.158.255 221 | 62.65.192.0-62.65.192.255 222 | 62.75.10.0-62.75.10.255 223 | 62.78.98.0-62.78.98.255 224 | 62.84.6.0-62.84.6.255 225 | 62.94.9.0-62.94.9.255 226 | 62.101.158.0-62.101.158.255 227 | 62.117.4.0-62.117.4.255 228 | 62.119.230.0-62.119.230.255 229 | 62.133.128.0-62.133.128.255 230 | 62.149.79.0-62.149.79.255 231 | 62.164.169.0-62.164.169.255 232 | 62.168.125.0-62.168.125.255 233 | 62.197.198.0-62.197.198.255 234 | 62.201.216.0-62.201.216.255 235 | 62.212.252.0-62.212.252.255 236 | 62.214.62.0-62.214.62.255 237 | 62.231.75.0-62.231.75.255 238 | 62.231.91.0-62.231.91.255 239 | 62.240.68.0-62.240.68.255 240 | 62.243.26.0-62.243.26.255 241 | 62.252.169.0-62.252.170.255 242 | 62.252.173.0-62.252.173.255 243 | 62.252.191.0-62.252.191.255 244 | 62.252.232.0-62.252.232.255 245 | 62.253.3.0-62.253.3.255 246 | 62.253.72.0-62.253.72.255 247 | 63.84.3.0-63.84.3.255 248 | 63.88.73.0-63.88.73.255 249 | 63.96.4.0-63.96.4.255 250 | 63.110.67.0-63.110.67.255 251 | 63.117.14.0-63.117.14.255 252 | 63.117.68.0-63.117.68.255 253 | 63.117.215.0-63.117.215.255 254 | 63.135.48.0-63.135.48.255 255 | 63.143.72.0-63.143.72.255 256 | 64.13.74.0-64.13.75.255 257 | 64.15.112.0-64.15.114.255 258 | 64.15.116.0-64.15.124.255 259 | 64.15.126.0-64.15.127.255 260 | 64.18.1.0-64.18.1.255 261 | 64.20.30.0-64.20.30.255 262 | 64.53.1.0-64.53.1.255 263 | 64.53.242.0-64.53.242.255 264 | 64.53.251.0-64.53.251.255 265 | 64.71.249.0-64.71.249.255 266 | 64.76.226.0-64.76.226.255 267 | 64.203.194.0-64.203.194.255 268 | 64.233.160.0-64.233.169.255 269 | 64.233.171.0-64.233.171.255 270 | 64.233.176.0-64.233.191.255 271 | 64.246.133.0-64.246.133.255 272 | 65.39.199.0-65.39.199.255 273 | 65.60.171.0-65.60.171.255 274 | 65.87.229.0-65.87.229.255 275 | 65.183.12.0-65.183.12.255 276 | 65.196.188.0-65.196.188.255 277 | 65.199.32.0-65.199.32.255 278 | 65.199.248.0-65.199.248.255 279 | 66.8.14.0-66.8.14.255 280 | 66.38.63.0-66.38.63.255 281 | 66.44.205.0-66.44.205.255 282 | 66.58.255.0-66.58.255.255 283 | 66.76.34.0-66.76.34.255 284 | 66.76.194.0-66.76.194.255 285 | 66.76.246.0-66.76.246.255 286 | 66.96.224.0-66.96.224.255 287 | 66.97.30.0-66.97.30.255 288 | 66.102.1.0-66.102.1.255 289 | 66.102.12.0-66.102.12.255 290 | 66.112.178.0-66.112.178.255 291 | 66.153.250.0-66.153.250.255 292 | 66.185.84.0-66.185.85.255 293 | 66.185.95.0-66.185.95.255 294 | 66.187.114.0-66.187.114.255 295 | 66.199.151.0-66.199.151.255 296 | 67.50.19.0-67.50.19.255 297 | 67.89.227.0-67.89.227.255 298 | 67.204.184.0-67.204.184.255 299 | 67.212.255.0-67.212.255.255 300 | 67.218.93.0-67.218.93.255 301 | 67.221.221.0-67.221.221.255 302 | 67.224.250.0-67.224.250.255 303 | 68.65.49.0-68.65.49.255 304 | 69.46.66.0-69.46.66.255 305 | 69.65.64.0-69.65.64.255 306 | 69.79.200.0-69.79.200.255 307 | 69.85.196.0-69.85.196.255 308 | 69.160.212.0-69.160.212.255 309 | 69.176.0.0-69.176.0.255 310 | 70.34.140.0-70.34.140.255 311 | 70.186.10.0-70.186.10.255 312 | 70.186.24.0-70.186.24.255 313 | 70.186.26.0-70.186.26.255 314 | 70.186.28.0-70.186.28.255 315 | 70.186.30.0-70.186.30.255 316 | 71.19.173.0-71.19.173.255 317 | 71.19.176.0-71.19.176.255 318 | 71.22.7.0-71.22.7.255 319 | 72.14.225.0-72.14.225.255 320 | 72.14.228.0-72.14.229.255 321 | 72.22.27.0-72.22.27.255 322 | 72.195.166.0-72.195.166.255 323 | 72.234.39.0-72.234.39.255 324 | 74.51.119.0-74.51.119.255 325 | 74.85.65.0-74.85.65.255 326 | 74.124.63.0-74.124.63.255 327 | 74.125.0.0-74.125.9.255 328 | 74.125.11.0-74.125.14.255 329 | 74.125.20.0-74.125.26.255 330 | 74.125.28.0-74.125.30.255 331 | 74.125.34.0-74.125.34.255 332 | 74.125.63.0-74.125.63.255 333 | 74.125.68.0-74.125.71.255 334 | 74.125.96.0-74.125.108.255 335 | 74.125.110.0-74.125.111.255 336 | 74.125.120.0-74.125.122.255 337 | 74.125.127.0-74.125.127.255 338 | 74.125.129.0-74.125.130.255 339 | 74.125.133.0-74.125.136.255 340 | 74.125.138.0-74.125.143.255 341 | 74.125.152.0-74.125.156.255 342 | 74.125.160.0-74.125.175.255 343 | 74.125.193.0-74.125.196.255 344 | 74.125.198.0-74.125.198.255 345 | 74.125.200.0-74.125.207.255 346 | 74.125.209.0-74.125.209.255 347 | 74.125.212.0-74.125.216.255 348 | 74.125.218.0-74.125.218.255 349 | 74.125.224.0-74.125.230.255 350 | 74.125.232.0-74.125.232.255 351 | 74.125.237.0-74.125.239.255 352 | 74.205.129.0-74.205.129.255 353 | 74.216.233.0-74.216.233.255 354 | 75.76.44.0-75.76.44.255 355 | 76.75.38.0-76.75.38.255 356 | 76.165.14.0-76.165.14.255 357 | 77.37.250.0-77.37.250.255 358 | 77.37.252.0-77.37.252.255 359 | 77.42.249.0-77.42.249.255 360 | 77.42.253.0-77.42.253.255 361 | 77.53.0.0-77.53.0.255 362 | 77.66.9.0-77.66.9.255 363 | 77.67.49.0-77.67.49.255 364 | 77.68.246.0-77.68.246.255 365 | 77.68.251.0-77.68.251.255 366 | 77.77.7.0-77.77.7.255 367 | 77.77.193.0-77.77.193.255 368 | 77.88.221.0-77.88.221.255 369 | 77.91.67.0-77.91.67.255 370 | 77.111.2.0-77.111.2.255 371 | 77.153.128.0-77.153.128.255 372 | 77.214.53.0-77.214.53.255 373 | 77.237.27.0-77.237.27.255 374 | 77.239.64.0-77.239.64.255 375 | 77.242.30.0-77.242.30.255 376 | 77.252.2.0-77.252.2.255 377 | 78.11.253.0-78.11.253.255 378 | 78.37.112.0-78.37.112.255 379 | 78.83.4.0-78.83.4.255 380 | 78.90.240.0-78.90.240.255 381 | 78.133.98.0-78.133.98.255 382 | 78.136.92.0-78.136.92.255 383 | 79.101.110.0-79.101.111.255 384 | 79.106.107.0-79.106.107.255 385 | 79.121.0.0-79.121.0.255 386 | 79.136.239.0-79.136.239.255 387 | 79.171.121.0-79.171.121.255 388 | 79.171.163.0-79.171.163.255 389 | 80.64.175.0-80.64.175.255 390 | 80.89.192.0-80.89.192.255 391 | 80.91.176.0-80.91.176.255 392 | 80.93.31.0-80.93.31.255 393 | 80.96.255.0-80.96.255.255 394 | 80.97.208.0-80.97.208.255 395 | 80.149.20.0-80.149.20.255 396 | 80.202.12.0-80.202.12.255 397 | 80.228.66.0-80.228.66.255 398 | 80.233.168.0-80.233.168.255 399 | 80.239.174.0-80.239.174.255 400 | 80.239.229.0-80.239.229.255 401 | 80.252.129.0-80.252.129.255 402 | 80.253.30.0-80.253.30.255 403 | 81.3.201.0-81.3.201.255 404 | 81.10.128.0-81.10.128.255 405 | 81.12.207.0-81.12.207.255 406 | 81.12.228.0-81.12.228.255 407 | 81.20.240.0-81.20.240.255 408 | 81.24.29.0-81.24.29.255 409 | 81.30.226.0-81.30.226.255 410 | 81.167.38.0-81.167.38.255 411 | 81.175.29.0-81.175.29.255 412 | 81.180.120.0-81.180.120.255 413 | 81.192.190.0-81.192.191.255 414 | 81.209.95.0-81.209.95.255 415 | 82.76.79.0-82.76.79.255 416 | 82.77.159.0-82.77.159.255 417 | 82.94.228.0-82.94.228.255 418 | 82.94.234.0-82.94.234.255 419 | 82.113.19.0-82.113.19.255 420 | 82.117.119.0-82.117.119.255 421 | 82.129.130.0-82.129.130.255 422 | 82.135.118.0-82.135.118.255 423 | 82.147.54.0-82.147.54.255 424 | 82.193.82.0-82.193.82.255 425 | 82.206.179.0-82.206.179.255 426 | 82.221.224.0-82.221.224.255 427 | 83.94.121.0-83.94.121.255 428 | 83.100.221.0-83.100.221.255 429 | 83.139.106.0-83.139.106.255 430 | 83.140.66.0-83.140.66.255 431 | 83.145.196.0-83.145.196.255 432 | 83.169.197.0-83.169.197.255 433 | 83.175.145.0-83.175.145.255 434 | 83.233.164.0-83.233.164.255 435 | 83.243.205.0-83.243.205.255 436 | 84.2.2.0-84.2.2.255 437 | 84.15.64.0-84.15.64.255 438 | 84.46.102.0-84.46.102.255 439 | 84.54.161.0-84.54.161.255 440 | 84.208.42.0-84.208.42.255 441 | 84.235.58.0-84.235.58.255 442 | 84.235.77.0-84.235.77.255 443 | 84.244.61.0-84.244.62.255 444 | 85.14.28.0-85.14.28.255 445 | 85.91.7.0-85.91.7.255 446 | 85.112.116.0-85.112.116.255 447 | 85.112.121.0-85.112.121.255 448 | 85.134.33.0-85.134.33.255 449 | 85.158.132.0-85.158.132.255 450 | 85.172.1.0-85.172.1.255 451 | 85.182.250.0-85.182.250.255 452 | 85.187.222.0-85.187.222.255 453 | 85.233.229.0-85.233.229.255 454 | 85.239.127.0-85.239.127.255 455 | 85.254.3.0-85.254.3.255 456 | 86.38.6.0-86.38.6.255 457 | 86.51.24.0-86.51.24.255 458 | 86.51.68.0-86.51.68.255 459 | 86.60.255.0-86.60.255.255 460 | 86.127.118.0-86.127.118.255 461 | 87.72.143.0-87.72.143.255 462 | 87.79.22.0-87.79.22.255 463 | 87.104.252.0-87.104.252.255 464 | 87.119.3.0-87.119.3.255 465 | 87.126.158.0-87.126.158.255 466 | 87.245.195.0-87.245.198.255 467 | 87.245.200.0-87.245.200.255 468 | 87.251.132.0-87.251.132.255 469 | 88.132.65.0-88.132.65.255 470 | 88.212.9.0-88.212.9.255 471 | 88.216.174.0-88.216.174.255 472 | 88.217.135.0-88.217.135.255 473 | 88.222.2.0-88.222.2.255 474 | 89.25.120.0-89.25.120.255 475 | 89.25.215.0-89.25.215.255 476 | 89.47.210.0-89.47.210.255 477 | 89.127.198.0-89.127.198.255 478 | 89.201.175.0-89.201.175.255 479 | 89.212.69.0-89.212.69.255 480 | 89.228.4.0-89.228.4.255 481 | 90.150.4.0-90.150.4.255 482 | 90.150.83.0-90.150.83.255 483 | 90.157.217.0-90.157.217.255 484 | 90.201.124.0-90.201.124.255 485 | 90.211.177.0-90.211.177.255 486 | 90.222.188.0-90.222.188.255 487 | 90.223.244.0-90.223.244.255 488 | 91.185.100.0-91.185.100.255 489 | 91.189.221.0-91.189.221.255 490 | 91.202.206.0-91.202.206.255 491 | 91.205.69.0-91.205.69.255 492 | 91.213.30.0-91.213.30.255 493 | 91.230.210.0-91.230.210.255 494 | 91.245.214.0-91.245.214.255 495 | 92.46.70.0-92.46.70.255 496 | 92.53.32.0-92.53.32.255 497 | 92.87.156.0-92.87.156.255 498 | 92.87.232.0-92.87.232.255 499 | 92.126.121.0-92.126.121.255 500 | 92.126.155.0-92.126.155.255 501 | 92.197.129.0-92.197.129.255 502 | 92.246.5.0-92.246.5.255 503 | 93.87.90.0-93.87.90.255 504 | 93.88.162.0-93.88.163.255 505 | 93.89.223.0-93.89.223.255 506 | 93.91.155.0-93.91.155.255 507 | 93.123.23.0-93.123.23.255 508 | 93.183.211.0-93.183.211.255 509 | 93.191.15.0-93.191.15.255 510 | 94.20.252.0-94.20.252.255 511 | 94.21.255.0-94.21.255.255 512 | 94.25.137.0-94.25.137.255 513 | 94.40.70.0-94.40.70.255 514 | 94.53.12.0-94.53.12.255 515 | 94.73.222.0-94.73.222.255 516 | 94.129.130.0-94.129.130.255 517 | 94.140.100.0-94.140.100.255 518 | 94.156.188.0-94.156.188.255 519 | 94.232.220.0-94.232.220.255 520 | 94.236.232.0-94.236.232.255 521 | 94.245.201.0-94.245.201.255 522 | 95.54.196.0-95.54.196.255 523 | 95.67.12.0-95.67.12.255 524 | 95.107.145.0-95.107.145.255 525 | 95.143.84.0-95.143.84.255 526 | 95.153.46.0-95.153.46.255 527 | 95.154.114.0-95.154.114.255 528 | 95.158.47.0-95.158.47.255 529 | 95.158.130.0-95.158.130.255 530 | 95.168.222.0-95.168.222.255 531 | 95.170.193.0-95.170.193.255 532 | 95.180.157.0-95.180.157.255 533 | 95.209.200.0-95.209.200.255 534 | 96.43.49.0-96.43.49.255 535 | 96.127.250.0-96.127.250.255 536 | 97.75.181.0-97.75.181.255 537 | 98.124.44.0-98.124.44.255 538 | 101.78.13.0-101.78.13.255 539 | 101.99.49.0-101.99.49.255 540 | 101.100.190.0-101.100.190.255 541 | 103.1.139.0-103.1.139.255 542 | 103.2.116.0-103.2.116.255 543 | 103.11.28.0-103.11.28.255 544 | 103.11.30.0-103.11.30.255 545 | 103.13.250.0-103.13.250.255 546 | 103.16.204.0-103.16.205.255 547 | 103.16.207.0-103.16.207.255 548 | 103.21.25.0-103.21.25.255 549 | 103.21.169.0-103.21.169.255 550 | 103.25.178.0-103.25.178.255 551 | 103.28.94.0-103.28.94.255 552 | 103.30.113.0-103.30.113.255 553 | 103.224.194.0-103.224.194.255 554 | 103.233.37.0-103.233.37.255 555 | 103.244.49.0-103.244.49.255 556 | 103.249.65.0-103.249.65.255 557 | 103.250.184.0-103.250.184.255 558 | 104.237.160.0-104.237.160.255 559 | 104.237.172.0-104.237.172.255 560 | 104.237.174.0-104.237.174.255 561 | 104.237.188.0-104.237.189.255 562 | 105.187.242.0-105.187.242.255 563 | 105.203.250.0-105.203.250.255 564 | 106.103.1.0-106.103.2.255 565 | 106.162.192.0-106.162.192.255 566 | 106.162.198.0-106.162.200.255 567 | 106.162.216.0-106.162.216.255 568 | 107.161.13.0-107.161.13.255 569 | 108.177.9.0-108.177.12.255 570 | 109.95.77.0-109.95.77.255 571 | 109.105.109.0-109.105.109.255 572 | 109.110.33.0-109.110.33.255 573 | 109.163.221.0-109.163.221.255 574 | 109.193.192.0-109.193.193.255 575 | 109.199.81.0-109.199.81.255 576 | 109.225.113.0-109.225.113.255 577 | 109.226.232.0-109.226.232.255 578 | 109.231.231.0-109.231.231.255 579 | 110.50.81.0-110.50.81.255 580 | 110.137.35.0-110.137.35.255 581 | 110.137.39.0-110.137.39.255 582 | 110.139.114.0-110.139.115.255 583 | 110.163.42.0-110.163.42.255 584 | 110.164.4.0-110.164.10.255 585 | 110.164.12.0-110.164.14.255 586 | 110.164.16.0-110.164.16.255 587 | 110.232.86.0-110.232.86.255 588 | 111.86.157.0-111.86.157.255 589 | 111.86.247.0-111.86.247.255 590 | 111.90.117.0-111.90.117.255 591 | 111.92.162.0-111.92.162.255 592 | 111.94.248.0-111.94.248.255 593 | 111.107.254.0-111.107.254.255 594 | 111.168.255.0-111.168.255.255 595 | 113.59.211.0-113.59.211.255 596 | 113.171.18.0-113.171.19.255 597 | 113.171.239.0-113.171.239.255 598 | 113.171.241.0-113.171.247.255 599 | 113.171.251.0-113.171.252.255 600 | 114.4.4.0-114.4.4.255 601 | 114.4.41.0-114.4.41.255 602 | 114.108.207.0-114.108.207.255 603 | 114.120.192.0-114.120.192.255 604 | 114.121.194.0-114.121.194.255 605 | 115.84.108.0-115.84.108.255 606 | 115.88.207.0-115.88.207.255 607 | 115.164.12.0-115.164.12.255 608 | 115.164.140.0-115.164.140.255 609 | 115.166.169.0-115.166.169.255 610 | 115.178.26.0-115.178.27.255 611 | 115.254.97.0-115.254.97.255 612 | 115.254.106.0-115.254.106.255 613 | 115.254.121.0-115.254.121.255 614 | 116.92.194.0-116.92.194.255 615 | 116.93.47.0-116.93.47.255 616 | 116.202.230.0-116.202.230.255 617 | 116.212.229.0-116.212.229.255 618 | 116.251.217.0-116.251.217.255 619 | 117.102.117.0-117.102.117.255 620 | 118.69.249.0-118.69.249.255 621 | 118.98.26.0-118.98.26.255 622 | 118.98.30.0-118.98.30.255 623 | 118.98.36.0-118.98.36.255 624 | 118.98.76.0-118.98.77.255 625 | 118.98.106.0-118.98.106.255 626 | 118.98.110.0-118.98.111.255 627 | 118.107.75.0-118.107.75.255 628 | 118.107.111.0-118.107.111.255 629 | 118.143.88.0-118.143.88.255 630 | 118.174.25.0-118.174.25.255 631 | 118.174.27.0-118.174.27.255 632 | 119.9.76.0-119.9.76.255 633 | 119.15.80.0-119.15.80.255 634 | 119.40.97.0-119.40.97.255 635 | 119.110.118.0-119.110.118.255 636 | 119.149.188.0-119.149.188.255 637 | 119.161.83.0-119.161.83.255 638 | 119.235.103.0-119.235.103.255 639 | 120.28.5.0-120.28.5.255 640 | 120.28.12.0-120.28.12.255 641 | 120.28.26.0-120.28.26.255 642 | 120.28.53.0-120.28.53.255 643 | 121.78.52.0-121.78.52.255 644 | 121.78.71.0-121.78.71.255 645 | 121.78.74.0-121.78.74.255 646 | 121.78.206.0-121.78.206.255 647 | 122.56.115.0-122.56.115.255 648 | 122.154.244.0-122.154.244.255 649 | 122.168.100.0-122.168.100.255 650 | 122.251.255.0-122.251.255.255 651 | 123.205.250.0-123.205.251.255 652 | 123.231.239.0-123.231.239.255 653 | 124.40.230.0-124.40.230.255 654 | 124.40.245.0-124.40.245.255 655 | 124.153.255.0-124.153.255.255 656 | 124.158.72.0-124.158.72.255 657 | 124.248.162.0-124.248.162.255 658 | 125.99.110.0-125.99.110.255 659 | 125.160.59.0-125.160.59.255 660 | 125.161.23.0-125.161.23.255 661 | 125.234.50.0-125.234.50.255 662 | 125.234.52.0-125.234.55.255 663 | 125.235.17.0-125.235.17.255 664 | 125.235.30.0-125.235.31.255 665 | 125.235.36.0-125.235.36.255 666 | 128.0.86.0-128.0.86.255 667 | 128.0.90.0-128.0.90.255 668 | 128.0.169.0-128.0.169.255 669 | 128.210.224.0-128.210.224.255 670 | 129.66.96.0-129.66.96.255 671 | 130.111.19.0-130.111.19.255 672 | 130.206.193.0-130.206.193.255 673 | 134.90.151.0-134.90.151.255 674 | 135.0.199.0-135.0.199.255 675 | 137.207.250.0-137.207.250.255 676 | 139.175.107.0-139.175.107.255 677 | 140.113.14.0-140.113.14.255 678 | 140.197.248.0-140.197.248.255 679 | 142.163.38.0-142.163.38.255 680 | 142.166.12.0-142.166.12.255 681 | 142.166.129.0-142.166.129.255 682 | 142.166.149.0-142.166.149.255 683 | 142.176.121.0-142.176.121.255 684 | 143.215.193.0-143.215.193.255 685 | 144.131.80.0-144.131.80.255 686 | 146.115.8.0-146.115.8.255 687 | 148.123.25.0-148.123.25.255 688 | 148.123.29.0-148.123.29.255 689 | 148.245.203.0-148.245.203.255 690 | 149.3.176.0-149.3.177.255 691 | 149.126.86.0-149.126.86.255 692 | 149.165.180.0-149.165.180.255 693 | 150.100.16.0-150.100.16.255 694 | 150.101.213.0-150.101.213.255 695 | 150.199.24.0-150.199.24.255 696 | 151.21.210.0-151.21.210.255 697 | 151.50.168.0-151.50.168.255 698 | 151.248.100.0-151.248.100.255 699 | 154.65.36.0-154.65.36.255 700 | 154.66.245.0-154.66.245.255 701 | 154.67.1.0-154.67.1.255 702 | 154.73.81.0-154.73.81.255 703 | 155.232.240.0-155.232.240.255 704 | 157.157.135.0-157.157.135.255 705 | 157.161.155.0-157.161.155.255 706 | 157.197.92.0-157.197.93.255 707 | 159.134.168.0-159.134.168.255 708 | 159.148.69.0-159.148.69.255 709 | 159.180.253.0-159.180.253.255 710 | 161.132.34.0-161.132.34.255 711 | 162.212.208.0-162.212.208.255 712 | 162.221.128.0-162.221.128.255 713 | 162.252.127.0-162.252.127.255 714 | 163.28.38.0-163.28.38.255 715 | 163.28.83.0-163.28.83.255 716 | 163.28.116.0-163.28.116.255 717 | 164.40.244.0-164.40.244.255 718 | 164.58.87.0-164.58.87.255 719 | 164.85.63.0-164.85.63.255 720 | 164.113.94.0-164.113.94.255 721 | 165.98.72.0-165.98.72.255 722 | 165.139.0.0-165.139.0.255 723 | 165.165.38.0-165.165.38.255 724 | 167.142.232.0-167.142.232.255 725 | 167.206.10.0-167.206.10.255 726 | 167.206.12.0-167.206.12.255 727 | 167.206.145.0-167.206.145.255 728 | 167.206.245.0-167.206.245.255 729 | 167.206.252.0-167.206.252.255 730 | 172.56.136.0-172.56.136.255 731 | 172.217.0.0-172.217.0.255 732 | 172.217.2.0-172.217.2.255 733 | 172.217.16.0-172.217.16.255 734 | 172.217.24.0-172.217.25.255 735 | 173.192.69.0-173.192.69.255 736 | 173.194.0.0-173.194.22.255 737 | 173.194.25.0-173.194.29.255 738 | 173.194.31.0-173.194.33.255 739 | 173.194.36.0-173.194.40.255 740 | 173.194.42.0-173.194.46.255 741 | 173.194.48.0-173.194.49.255 742 | 173.194.51.0-173.194.65.255 743 | 173.194.67.0-173.194.67.255 744 | 173.194.69.0-173.194.72.255 745 | 173.194.74.0-173.194.75.255 746 | 173.194.77.0-173.194.77.255 747 | 173.194.79.0-173.194.79.255 748 | 173.194.112.0-173.194.113.255 749 | 173.194.115.0-173.194.124.255 750 | 173.194.126.0-173.194.126.255 751 | 173.194.128.0-173.194.144.255 752 | 173.194.146.0-173.194.154.255 753 | 173.194.156.0-173.194.158.255 754 | 173.194.192.0-173.194.197.255 755 | 173.194.199.0-173.194.220.255 756 | 173.194.222.0-173.194.223.255 757 | 173.218.248.0-173.218.248.255 758 | 173.219.91.0-173.219.91.255 759 | 173.219.93.0-173.219.93.255 760 | 173.219.133.0-173.219.133.255 761 | 173.219.167.0-173.219.167.255 762 | 173.224.96.0-173.224.96.255 763 | 173.227.93.0-173.227.93.255 764 | 173.227.247.0-173.227.247.255 765 | 173.237.115.0-173.237.115.255 766 | 173.255.204.0-173.255.204.255 767 | 174.140.109.0-174.140.109.255 768 | 175.28.1.0-175.28.1.255 769 | 175.100.94.0-175.100.94.255 770 | 176.28.77.0-176.28.77.255 771 | 176.126.59.0-176.126.59.255 772 | 176.221.96.0-176.221.96.255 773 | 176.255.201.0-176.255.201.255 774 | 177.21.244.0-177.21.244.255 775 | 177.35.32.0-177.35.32.255 776 | 177.35.203.0-177.35.203.255 777 | 177.36.3.0-177.36.3.255 778 | 177.36.217.0-177.36.217.255 779 | 177.43.115.0-177.43.115.255 780 | 177.43.165.0-177.43.165.255 781 | 177.43.170.0-177.43.170.255 782 | 177.43.196.0-177.43.196.255 783 | 177.43.235.0-177.43.235.255 784 | 177.43.239.0-177.43.239.255 785 | 177.71.7.0-177.71.7.255 786 | 177.91.160.0-177.91.160.255 787 | 177.91.191.0-177.91.191.255 788 | 177.99.179.0-177.99.179.255 789 | 177.99.185.0-177.99.185.255 790 | 177.99.203.0-177.99.203.255 791 | 177.100.48.0-177.100.48.255 792 | 177.101.143.0-177.101.143.255 793 | 177.107.191.0-177.107.191.255 794 | 177.124.192.0-177.124.192.255 795 | 177.126.126.0-177.126.126.255 796 | 177.128.223.0-177.128.223.255 797 | 177.131.1.0-177.131.1.255 798 | 177.135.84.0-177.135.84.255 799 | 177.135.94.0-177.135.94.255 800 | 177.135.103.0-177.135.103.255 801 | 177.135.107.0-177.135.107.255 802 | 177.135.110.0-177.135.110.255 803 | 177.135.135.0-177.135.135.255 804 | 177.135.151.0-177.135.151.255 805 | 177.135.177.0-177.135.177.255 806 | 177.135.245.0-177.135.245.255 807 | 177.136.113.0-177.136.113.255 808 | 177.155.0.0-177.155.0.255 809 | 177.155.141.0-177.155.141.255 810 | 177.159.161.0-177.159.162.255 811 | 177.159.237.0-177.159.237.255 812 | 178.22.222.0-178.22.222.255 813 | 178.23.236.0-178.23.236.255 814 | 178.35.137.0-178.35.137.255 815 | 178.45.249.0-178.45.249.255 816 | 178.45.251.0-178.45.251.255 817 | 178.45.253.0-178.45.253.255 818 | 178.60.128.0-178.60.128.255 819 | 178.60.195.0-178.60.195.255 820 | 178.74.30.0-178.74.30.255 821 | 178.132.81.0-178.132.81.255 822 | 178.209.67.0-178.209.67.255 823 | 178.235.206.0-178.235.206.255 824 | 178.236.130.0-178.236.130.255 825 | 178.250.208.0-178.250.208.255 826 | 179.6.63.0-179.6.63.255 827 | 179.60.91.0-179.60.91.255 828 | 179.96.24.0-179.96.24.255 829 | 179.96.35.0-179.96.35.255 830 | 179.97.196.0-179.97.196.255 831 | 179.106.47.0-179.106.47.255 832 | 179.124.138.0-179.124.138.255 833 | 179.124.224.0-179.124.224.255 834 | 179.127.142.0-179.127.142.255 835 | 179.154.191.0-179.154.191.255 836 | 179.183.24.0-179.183.24.255 837 | 179.184.10.0-179.184.10.255 838 | 179.185.163.0-179.185.163.255 839 | 180.93.32.0-180.93.32.255 840 | 180.149.59.0-180.149.59.255 841 | 180.149.61.0-180.149.61.255 842 | 180.150.1.0-180.150.1.255 843 | 180.180.248.0-180.180.248.255 844 | 180.188.250.0-180.188.250.255 845 | 180.235.254.0-180.235.254.255 846 | 180.241.35.0-180.241.35.255 847 | 180.241.39.0-180.241.39.255 848 | 180.241.121.0-180.241.121.255 849 | 180.246.148.0-180.246.149.255 850 | 180.246.189.0-180.246.189.255 851 | 180.248.129.0-180.248.129.255 852 | 180.248.133.0-180.248.133.255 853 | 180.248.135.0-180.248.136.255 854 | 180.251.67.0-180.251.67.255 855 | 180.251.70.0-180.251.70.255 856 | 181.15.96.0-181.15.96.255 857 | 181.15.215.0-181.15.215.255 858 | 181.15.220.0-181.15.221.255 859 | 181.30.240.0-181.30.242.255 860 | 181.47.248.0-181.47.248.255 861 | 181.48.252.0-181.48.252.255 862 | 181.48.254.0-181.48.255.255 863 | 181.64.130.0-181.64.132.255 864 | 181.114.54.0-181.114.54.255 865 | 181.176.244.0-181.176.244.255 866 | 181.188.0.0-181.188.0.255 867 | 181.192.63.0-181.192.63.255 868 | 181.198.79.0-181.198.80.255 869 | 181.224.253.0-181.224.253.255 870 | 182.50.94.0-182.50.94.255 871 | 182.79.251.0-182.79.251.255 872 | 182.79.253.0-182.79.254.255 873 | 182.163.240.0-182.163.240.255 874 | 182.176.130.0-182.176.130.255 875 | 182.248.204.0-182.248.204.255 876 | 182.253.220.0-182.253.220.255 877 | 183.78.5.0-183.78.5.255 878 | 183.87.151.0-183.87.151.255 879 | 183.91.18.0-183.91.18.255 880 | 183.182.96.0-183.182.96.255 881 | 184.150.152.0-184.150.153.255 882 | 184.150.182.0-184.150.183.255 883 | 184.150.186.0-184.150.186.255 884 | 184.170.67.0-184.170.67.255 885 | 185.1.11.0-185.1.11.255 886 | 185.2.108.0-185.2.108.255 887 | 185.3.1.0-185.3.1.255 888 | 185.5.161.0-185.5.161.255 889 | 185.13.132.0-185.13.132.255 890 | 185.37.85.0-185.37.85.255 891 | 185.38.0.0-185.38.0.255 892 | 185.42.244.0-185.42.244.255 893 | 185.48.9.0-185.48.9.255 894 | 185.73.88.0-185.73.88.255 895 | 185.95.204.0-185.95.204.255 896 | 186.1.197.0-186.1.197.255 897 | 186.2.131.0-186.2.131.255 898 | 186.15.250.0-186.15.250.255 899 | 186.27.124.0-186.27.124.255 900 | 186.32.236.0-186.32.236.255 901 | 186.46.140.0-186.46.141.255 902 | 186.68.154.0-186.68.154.255 903 | 186.68.247.0-186.68.247.255 904 | 186.73.72.0-186.73.72.255 905 | 186.73.79.0-186.73.79.255 906 | 186.96.91.0-186.96.91.255 907 | 186.151.236.0-186.151.236.255 908 | 186.160.223.0-186.160.223.255 909 | 186.176.224.0-186.176.224.255 910 | 186.177.65.0-186.177.65.255 911 | 186.178.0.0-186.178.0.255 912 | 186.192.145.0-186.192.145.255 913 | 186.194.48.0-186.194.48.255 914 | 186.207.162.0-186.207.162.255 915 | 186.215.92.0-186.215.92.255 916 | 186.215.155.0-186.215.155.255 917 | 186.215.194.0-186.215.194.255 918 | 186.215.208.0-186.215.208.255 919 | 186.225.43.0-186.225.43.255 920 | 186.225.147.0-186.225.147.255 921 | 186.226.128.0-186.226.128.255 922 | 186.232.197.0-186.232.197.255 923 | 186.235.31.0-186.235.31.255 924 | 186.251.10.0-186.251.10.255 925 | 187.1.89.0-187.1.89.255 926 | 187.2.74.0-187.2.74.255 927 | 187.7.117.0-187.7.117.255 928 | 187.17.155.0-187.17.155.255 929 | 187.18.184.0-187.18.184.255 930 | 187.19.96.0-187.19.96.255 931 | 187.19.145.0-187.19.145.255 932 | 187.33.247.0-187.33.247.255 933 | 187.44.0.0-187.44.0.255 934 | 187.58.66.0-187.58.66.255 935 | 187.66.78.0-187.66.78.255 936 | 187.72.192.0-187.72.192.255 937 | 187.86.12.0-187.86.12.255 938 | 187.86.49.0-187.86.49.255 939 | 187.110.64.0-187.110.64.255 940 | 187.110.238.0-187.110.238.255 941 | 187.115.167.0-187.115.167.255 942 | 187.123.28.0-187.123.28.255 943 | 187.160.243.0-187.160.243.255 944 | 187.160.254.0-187.160.254.255 945 | 187.254.78.0-187.254.78.255 946 | 188.21.9.0-188.21.9.255 947 | 188.43.64.0-188.43.66.255 948 | 188.47.193.0-188.47.194.255 949 | 188.93.174.0-188.93.174.255 950 | 188.112.3.0-188.112.3.255 951 | 188.113.128.0-188.113.128.255 952 | 188.247.240.0-188.247.240.255 953 | 189.1.145.0-189.1.145.255 954 | 189.5.130.0-189.5.130.255 955 | 189.7.75.0-189.7.75.255 956 | 189.14.52.0-189.14.52.255 957 | 189.26.123.0-189.26.123.255 958 | 189.34.253.0-189.34.253.255 959 | 189.38.33.0-189.38.33.255 960 | 189.39.126.0-189.39.126.255 961 | 189.45.193.0-189.45.193.255 962 | 189.51.155.0-189.51.155.255 963 | 189.58.99.0-189.58.99.255 964 | 189.59.93.0-189.59.93.255 965 | 189.63.251.0-189.63.251.255 966 | 189.73.192.0-189.73.192.255 967 | 189.76.142.0-189.76.142.255 968 | 189.86.41.0-189.86.41.255 969 | 189.89.161.0-189.89.161.255 970 | 189.90.243.0-189.90.243.255 971 | 189.103.27.0-189.103.27.255 972 | 189.115.42.0-189.115.42.255 973 | 189.124.133.0-189.124.133.255 974 | 189.193.189.0-189.193.189.255 975 | 189.194.54.0-189.194.54.255 976 | 189.194.94.0-189.194.94.255 977 | 189.195.96.0-189.195.96.255 978 | 189.195.222.0-189.195.222.255 979 | 189.196.168.0-189.196.168.255 980 | 189.196.189.0-189.196.189.255 981 | 189.197.77.0-189.197.77.255 982 | 189.197.79.0-189.197.79.255 983 | 189.197.190.0-189.197.190.255 984 | 189.198.236.0-189.198.236.255 985 | 189.198.250.0-189.198.250.255 986 | 189.199.19.0-189.199.19.255 987 | 189.199.71.0-189.199.71.255 988 | 189.199.81.0-189.199.81.255 989 | 189.199.103.0-189.199.103.255 990 | 189.199.105.0-189.199.105.255 991 | 189.199.250.0-189.199.250.255 992 | 189.203.167.0-189.203.167.255 993 | 189.203.232.0-189.203.232.255 994 | 189.215.132.0-189.215.132.255 995 | 189.215.200.0-189.215.200.255 996 | 189.247.133.0-189.247.136.255 997 | 189.247.138.0-189.247.138.255 998 | 189.247.144.0-189.247.148.255 999 | 189.247.160.0-189.247.161.255 1000 | 189.247.168.0-189.247.169.255 1001 | 190.45.0.0-190.45.0.255 1002 | 190.57.158.0-190.57.158.255 1003 | 190.57.224.0-190.57.224.255 1004 | 190.58.136.0-190.58.136.255 1005 | 190.92.89.0-190.92.89.255 1006 | 190.94.130.0-190.94.130.255 1007 | 190.94.176.0-190.94.176.255 1008 | 190.96.87.0-190.96.87.255 1009 | 190.96.100.0-190.96.100.255 1010 | 190.97.0.0-190.97.0.255 1011 | 190.98.163.0-190.98.163.255 1012 | 190.98.170.0-190.98.171.255 1013 | 190.104.150.0-190.104.150.255 1014 | 190.106.220.0-190.106.220.255 1015 | 190.108.82.0-190.108.82.255 1016 | 190.111.66.0-190.111.66.255 1017 | 190.116.191.0-190.116.191.255 1018 | 190.120.207.0-190.120.207.255 1019 | 190.121.11.0-190.121.11.255 1020 | 190.122.100.0-190.122.100.255 1021 | 190.129.124.0-190.129.124.255 1022 | 190.143.134.0-190.143.134.255 1023 | 190.145.255.0-190.145.255.255 1024 | 190.150.50.0-190.150.50.255 1025 | 190.166.41.0-190.166.41.255 1026 | 190.167.241.0-190.167.241.255 1027 | 190.186.210.0-190.186.210.255 1028 | 190.197.64.0-190.197.64.255 1029 | 190.211.175.0-190.211.175.255 1030 | 190.212.166.0-190.212.166.255 1031 | 190.221.162.0-190.221.162.255 1032 | 190.235.154.0-190.235.154.255 1033 | 190.240.1.0-190.240.2.255 1034 | 190.240.6.0-190.240.6.255 1035 | 190.241.121.0-190.241.121.255 1036 | 190.248.1.0-190.248.1.255 1037 | 190.248.34.0-190.248.35.255 1038 | 191.33.177.0-191.33.177.255 1039 | 191.99.255.0-191.99.255.255 1040 | 191.243.156.0-191.243.156.255 1041 | 191.251.128.0-191.251.128.255 1042 | 191.251.192.0-191.251.192.255 1043 | 191.253.208.0-191.253.208.255 1044 | 192.31.228.0-192.31.228.255 1045 | 192.70.222.0-192.70.222.255 1046 | 192.119.21.0-192.119.21.255 1047 | 192.119.24.0-192.119.24.255 1048 | 192.122.185.0-192.122.185.255 1049 | 192.124.233.0-192.124.233.255 1050 | 192.154.121.0-192.154.121.255 1051 | 192.232.16.0-192.232.16.255 1052 | 193.0.255.0-193.0.255.255 1053 | 193.4.115.0-193.4.115.255 1054 | 193.28.236.0-193.28.236.255 1055 | 193.51.224.0-193.51.224.255 1056 | 193.90.147.0-193.90.147.255 1057 | 193.92.133.0-193.92.133.255 1058 | 193.95.12.0-193.95.12.255 1059 | 193.95.144.0-193.95.144.255 1060 | 193.134.255.0-193.134.255.255 1061 | 193.170.141.0-193.170.141.255 1062 | 193.189.184.0-193.189.184.255 1063 | 193.192.226.0-193.192.226.255 1064 | 193.192.250.0-193.192.250.255 1065 | 193.206.135.0-193.206.135.255 1066 | 193.229.108.0-193.229.108.255 1067 | 194.9.24.0-194.9.25.255 1068 | 194.24.134.0-194.24.134.255 1069 | 194.44.4.0-194.44.4.255 1070 | 194.44.64.0-194.44.64.255 1071 | 194.78.0.0-194.78.0.255 1072 | 194.78.99.0-194.78.99.255 1073 | 194.90.196.0-194.90.196.255 1074 | 194.100.28.0-194.100.28.255 1075 | 194.106.173.0-194.106.173.255 1076 | 194.116.101.0-194.116.101.255 1077 | 194.122.80.0-194.122.82.255 1078 | 194.134.26.0-194.134.26.255 1079 | 194.152.31.0-194.152.31.255 1080 | 194.158.92.0-194.158.92.255 1081 | 194.182.232.0-194.182.232.255 1082 | 194.183.149.0-194.183.149.255 1083 | 194.199.78.0-194.199.78.255 1084 | 194.210.238.0-194.210.238.255 1085 | 195.8.11.0-195.8.12.255 1086 | 195.12.176.0-195.12.177.255 1087 | 195.13.189.0-195.13.189.255 1088 | 195.13.231.0-195.13.231.255 1089 | 195.22.207.0-195.22.207.255 1090 | 195.39.213.0-195.39.213.255 1091 | 195.43.73.0-195.43.73.255 1092 | 195.49.27.0-195.49.27.255 1093 | 195.50.84.0-195.50.84.255 1094 | 195.64.213.0-195.64.213.255 1095 | 195.78.217.0-195.78.217.255 1096 | 195.80.176.0-195.80.176.255 1097 | 195.80.179.0-195.80.179.255 1098 | 195.95.178.0-195.95.178.255 1099 | 195.111.111.0-195.111.111.255 1100 | 195.113.214.0-195.113.214.255 1101 | 195.122.16.0-195.122.16.255 1102 | 195.122.30.0-195.122.30.255 1103 | 195.149.238.0-195.149.238.255 1104 | 195.162.39.0-195.162.39.255 1105 | 195.176.255.0-195.176.255.255 1106 | 195.177.197.0-195.177.197.255 1107 | 195.187.242.0-195.187.242.255 1108 | 195.202.131.0-195.202.131.255 1109 | 195.249.20.0-195.249.20.255 1110 | 195.249.23.0-195.249.23.255 1111 | 196.0.3.0-196.0.3.255 1112 | 196.12.217.0-196.12.217.255 1113 | 196.23.168.0-196.23.168.255 1114 | 196.27.66.0-196.27.66.255 1115 | 196.29.35.0-196.29.35.255 1116 | 196.44.149.0-196.44.149.255 1117 | 196.46.1.0-196.46.1.255 1118 | 196.46.123.0-196.46.123.255 1119 | 196.49.8.0-196.49.8.255 1120 | 196.201.223.0-196.201.223.255 1121 | 196.202.235.0-196.202.235.255 1122 | 196.202.246.0-196.202.246.255 1123 | 196.203.102.0-196.203.102.255 1124 | 196.204.32.0-196.204.32.255 1125 | 196.207.198.0-196.207.198.255 1126 | 197.80.128.0-197.80.128.255 1127 | 197.136.0.0-197.136.0.255 1128 | 197.149.150.0-197.149.150.255 1129 | 197.157.244.0-197.157.244.255 1130 | 197.158.80.0-197.158.80.255 1131 | 197.159.29.0-197.159.29.255 1132 | 197.199.253.0-197.199.254.255 1133 | 197.218.0.0-197.218.0.255 1134 | 197.220.0.0-197.220.0.255 1135 | 197.221.233.0-197.221.233.255 1136 | 197.235.0.0-197.235.0.255 1137 | 197.243.124.0-197.243.124.255 1138 | 197.251.230.0-197.251.230.255 1139 | 197.253.18.0-197.253.18.255 1140 | 198.7.237.0-198.7.237.255 1141 | 198.52.15.0-198.52.15.255 1142 | 198.70.68.0-198.70.70.255 1143 | 198.142.187.0-198.142.187.255 1144 | 198.231.29.0-198.231.29.255 1145 | 198.235.201.0-198.235.201.255 1146 | 199.59.103.0-199.59.103.255 1147 | 199.83.198.0-199.83.198.255 1148 | 199.87.241.0-199.87.241.255 1149 | 199.247.157.0-199.247.157.255 1150 | 200.3.21.0-200.3.21.255 1151 | 200.10.226.0-200.10.226.255 1152 | 200.28.0.0-200.28.0.255 1153 | 200.28.6.0-200.28.6.255 1154 | 200.28.8.0-200.28.8.255 1155 | 200.28.12.0-200.28.12.255 1156 | 200.29.113.0-200.29.113.255 1157 | 200.31.96.0-200.31.96.255 1158 | 200.40.0.0-200.40.0.255 1159 | 200.40.3.0-200.40.3.255 1160 | 200.40.172.0-200.40.172.255 1161 | 200.49.185.0-200.49.185.255 1162 | 200.50.67.0-200.50.67.255 1163 | 200.52.21.0-200.52.21.255 1164 | 200.53.245.0-200.53.245.255 1165 | 200.55.230.0-200.55.230.255 1166 | 200.56.193.0-200.56.193.255 1167 | 200.62.26.0-200.62.26.255 1168 | 200.63.214.0-200.63.214.255 1169 | 200.77.168.0-200.77.168.255 1170 | 200.77.222.0-200.77.222.255 1171 | 200.81.125.0-200.81.125.255 1172 | 200.85.99.0-200.85.99.255 1173 | 200.94.238.0-200.94.238.255 1174 | 200.105.131.0-200.105.131.255 1175 | 200.108.53.0-200.108.53.255 1176 | 200.110.122.0-200.110.122.255 1177 | 200.111.181.0-200.111.181.255 1178 | 200.115.92.0-200.115.92.255 1179 | 200.115.94.0-200.115.95.255 1180 | 200.115.192.0-200.115.192.255 1181 | 200.142.191.0-200.142.191.255 1182 | 200.149.119.0-200.149.119.255 1183 | 200.150.4.0-200.150.4.255 1184 | 200.160.97.0-200.160.97.255 1185 | 200.172.62.0-200.172.62.255 1186 | 200.187.85.0-200.187.85.255 1187 | 200.188.128.0-200.188.128.255 1188 | 200.189.63.0-200.189.63.255 1189 | 200.195.190.0-200.195.190.255 1190 | 200.216.56.0-200.216.56.255 1191 | 200.216.90.0-200.216.90.255 1192 | 200.220.141.0-200.220.141.255 1193 | 201.6.16.0-201.6.16.255 1194 | 201.16.57.0-201.16.57.255 1195 | 201.16.134.0-201.16.134.255 1196 | 201.23.161.0-201.23.161.255 1197 | 201.30.4.0-201.30.4.255 1198 | 201.31.84.0-201.31.84.255 1199 | 201.33.240.0-201.33.240.255 1200 | 201.49.80.0-201.49.80.255 1201 | 201.67.193.0-201.67.193.255 1202 | 201.82.108.0-201.82.108.255 1203 | 201.86.233.0-201.86.233.255 1204 | 201.87.209.0-201.87.209.255 1205 | 201.130.49.0-201.130.49.255 1206 | 201.130.208.0-201.130.208.255 1207 | 201.132.92.0-201.132.92.255 1208 | 201.132.200.0-201.132.200.255 1209 | 201.151.207.0-201.151.207.255 1210 | 201.157.30.0-201.157.30.255 1211 | 201.157.200.0-201.157.200.255 1212 | 201.162.64.0-201.162.64.255 1213 | 201.163.0.0-201.163.0.255 1214 | 201.165.0.0-201.165.0.255 1215 | 201.165.116.0-201.165.116.255 1216 | 201.165.221.0-201.165.221.255 1217 | 201.167.5.0-201.167.5.255 1218 | 201.167.51.0-201.167.51.255 1219 | 201.167.56.0-201.167.56.255 1220 | 201.167.64.0-201.167.64.255 1221 | 201.174.48.0-201.174.48.255 1222 | 201.174.82.0-201.174.82.255 1223 | 201.174.96.0-201.174.98.255 1224 | 201.218.56.0-201.218.56.255 1225 | 201.218.92.0-201.218.92.255 1226 | 201.227.61.0-201.227.61.255 1227 | 201.229.1.0-201.229.1.255 1228 | 201.245.193.0-201.245.194.255 1229 | 201.248.76.0-201.248.76.255 1230 | 201.248.78.0-201.248.78.255 1231 | 202.3.240.0-202.3.240.255 1232 | 202.28.85.0-202.28.85.255 1233 | 202.38.180.0-202.38.180.255 1234 | 202.39.143.0-202.39.143.255 1235 | 202.51.67.0-202.51.67.255 1236 | 202.58.96.0-202.58.97.255 1237 | 202.67.41.0-202.67.41.255 1238 | 202.70.58.0-202.70.58.255 1239 | 202.76.239.0-202.76.239.255 1240 | 202.78.113.0-202.78.113.255 1241 | 202.86.162.0-202.86.162.255 1242 | 202.88.157.0-202.88.157.255 1243 | 202.88.186.0-202.88.186.255 1244 | 202.89.241.0-202.89.241.255 1245 | 202.93.153.0-202.93.153.255 1246 | 202.122.145.0-202.122.146.255 1247 | 202.148.204.0-202.148.204.255 1248 | 202.152.130.0-202.152.130.255 1249 | 202.152.192.0-202.152.192.255 1250 | 202.158.57.0-202.158.57.255 1251 | 202.163.174.0-202.163.174.255 1252 | 202.169.173.0-202.169.173.255 1253 | 202.169.175.0-202.169.175.255 1254 | 202.169.193.0-202.169.193.255 1255 | 202.208.170.0-202.208.170.255 1256 | 202.216.0.0-202.216.0.255 1257 | 202.220.161.0-202.220.161.255 1258 | 202.224.62.0-202.224.62.255 1259 | 202.224.83.0-202.224.83.255 1260 | 202.231.177.0-202.231.177.255 1261 | 202.248.151.0-202.248.151.255 1262 | 202.248.248.0-202.248.248.255 1263 | 203.2.228.0-203.2.228.255 1264 | 203.42.8.0-203.42.8.255 1265 | 203.42.38.0-203.42.38.255 1266 | 203.42.93.0-203.42.93.255 1267 | 203.66.124.0-203.66.124.255 1268 | 203.78.36.0-203.78.36.255 1269 | 203.82.75.0-203.82.75.255 1270 | 203.82.77.0-203.82.77.255 1271 | 203.94.209.0-203.94.209.255 1272 | 203.113.160.0-203.113.161.255 1273 | 203.114.135.0-203.114.135.255 1274 | 203.116.165.0-203.116.165.255 1275 | 203.117.34.0-203.117.34.255 1276 | 203.117.36.0-203.117.37.255 1277 | 203.133.8.0-203.133.8.255 1278 | 203.133.72.0-203.133.72.255 1279 | 203.139.206.0-203.139.206.255 1280 | 203.146.98.0-203.146.98.255 1281 | 203.151.116.0-203.151.116.255 1282 | 203.165.13.0-203.165.14.255 1283 | 203.176.178.0-203.176.178.255 1284 | 203.176.180.0-203.176.180.255 1285 | 203.192.223.0-203.192.223.255 1286 | 203.210.2.0-203.210.2.255 1287 | 203.210.4.0-203.210.4.255 1288 | 203.211.0.0-203.211.0.255 1289 | 203.211.8.0-203.211.8.255 1290 | 203.217.98.0-203.217.98.255 1291 | 203.233.10.0-203.233.10.255 1292 | 203.233.18.0-203.233.18.255 1293 | 203.233.63.0-203.233.63.255 1294 | 203.233.88.0-203.233.88.255 1295 | 203.233.126.0-203.233.126.255 1296 | 203.248.180.0-203.248.180.255 1297 | 203.248.210.0-203.248.210.255 1298 | 204.9.80.0-204.9.80.255 1299 | 204.17.140.0-204.17.140.255 1300 | 204.85.30.0-204.85.30.255 1301 | 204.111.84.0-204.111.84.255 1302 | 204.186.48.0-204.186.48.255 1303 | 204.186.215.0-204.186.215.255 1304 | 205.158.11.0-205.158.11.255 1305 | 205.213.108.0-205.213.108.255 1306 | 205.213.114.0-205.213.114.255 1307 | 205.237.38.0-205.237.38.255 1308 | 205.237.60.0-205.237.60.255 1309 | 206.80.249.0-206.80.249.255 1310 | 206.111.13.0-206.111.13.255 1311 | 206.126.112.0-206.126.112.255 1312 | 206.131.134.0-206.131.134.255 1313 | 206.167.212.0-206.167.212.255 1314 | 206.169.145.0-206.169.145.255 1315 | 206.181.8.0-206.181.8.255 1316 | 206.248.149.0-206.248.149.255 1317 | 206.248.151.0-206.248.151.255 1318 | 207.34.103.0-207.34.103.255 1319 | 207.70.129.0-207.70.129.255 1320 | 207.134.64.0-207.134.64.255 1321 | 207.172.159.0-207.172.159.255 1322 | 207.172.195.0-207.172.195.255 1323 | 207.173.228.0-207.173.228.255 1324 | 207.181.192.0-207.181.192.255 1325 | 207.191.178.0-207.191.178.255 1326 | 207.192.241.0-207.192.241.255 1327 | 207.204.159.0-207.204.159.255 1328 | 207.237.69.0-207.237.69.255 1329 | 207.238.252.0-207.238.252.255 1330 | 207.249.186.0-207.249.186.255 1331 | 207.255.26.0-207.255.26.255 1332 | 208.53.243.0-208.53.243.255 1333 | 208.54.64.0-208.54.64.255 1334 | 208.65.152.0-208.65.155.255 1335 | 208.73.255.0-208.73.255.255 1336 | 208.90.107.0-208.90.107.255 1337 | 208.93.196.0-208.93.196.255 1338 | 208.94.168.0-208.94.168.255 1339 | 208.104.242.0-208.104.242.255 1340 | 208.111.59.0-208.111.59.255 1341 | 208.117.225.0-208.117.231.255 1342 | 208.117.234.0-208.117.234.255 1343 | 208.117.236.0-208.117.236.255 1344 | 208.117.238.0-208.117.239.255 1345 | 208.117.242.0-208.117.244.255 1346 | 208.117.250.0-208.117.250.255 1347 | 208.117.252.0-208.117.254.255 1348 | 208.138.46.0-208.138.46.255 1349 | 208.180.176.0-208.180.176.255 1350 | 208.187.128.0-208.187.128.255 1351 | 209.33.235.0-209.33.235.255 1352 | 209.52.189.0-209.52.189.255 1353 | 209.56.124.0-209.56.124.255 1354 | 209.81.111.0-209.81.111.255 1355 | 209.85.145.0-209.85.147.255 1356 | 209.85.225.0-209.85.231.255 1357 | 209.85.239.0-209.85.239.255 1358 | 209.91.176.0-209.91.176.255 1359 | 209.91.216.0-209.91.216.255 1360 | 209.116.150.0-209.116.150.255 1361 | 209.116.186.0-209.116.186.255 1362 | 209.118.7.0-209.118.7.255 1363 | 209.118.99.0-209.118.99.255 1364 | 209.118.208.0-209.118.208.255 1365 | 209.141.120.0-209.141.120.255 1366 | 209.148.195.0-209.148.195.255 1367 | 209.183.147.0-209.183.147.255 1368 | 209.191.218.0-209.191.218.255 1369 | 209.226.57.0-209.226.57.255 1370 | 210.2.185.0-210.2.185.255 1371 | 210.61.221.0-210.61.221.255 1372 | 210.92.119.0-210.92.119.255 1373 | 210.94.153.0-210.94.153.255 1374 | 210.139.253.0-210.139.253.255 1375 | 210.143.70.0-210.143.70.255 1376 | 210.143.147.0-210.143.147.255 1377 | 210.153.73.0-210.153.73.255 1378 | 210.158.146.0-210.158.146.255 1379 | 210.187.22.0-210.187.22.255 1380 | 210.187.25.0-210.187.25.255 1381 | 210.191.74.0-210.191.74.255 1382 | 210.236.185.0-210.236.185.255 1383 | 210.242.125.0-210.242.125.255 1384 | 210.242.127.0-210.242.128.255 1385 | 210.245.14.0-210.245.14.255 1386 | 210.253.46.0-210.253.46.255 1387 | 211.124.13.0-211.124.13.255 1388 | 211.175.187.0-211.175.187.255 1389 | 211.181.65.0-211.181.65.255 1390 | 211.239.234.0-211.239.234.255 1391 | 212.0.195.0-212.0.195.255 1392 | 212.1.249.0-212.1.250.255 1393 | 212.2.108.0-212.2.108.255 1394 | 212.6.83.0-212.6.83.255 1395 | 212.7.1.0-212.7.1.255 1396 | 212.9.14.0-212.9.14.255 1397 | 212.10.212.0-212.10.212.255 1398 | 212.15.170.0-212.15.170.255 1399 | 212.20.34.0-212.20.34.255 1400 | 212.30.5.0-212.30.5.255 1401 | 212.39.82.0-212.39.82.255 1402 | 212.40.1.0-212.40.1.255 1403 | 212.40.34.0-212.40.34.255 1404 | 212.40.98.0-212.40.98.255 1405 | 212.50.193.0-212.50.193.255 1406 | 212.52.60.0-212.52.60.255 1407 | 212.56.71.0-212.56.71.255 1408 | 212.56.131.0-212.56.132.255 1409 | 212.57.191.0-212.57.191.255 1410 | 212.88.109.0-212.88.109.255 1411 | 212.89.5.0-212.89.5.255 1412 | 212.92.207.0-212.92.207.255 1413 | 212.106.207.0-212.106.207.255 1414 | 212.106.221.0-212.106.221.255 1415 | 212.112.37.0-212.112.37.255 1416 | 212.113.7.0-212.113.7.255 1417 | 212.113.49.0-212.113.49.255 1418 | 212.113.52.0-212.113.52.255 1419 | 212.113.184.0-212.113.185.255 1420 | 212.120.241.0-212.120.241.255 1421 | 212.122.6.0-212.122.6.255 1422 | 212.122.14.0-212.122.14.255 1423 | 212.126.123.0-212.126.123.255 1424 | 212.142.160.0-212.142.160.255 1425 | 212.146.69.0-212.146.69.255 1426 | 212.188.7.0-212.188.7.255 1427 | 212.188.10.0-212.188.10.255 1428 | 212.188.15.0-212.188.15.255 1429 | 212.188.49.0-212.188.49.255 1430 | 212.191.227.0-212.191.227.255 1431 | 212.191.236.0-212.191.236.255 1432 | 212.247.8.0-212.247.8.255 1433 | 213.24.121.0-213.24.121.255 1434 | 213.30.5.0-213.30.5.255 1435 | 213.55.64.0-213.55.64.255 1436 | 213.59.210.0-213.59.210.255 1437 | 213.59.237.0-213.59.237.255 1438 | 213.81.154.0-213.81.154.255 1439 | 213.85.209.0-213.85.209.255 1440 | 213.94.75.0-213.94.75.255 1441 | 213.108.23.0-213.108.23.255 1442 | 213.152.1.0-213.152.1.255 1443 | 213.153.32.0-213.153.32.255 1444 | 213.155.151.0-213.155.151.255 1445 | 213.158.11.0-213.158.11.255 1446 | 213.158.189.0-213.158.189.255 1447 | 213.159.32.0-213.159.32.255 1448 | 213.163.23.0-213.163.23.255 1449 | 213.186.122.0-213.186.122.255 1450 | 213.190.196.0-213.190.196.255 1451 | 213.196.106.0-213.196.106.255 1452 | 213.208.156.0-213.208.156.255 1453 | 213.233.153.0-213.233.153.255 1454 | 213.240.44.0-213.240.44.255 1455 | 213.241.87.0-213.241.89.255 1456 | 213.242.89.0-213.242.89.255 1457 | 213.253.9.0-213.253.9.255 1458 | 216.11.246.0-216.11.246.255 1459 | 216.12.120.0-216.12.120.255 1460 | 216.21.170.0-216.21.170.255 1461 | 216.50.166.0-216.50.166.255 1462 | 216.58.192.0-216.58.194.255 1463 | 216.58.197.0-216.58.200.255 1464 | 216.58.202.0-216.58.203.255 1465 | 216.59.116.0-216.59.116.255 1466 | 216.68.10.0-216.68.10.255 1467 | 216.68.248.0-216.68.248.255 1468 | 216.93.235.0-216.93.235.255 1469 | 216.123.55.0-216.123.55.255 1470 | 216.123.194.0-216.123.194.255 1471 | 216.126.108.0-216.126.108.255 1472 | 216.147.171.0-216.147.171.255 1473 | 216.152.163.0-216.152.163.255 1474 | 216.177.189.0-216.177.189.255 1475 | 216.197.242.0-216.197.242.255 1476 | 216.211.1.0-216.211.1.255 1477 | 216.221.127.0-216.221.127.255 1478 | 216.229.87.0-216.229.87.255 1479 | 216.239.90.0-216.239.90.255 1480 | 216.254.140.0-216.254.140.255 1481 | 217.15.105.0-217.15.105.255 1482 | 217.16.73.0-217.16.73.255 1483 | 217.18.243.0-217.18.243.255 1484 | 217.19.150.0-217.19.150.255 1485 | 217.73.128.0-217.73.128.255 1486 | 217.73.160.0-217.73.160.255 1487 | 217.75.205.0-217.75.205.255 1488 | 217.115.45.0-217.115.45.255 1489 | 217.116.143.0-217.116.143.255 1490 | 217.119.118.0-217.119.118.255 1491 | 217.147.40.0-217.147.40.255 1492 | 217.174.48.0-217.174.48.255 1493 | 218.189.25.0-218.189.25.255 1494 | 218.208.3.0-218.208.3.255 1495 | 218.219.168.0-218.219.168.255 1496 | 218.253.0.0-218.253.0.255 1497 | 219.109.49.0-219.109.49.255 1498 | 219.117.33.0-219.117.33.255 1499 | 219.117.35.0-219.117.35.255 1500 | 219.124.146.0-219.124.146.255 1501 | 220.102.0.0-220.102.0.255 1502 | 220.148.241.0-220.148.241.255 1503 | 220.225.89.0-220.225.89.255 1504 | 220.255.0.0-220.255.0.255 1505 | 220.255.2.0-220.255.2.255 1506 | 220.255.5.0-220.255.6.255 1507 | 221.133.8.0-221.133.8.255 1508 | 222.165.163.0-222.165.163.255 1509 | 222.251.134.0-222.251.134.255 1510 | 222.255.120.0-222.255.120.255 1511 | 223.26.69.0-223.26.69.255 1512 | 223.27.237.0-223.27.237.255 1513 | 223.62.225.0-223.62.225.255 1514 | 223.196.4.0-223.196.4.255 1515 | 223.196.82.0-223.196.82.255 1516 | -------------------------------------------------------------------------------- /ip_range_origin.txt: -------------------------------------------------------------------------------- 1 | 1.9.22.0/24 2 | 1.9.24.0/24 3 | 1.9.57.0/24 4 | 1.9.131.0/24 5 | 1.179.248.0/22 6 | 1.179.252.0/23 7 | 1.255.22.0/24 8 | 1.255.33.0/24 9 | 2.127.237.0/24 10 | 2.127.251.0/24 11 | 2.127.252.0/24 12 | 4.31.38.0/24 13 | 4.31.115.0/24 14 | 4.34.16.0/24 15 | 4.35.2.0/24 16 | 4.35.21.0/24 17 | 4.35.108.0/24 18 | 4.35.153.0/24 19 | 4.53.36.0/24 20 | 4.53.56.0/24 21 | 4.53.79.0/24 22 | 4.53.166.0/24 23 | 4.53.202.0/24 24 | 4.59.40.0/24 25 | 4.59.67.0/24 26 | 4.59.90.0/24 27 | 5.20.5.0/24 28 | 5.22.190.0/24 29 | 5.102.167.0/24 30 | 5.102.252.0/24 31 | 5.157.98.0/24 32 | 5.226.127.0/24 33 | 8.35.80.0/24 34 | 23.228.129.0/24 35 | 23.236.5.0/24 36 | 24.35.3.0/24 37 | 24.41.214.0/24 38 | 24.48.248.0/24 39 | 24.53.238.0/24 40 | 24.100.187.0/24 41 | 24.116.134.0/24 42 | 24.139.135.0/24 43 | 24.149.5.0/24 44 | 24.155.92.0/24 45 | 24.156.131.0/24 46 | 24.156.153.0/24 47 | 24.214.95.0/24 48 | 24.220.112.0/24 49 | 24.225.16.0/24 50 | 24.226.15.0/24 51 | 24.226.16.0/24 52 | 24.244.4.0/24 53 | 24.244.19.0/24 54 | 24.244.152.0/24 55 | 27.80.250.0/24 56 | 27.90.140.0/22 57 | 27.90.189.0/24 58 | 27.100.64.0/24 59 | 27.106.94.0/24 60 | 27.121.46.0/24 61 | 27.121.51.0/24 62 | 27.121.54.0/24 63 | 27.123.17.0/24 64 | 27.123.212.0/24 65 | 27.131.16.0/24 66 | 31.7.160.0/24 67 | 31.24.56.0/24 68 | 31.31.48.0/24 69 | 31.46.5.0/24 70 | 31.46.22.0/24 71 | 31.55.162.0/23 72 | 31.55.166.0/23 73 | 31.55.184.0/24 74 | 31.172.32.0/24 75 | 31.209.137.0/24 76 | 31.210.208.0/24 77 | 31.211.248.0/24 78 | 36.37.218.0/24 79 | 36.68.81.0/24 80 | 36.68.95.0/24 81 | 36.68.97.0/24 82 | 36.68.98.0/24 83 | 36.68.102.0/24 84 | 36.68.110.0/23 85 | 36.68.115.0/24 86 | 36.68.122.0/24 87 | 36.68.127.0/24 88 | 36.75.19.0/24 89 | 36.75.20.0/24 90 | 36.75.24.0/23 91 | 36.75.31.0/24 92 | 36.75.56.0/24 93 | 36.75.98.0/24 94 | 36.76.161.0/24 95 | 36.76.168.0/23 96 | 36.76.171.0/24 97 | 36.82.34.0/24 98 | 36.82.42.0/24 99 | 36.82.44.0/24 100 | 36.82.47.0/24 101 | 36.82.232.0/24 102 | 36.82.238.0/24 103 | 36.83.12.0/24 104 | 36.83.17.0/24 105 | 36.83.26.0/24 106 | 36.85.116.0/24 107 | 36.85.119.0/24 108 | 36.85.227.0/24 109 | 37.8.144.0/24 110 | 37.29.1.0/24 111 | 37.58.167.0/24 112 | 37.139.254.0/24 113 | 37.157.151.0/24 114 | 37.228.69.0/24 115 | 38.68.16.0/24 116 | 40.133.6.0/24 117 | 40.136.3.0/24 118 | 41.71.136.0/24 119 | 41.74.24.0/24 120 | 41.77.223.0/24 121 | 41.78.62.0/24 122 | 41.84.159.0/24 123 | 41.84.195.0/24 124 | 41.87.140.0/24 125 | 41.128.200.0/24 126 | 41.160.35.0/24 127 | 41.184.60.0/24 128 | 41.187.111.0/24 129 | 41.188.12.0/24 130 | 41.189.63.0/24 131 | 41.189.230.0/24 132 | 41.191.219.0/24 133 | 41.201.128.0/23 134 | 41.201.164.0/24 135 | 41.205.32.0/24 136 | 41.206.47.0/24 137 | 41.206.64.0/24 138 | 41.206.96.0/24 139 | 41.214.4.0/24 140 | 41.219.127.0/24 141 | 41.220.75.0/24 142 | 41.221.166.0/24 143 | 41.221.196.0/24 144 | 41.223.219.0/24 145 | 41.254.36.0/24 146 | 42.112.8.0/23 147 | 42.112.10.0/24 148 | 42.119.211.0/24 149 | 43.245.144.0/24 150 | 43.245.193.0/24 151 | 43.245.201.0/24 152 | 45.56.65.0/24 153 | 45.56.121.0/24 154 | 45.56.123.0/24 155 | 45.64.20.0/24 156 | 45.64.34.0/24 157 | 45.120.85.0/24 158 | 46.16.9.0/24 159 | 46.21.52.0/24 160 | 46.29.169.0/24 161 | 46.61.155.0/24 162 | 46.108.1.0/24 163 | 46.149.88.0/24 164 | 46.227.113.0/24 165 | 46.229.224.0/24 166 | 46.236.127.0/24 167 | 46.237.127.0/24 168 | 46.238.143.0/24 169 | 46.249.95.0/24 170 | 46.249.159.0/24 171 | 46.249.239.0/24 172 | 49.98.24.0/23 173 | 49.98.35.0/24 174 | 49.106.234.0/24 175 | 49.231.56.0/24 176 | 49.231.60.0/24 177 | 49.243.141.0/24 178 | 50.0.2.0/24 179 | 50.22.229.0/24 180 | 50.27.150.0/24 181 | 50.86.10.0/24 182 | 54.204.39.0/24 183 | 58.27.27.0/24 184 | 58.27.61.0/24 185 | 58.27.108.0/23 186 | 58.69.77.0/24 187 | 58.123.102.0/24 188 | 58.145.238.0/24 189 | 58.162.16.0/24 190 | 58.162.62.0/24 191 | 58.176.217.0/24 192 | 59.18.34.0/23 193 | 59.18.44.0/24 194 | 59.190.145.0/24 195 | 60.199.175.0/24 196 | 61.7.18.0/24 197 | 61.19.1.0/24 198 | 61.19.2.0/24 199 | 61.33.130.0/24 200 | 61.36.166.0/24 201 | 61.37.150.0/24 202 | 61.41.59.0/24 203 | 61.47.115.0/24 204 | 61.86.203.0/24 205 | 61.91.8.0/23 206 | 61.91.18.0/24 207 | 61.91.161.0/24 208 | 61.94.86.0/24 209 | 61.114.99.0/24 210 | 61.122.213.0/24 211 | 61.205.127.0/24 212 | 61.219.131.0/24 213 | 61.238.203.0/24 214 | 61.238.239.0/24 215 | 61.245.3.0/24 216 | 62.1.38.0/24 217 | 62.8.95.0/24 218 | 62.24.155.0/24 219 | 62.24.158.0/24 220 | 62.65.192.0/24 221 | 62.75.10.0/24 222 | 62.78.98.0/24 223 | 62.84.6.0/24 224 | 62.94.9.0/24 225 | 62.101.158.0/24 226 | 62.117.4.0/24 227 | 62.119.230.0/24 228 | 62.133.128.0/24 229 | 62.149.79.0/24 230 | 62.164.169.0/24 231 | 62.168.125.0/24 232 | 62.197.198.0/24 233 | 62.201.216.0/24 234 | 62.212.252.0/24 235 | 62.214.62.0/24 236 | 62.231.75.0/24 237 | 62.231.91.0/24 238 | 62.240.68.0/24 239 | 62.243.26.0/24 240 | 62.252.169.0/24 241 | 62.252.170.0/24 242 | 62.252.173.0/24 243 | 62.252.191.0/24 244 | 62.252.232.0/24 245 | 62.253.3.0/24 246 | 62.253.72.0/24 247 | 63.84.3.0/24 248 | 63.88.73.0/24 249 | 63.96.4.0/24 250 | 63.110.67.0/24 251 | 63.117.14.0/24 252 | 63.117.68.0/24 253 | 63.117.215.0/24 254 | 63.135.48.0/24 255 | 63.143.72.0/24 256 | 64.13.74.0/23 257 | 64.15.112.0/23 258 | 64.15.114.0/24 259 | 64.15.116.0/22 260 | 64.15.120.0/22 261 | 64.15.124.0/24 262 | 64.15.126.0/23 263 | 64.18.1.0/24 264 | 64.20.30.0/24 265 | 64.53.1.0/24 266 | 64.53.242.0/24 267 | 64.53.251.0/24 268 | 64.71.249.0/24 269 | 64.76.226.0/24 270 | 64.203.194.0/24 271 | 64.233.160.0/21 272 | 64.233.168.0/23 273 | 64.233.171.0/24 274 | 64.233.176.0/20 275 | 64.246.133.0/24 276 | 65.39.199.0/24 277 | 65.60.171.0/24 278 | 65.87.229.0/24 279 | 65.183.12.0/24 280 | 65.196.188.0/24 281 | 65.199.32.0/24 282 | 65.199.248.0/24 283 | 66.8.14.0/24 284 | 66.38.63.0/24 285 | 66.44.205.0/24 286 | 66.58.255.0/24 287 | 66.76.34.0/24 288 | 66.76.194.0/24 289 | 66.76.246.0/24 290 | 66.96.224.0/24 291 | 66.97.30.0/24 292 | 66.102.1.0/24 293 | 66.102.12.0/24 294 | 66.112.178.0/24 295 | 66.153.250.0/24 296 | 66.185.84.0/23 297 | 66.185.95.0/24 298 | 66.187.114.0/24 299 | 66.199.151.0/24 300 | 67.50.19.0/24 301 | 67.89.227.0/24 302 | 67.204.184.0/24 303 | 67.212.255.0/24 304 | 67.218.93.0/24 305 | 67.221.221.0/24 306 | 67.224.250.0/24 307 | 68.65.49.0/24 308 | 69.46.66.0/24 309 | 69.65.64.0/24 310 | 69.79.200.0/24 311 | 69.85.196.0/24 312 | 69.160.212.0/24 313 | 69.176.0.0/24 314 | 70.34.140.0/24 315 | 70.186.10.0/24 316 | 70.186.24.0/24 317 | 70.186.26.0/24 318 | 70.186.28.0/24 319 | 70.186.30.0/24 320 | 71.19.173.0/24 321 | 71.19.176.0/24 322 | 71.22.7.0/24 323 | 72.14.225.0/24 324 | 72.14.228.0/23 325 | 72.22.27.0/24 326 | 72.195.166.0/24 327 | 72.234.39.0/24 328 | 74.51.119.0/24 329 | 74.85.65.0/24 330 | 74.124.63.0/24 331 | 74.125.0.0/21 332 | 74.125.8.0/23 333 | 74.125.11.0/24 334 | 74.125.12.0/23 335 | 74.125.14.0/24 336 | 74.125.20.0/22 337 | 74.125.24.0/23 338 | 74.125.26.0/24 339 | 74.125.28.0/23 340 | 74.125.30.0/24 341 | 74.125.34.0/24 342 | 74.125.63.0/24 343 | 74.125.68.0/22 344 | 74.125.96.0/21 345 | 74.125.104.0/22 346 | 74.125.108.0/24 347 | 74.125.110.0/23 348 | 74.125.120.0/23 349 | 74.125.122.0/24 350 | 74.125.127.0/24 351 | 74.125.129.0/24 352 | 74.125.130.0/24 353 | 74.125.133.0/24 354 | 74.125.134.0/23 355 | 74.125.136.0/24 356 | 74.125.138.0/23 357 | 74.125.140.0/22 358 | 74.125.152.0/22 359 | 74.125.156.0/24 360 | 74.125.160.0/20 361 | 74.125.193.0/24 362 | 74.125.194.0/23 363 | 74.125.196.0/24 364 | 74.125.198.0/24 365 | 74.125.200.0/21 366 | 74.125.209.0/24 367 | 74.125.212.0/22 368 | 74.125.216.0/24 369 | 74.125.218.0/24 370 | 74.125.224.0/22 371 | 74.125.228.0/23 372 | 74.125.230.0/24 373 | 74.125.232.0/24 374 | 74.125.237.0/24 375 | 74.125.238.0/23 376 | 74.205.129.0/24 377 | 74.216.233.0/24 378 | 75.76.44.0/24 379 | 76.75.38.0/24 380 | 76.165.14.0/24 381 | 77.37.250.0/24 382 | 77.37.252.0/24 383 | 77.42.249.0/24 384 | 77.42.253.0/24 385 | 77.53.0.0/24 386 | 77.66.9.0/24 387 | 77.67.49.0/24 388 | 77.68.246.0/24 389 | 77.68.251.0/24 390 | 77.77.7.0/24 391 | 77.77.193.0/24 392 | 77.88.221.0/24 393 | 77.91.67.0/24 394 | 77.111.2.0/24 395 | 77.153.128.0/24 396 | 77.214.53.0/24 397 | 77.237.27.0/24 398 | 77.239.64.0/24 399 | 77.242.30.0/24 400 | 77.252.2.0/24 401 | 78.11.253.0/24 402 | 78.37.112.0/24 403 | 78.83.4.0/24 404 | 78.90.240.0/24 405 | 78.133.98.0/24 406 | 78.136.92.0/24 407 | 79.101.110.0/23 408 | 79.106.107.0/24 409 | 79.121.0.0/24 410 | 79.136.239.0/24 411 | 79.171.121.0/24 412 | 79.171.163.0/24 413 | 80.64.175.0/24 414 | 80.89.192.0/24 415 | 80.91.176.0/24 416 | 80.93.31.0/24 417 | 80.96.255.0/24 418 | 80.97.208.0/24 419 | 80.149.20.0/24 420 | 80.202.12.0/24 421 | 80.228.66.0/24 422 | 80.233.168.0/24 423 | 80.239.174.0/24 424 | 80.239.229.0/24 425 | 80.252.129.0/24 426 | 80.253.30.0/24 427 | 81.3.201.0/24 428 | 81.10.128.0/24 429 | 81.12.207.0/24 430 | 81.12.228.0/24 431 | 81.20.240.0/24 432 | 81.24.29.0/24 433 | 81.30.226.0/24 434 | 81.167.38.0/24 435 | 81.175.29.0/24 436 | 81.180.120.0/24 437 | 81.192.190.0/23 438 | 81.209.95.0/24 439 | 82.76.79.0/24 440 | 82.77.159.0/24 441 | 82.94.228.0/24 442 | 82.94.234.0/24 443 | 82.113.19.0/24 444 | 82.117.119.0/24 445 | 82.129.130.0/24 446 | 82.135.118.0/24 447 | 82.147.54.0/24 448 | 82.193.82.0/24 449 | 82.206.179.0/24 450 | 82.221.224.0/24 451 | 83.94.121.0/24 452 | 83.100.221.0/24 453 | 83.139.106.0/24 454 | 83.140.66.0/24 455 | 83.145.196.0/24 456 | 83.175.145.0/24 457 | 83.233.164.0/24 458 | 83.243.205.0/24 459 | 84.2.2.0/24 460 | 84.15.64.0/24 461 | 84.46.102.0/24 462 | 84.54.161.0/24 463 | 84.208.42.0/24 464 | 84.235.58.0/24 465 | 84.235.77.0/24 466 | 84.244.61.0/24 467 | 85.14.28.0/24 468 | 85.91.7.0/24 469 | 85.112.116.0/24 470 | 85.112.121.0/24 471 | 85.134.33.0/24 472 | 85.158.132.0/24 473 | 85.172.1.0/24 474 | 85.182.250.0/24 475 | 85.187.222.0/24 476 | 85.233.229.0/24 477 | 85.239.127.0/24 478 | 85.254.3.0/24 479 | 86.38.6.0/24 480 | 86.51.24.0/24 481 | 86.51.68.0/24 482 | 86.60.255.0/24 483 | 86.127.118.0/24 484 | 87.72.143.0/24 485 | 87.79.22.0/24 486 | 87.104.252.0/24 487 | 87.119.3.0/24 488 | 87.126.158.0/24 489 | 87.245.195.0/24 490 | 87.245.196.0/23 491 | 87.245.198.0/24 492 | 87.245.200.0/24 493 | 87.251.132.0/24 494 | 88.132.65.0/24 495 | 88.212.9.0/24 496 | 88.216.174.0/24 497 | 88.217.135.0/24 498 | 88.222.2.0/24 499 | 89.25.120.0/24 500 | 89.25.215.0/24 501 | 89.47.210.0/24 502 | 89.127.198.0/24 503 | 89.201.175.0/24 504 | 89.212.69.0/24 505 | 89.228.4.0/24 506 | 90.150.4.0/24 507 | 90.157.217.0/24 508 | 90.201.124.0/24 509 | 90.211.177.0/24 510 | 90.222.188.0/24 511 | 90.223.244.0/24 512 | 91.185.100.0/24 513 | 91.189.221.0/24 514 | 91.205.69.0/24 515 | 91.213.30.0/24 516 | 91.230.210.0/24 517 | 91.245.214.0/24 518 | 92.46.70.0/24 519 | 92.53.32.0/24 520 | 92.87.156.0/24 521 | 92.87.232.0/24 522 | 92.126.121.0/24 523 | 92.197.129.0/24 524 | 92.246.5.0/24 525 | 93.87.90.0/24 526 | 93.88.162.0/23 527 | 93.89.223.0/24 528 | 93.91.155.0/24 529 | 93.123.23.0/24 530 | 93.183.211.0/24 531 | 93.191.15.0/24 532 | 94.20.252.0/24 533 | 94.21.255.0/24 534 | 94.25.137.0/24 535 | 94.40.70.0/24 536 | 94.53.12.0/24 537 | 94.73.222.0/24 538 | 94.129.130.0/24 539 | 94.140.100.0/24 540 | 94.156.188.0/24 541 | 94.232.220.0/24 542 | 94.236.232.0/24 543 | 94.245.201.0/24 544 | 95.54.196.0/24 545 | 95.67.12.0/24 546 | 95.107.145.0/24 547 | 95.143.84.0/24 548 | 95.153.46.0/24 549 | 95.154.114.0/24 550 | 95.158.47.0/24 551 | 95.158.130.0/24 552 | 95.168.222.0/24 553 | 95.170.193.0/24 554 | 95.180.157.0/24 555 | 95.209.200.0/24 556 | 96.43.49.0/24 557 | 96.127.250.0/24 558 | 97.75.181.0/24 559 | 98.124.44.0/24 560 | 101.78.13.0/24 561 | 101.99.49.0/24 562 | 103.1.139.0/24 563 | 103.2.116.0/24 564 | 103.11.28.0/24 565 | 103.11.30.0/24 566 | 103.13.250.0/24 567 | 103.16.204.0/23 568 | 103.16.207.0/24 569 | 103.21.25.0/24 570 | 103.25.178.0/24 571 | 103.28.94.0/24 572 | 103.30.113.0/24 573 | 103.233.37.0/24 574 | 103.244.49.0/24 575 | 103.250.184.0/24 576 | 104.237.160.0/24 577 | 104.237.172.0/24 578 | 104.237.174.0/24 579 | 104.237.188.0/23 580 | 105.187.242.0/24 581 | 105.203.250.0/24 582 | 106.103.1.0/24 583 | 106.103.2.0/24 584 | 106.162.192.0/24 585 | 106.162.198.0/23 586 | 106.162.200.0/24 587 | 106.162.216.0/24 588 | 107.161.13.0/24 589 | 108.177.9.0/24 590 | 108.177.10.0/23 591 | 108.177.12.0/24 592 | 109.95.77.0/24 593 | 109.105.109.0/24 594 | 109.110.33.0/24 595 | 109.163.221.0/24 596 | 109.193.192.0/23 597 | 109.199.81.0/24 598 | 109.225.113.0/24 599 | 109.226.232.0/24 600 | 109.231.231.0/24 601 | 110.50.81.0/24 602 | 110.137.35.0/24 603 | 110.137.39.0/24 604 | 110.139.114.0/23 605 | 110.163.42.0/24 606 | 110.164.4.0/22 607 | 110.164.8.0/23 608 | 110.164.10.0/24 609 | 110.164.12.0/23 610 | 110.164.14.0/24 611 | 110.164.16.0/24 612 | 110.232.86.0/24 613 | 111.86.157.0/24 614 | 111.86.247.0/24 615 | 111.90.117.0/24 616 | 111.92.162.0/24 617 | 111.94.248.0/24 618 | 111.107.254.0/24 619 | 111.168.255.0/24 620 | 113.59.211.0/24 621 | 113.171.18.0/23 622 | 113.171.239.0/24 623 | 113.171.241.0/24 624 | 113.171.242.0/23 625 | 113.171.244.0/22 626 | 113.171.251.0/24 627 | 113.171.252.0/24 628 | 114.4.4.0/24 629 | 114.4.41.0/24 630 | 114.108.207.0/24 631 | 114.120.192.0/24 632 | 114.121.194.0/24 633 | 115.84.108.0/24 634 | 115.88.207.0/24 635 | 115.164.12.0/24 636 | 115.164.140.0/24 637 | 115.166.169.0/24 638 | 115.178.26.0/23 639 | 115.254.97.0/24 640 | 115.254.106.0/24 641 | 115.254.121.0/24 642 | 116.92.194.0/24 643 | 116.93.47.0/24 644 | 116.202.230.0/24 645 | 116.212.229.0/24 646 | 116.251.217.0/24 647 | 117.102.117.0/24 648 | 118.69.249.0/24 649 | 118.98.26.0/24 650 | 118.98.30.0/24 651 | 118.98.36.0/24 652 | 118.98.76.0/23 653 | 118.98.106.0/24 654 | 118.98.110.0/23 655 | 118.107.75.0/24 656 | 118.107.111.0/24 657 | 118.143.88.0/24 658 | 118.174.25.0/24 659 | 118.174.27.0/24 660 | 119.9.76.0/24 661 | 119.15.80.0/24 662 | 119.40.97.0/24 663 | 119.110.118.0/24 664 | 119.149.188.0/24 665 | 119.161.83.0/24 666 | 119.235.103.0/24 667 | 120.28.5.0/24 668 | 121.78.52.0/24 669 | 121.78.71.0/24 670 | 121.78.74.0/24 671 | 121.78.206.0/24 672 | 122.56.115.0/24 673 | 122.154.244.0/24 674 | 122.168.100.0/24 675 | 122.251.255.0/24 676 | 123.205.250.0/23 677 | 123.231.239.0/24 678 | 124.40.230.0/24 679 | 124.40.245.0/24 680 | 124.158.72.0/24 681 | 124.248.162.0/24 682 | 125.99.110.0/24 683 | 125.160.59.0/24 684 | 125.161.23.0/24 685 | 125.234.50.0/24 686 | 125.234.52.0/23 687 | 125.234.54.0/24 688 | 125.235.17.0/24 689 | 125.235.30.0/23 690 | 125.235.36.0/24 691 | 128.0.86.0/24 692 | 128.0.90.0/24 693 | 128.0.169.0/24 694 | 128.210.224.0/24 695 | 129.66.96.0/24 696 | 130.111.19.0/24 697 | 130.206.193.0/24 698 | 134.90.151.0/24 699 | 135.0.199.0/24 700 | 137.207.250.0/24 701 | 139.175.107.0/24 702 | 140.113.14.0/24 703 | 140.197.248.0/24 704 | 142.163.38.0/24 705 | 142.166.12.0/24 706 | 142.166.129.0/24 707 | 142.166.149.0/24 708 | 142.176.121.0/24 709 | 143.215.193.0/24 710 | 144.131.80.0/24 711 | 146.115.8.0/24 712 | 148.123.25.0/24 713 | 148.123.29.0/24 714 | 148.245.203.0/24 715 | 149.3.176.0/23 716 | 149.126.86.0/24 717 | 149.165.180.0/24 718 | 150.100.16.0/24 719 | 150.101.213.0/24 720 | 150.199.24.0/24 721 | 151.21.210.0/24 722 | 151.50.168.0/24 723 | 151.248.100.0/24 724 | 154.65.36.0/24 725 | 154.66.245.0/24 726 | 154.67.1.0/24 727 | 154.73.81.0/24 728 | 155.232.240.0/24 729 | 157.157.135.0/24 730 | 157.161.155.0/24 731 | 157.197.92.0/23 732 | 159.134.168.0/24 733 | 159.148.69.0/24 734 | 159.180.253.0/24 735 | 161.132.34.0/24 736 | 162.212.208.0/24 737 | 162.221.128.0/24 738 | 162.252.127.0/24 739 | 163.28.38.0/24 740 | 163.28.83.0/24 741 | 163.28.116.0/24 742 | 164.40.244.0/24 743 | 164.58.87.0/24 744 | 164.85.63.0/24 745 | 164.113.94.0/24 746 | 165.98.72.0/24 747 | 165.139.0.0/24 748 | 165.165.38.0/24 749 | 167.142.232.0/24 750 | 167.206.10.0/24 751 | 167.206.12.0/24 752 | 167.206.145.0/24 753 | 167.206.245.0/24 754 | 167.206.252.0/24 755 | 172.56.136.0/24 756 | 173.192.69.0/24 757 | 173.194.0.0/20 758 | 173.194.16.0/22 759 | 173.194.20.0/23 760 | 173.194.22.0/24 761 | 173.194.25.0/24 762 | 173.194.26.0/23 763 | 173.194.28.0/23 764 | 173.194.31.0/24 765 | 173.194.32.0/23 766 | 173.194.36.0/22 767 | 173.194.40.0/24 768 | 173.194.42.0/23 769 | 173.194.44.0/23 770 | 173.194.46.0/24 771 | 173.194.48.0/23 772 | 173.194.51.0/24 773 | 173.194.52.0/22 774 | 173.194.56.0/21 775 | 173.194.64.0/23 776 | 173.194.67.0/24 777 | 173.194.69.0/24 778 | 173.194.70.0/23 779 | 173.194.72.0/24 780 | 173.194.74.0/23 781 | 173.194.77.0/24 782 | 173.194.79.0/24 783 | 173.194.112.0/23 784 | 173.194.115.0/24 785 | 173.194.116.0/22 786 | 173.194.120.0/22 787 | 173.194.124.0/24 788 | 173.194.126.0/24 789 | 173.194.128.0/20 790 | 173.194.144.0/24 791 | 173.194.146.0/23 792 | 173.194.148.0/22 793 | 173.194.152.0/23 794 | 173.194.154.0/24 795 | 173.194.156.0/23 796 | 173.194.158.0/24 797 | 173.194.192.0/22 798 | 173.194.196.0/23 799 | 173.194.199.0/24 800 | 173.194.200.0/21 801 | 173.194.208.0/21 802 | 173.194.216.0/22 803 | 173.194.220.0/24 804 | 173.194.222.0/23 805 | 173.218.248.0/24 806 | 173.219.91.0/24 807 | 173.219.93.0/24 808 | 173.219.133.0/24 809 | 173.219.167.0/24 810 | 173.224.96.0/24 811 | 173.227.93.0/24 812 | 173.227.247.0/24 813 | 173.237.115.0/24 814 | 173.255.204.0/24 815 | 174.140.109.0/24 816 | 175.28.1.0/24 817 | 176.28.77.0/24 818 | 176.126.59.0/24 819 | 176.221.96.0/24 820 | 176.255.201.0/24 821 | 177.21.244.0/24 822 | 177.35.32.0/24 823 | 177.35.203.0/24 824 | 177.36.3.0/24 825 | 177.36.217.0/24 826 | 177.43.115.0/24 827 | 177.43.165.0/24 828 | 177.43.170.0/24 829 | 177.43.196.0/24 830 | 177.43.235.0/24 831 | 177.43.239.0/24 832 | 177.71.7.0/24 833 | 177.91.160.0/24 834 | 177.91.191.0/24 835 | 177.99.179.0/24 836 | 177.99.185.0/24 837 | 177.99.203.0/24 838 | 177.100.48.0/24 839 | 177.101.143.0/24 840 | 177.107.191.0/24 841 | 177.124.192.0/24 842 | 177.126.126.0/24 843 | 177.128.223.0/24 844 | 177.131.1.0/24 845 | 177.135.84.0/24 846 | 177.135.94.0/24 847 | 177.135.103.0/24 848 | 177.135.107.0/24 849 | 177.135.110.0/24 850 | 177.135.135.0/24 851 | 177.135.151.0/24 852 | 177.135.177.0/24 853 | 177.135.245.0/24 854 | 177.136.113.0/24 855 | 177.155.0.0/24 856 | 177.155.141.0/24 857 | 177.159.161.0/24 858 | 177.159.162.0/24 859 | 177.159.237.0/24 860 | 178.22.222.0/24 861 | 178.23.236.0/24 862 | 178.35.137.0/24 863 | 178.45.249.0/24 864 | 178.45.251.0/24 865 | 178.45.253.0/24 866 | 178.60.128.0/24 867 | 178.60.195.0/24 868 | 178.74.30.0/24 869 | 178.132.81.0/24 870 | 178.209.67.0/24 871 | 178.235.206.0/24 872 | 178.236.130.0/24 873 | 178.250.208.0/24 874 | 179.6.63.0/24 875 | 179.60.91.0/24 876 | 179.96.24.0/24 877 | 179.96.35.0/24 878 | 179.97.196.0/24 879 | 179.106.47.0/24 880 | 179.124.138.0/24 881 | 179.124.224.0/24 882 | 179.127.142.0/24 883 | 179.154.191.0/24 884 | 179.183.24.0/24 885 | 179.184.10.0/24 886 | 179.185.163.0/24 887 | 180.93.32.0/24 888 | 180.149.59.0/24 889 | 180.149.61.0/24 890 | 180.150.1.0/24 891 | 180.180.248.0/24 892 | 180.188.250.0/24 893 | 180.235.254.0/24 894 | 180.241.35.0/24 895 | 180.241.39.0/24 896 | 180.241.121.0/24 897 | 180.246.148.0/23 898 | 180.246.189.0/24 899 | 180.248.129.0/24 900 | 180.248.133.0/24 901 | 180.248.135.0/24 902 | 180.248.136.0/24 903 | 180.251.67.0/24 904 | 180.251.70.0/24 905 | 181.15.96.0/24 906 | 181.15.215.0/24 907 | 181.15.220.0/23 908 | 181.30.240.0/23 909 | 181.30.242.0/24 910 | 181.47.248.0/24 911 | 181.48.252.0/24 912 | 181.48.254.0/23 913 | 181.64.130.0/23 914 | 181.64.132.0/24 915 | 181.114.54.0/24 916 | 181.176.244.0/24 917 | 181.188.0.0/24 918 | 181.192.63.0/24 919 | 181.198.79.0/24 920 | 181.198.80.0/24 921 | 181.224.253.0/24 922 | 182.50.94.0/24 923 | 182.79.251.0/24 924 | 182.79.253.0/24 925 | 182.79.254.0/24 926 | 182.163.240.0/24 927 | 182.176.130.0/24 928 | 182.248.204.0/24 929 | 183.78.5.0/24 930 | 183.87.151.0/24 931 | 183.91.18.0/24 932 | 183.182.96.0/24 933 | 184.150.152.0/23 934 | 184.150.182.0/23 935 | 184.150.186.0/24 936 | 184.170.67.0/24 937 | 185.1.11.0/24 938 | 185.2.108.0/24 939 | 185.3.1.0/24 940 | 185.13.132.0/24 941 | 185.37.85.0/24 942 | 185.38.0.0/24 943 | 185.42.244.0/24 944 | 185.48.9.0/24 945 | 185.73.88.0/24 946 | 185.95.204.0/24 947 | 186.1.197.0/24 948 | 186.2.131.0/24 949 | 186.15.250.0/24 950 | 186.27.124.0/24 951 | 186.32.236.0/24 952 | 186.46.140.0/23 953 | 186.68.154.0/24 954 | 186.68.247.0/24 955 | 186.73.72.0/24 956 | 186.73.79.0/24 957 | 186.96.91.0/24 958 | 186.151.236.0/24 959 | 186.160.223.0/24 960 | 186.176.224.0/24 961 | 186.177.65.0/24 962 | 186.178.0.0/24 963 | 186.192.145.0/24 964 | 186.194.48.0/24 965 | 186.207.162.0/24 966 | 186.215.92.0/24 967 | 186.215.155.0/24 968 | 186.215.194.0/24 969 | 186.215.208.0/24 970 | 186.225.43.0/24 971 | 186.225.147.0/24 972 | 186.226.128.0/24 973 | 186.232.197.0/24 974 | 186.235.31.0/24 975 | 186.251.10.0/24 976 | 187.1.89.0/24 977 | 187.2.74.0/24 978 | 187.7.117.0/24 979 | 187.17.155.0/24 980 | 187.18.184.0/24 981 | 187.19.96.0/24 982 | 187.19.145.0/24 983 | 187.33.247.0/24 984 | 187.44.0.0/24 985 | 187.58.66.0/24 986 | 187.66.78.0/24 987 | 187.72.192.0/24 988 | 187.86.12.0/24 989 | 187.86.49.0/24 990 | 187.110.64.0/24 991 | 187.110.238.0/24 992 | 187.115.167.0/24 993 | 187.123.28.0/24 994 | 187.160.243.0/24 995 | 187.160.254.0/24 996 | 187.254.78.0/24 997 | 188.21.9.0/24 998 | 188.43.64.0/23 999 | 188.43.66.0/24 1000 | 188.47.193.0/24 1001 | 188.47.194.0/24 1002 | 188.93.174.0/24 1003 | 188.112.3.0/24 1004 | 188.113.128.0/24 1005 | 188.247.240.0/24 1006 | 189.1.145.0/24 1007 | 189.5.130.0/24 1008 | 189.7.75.0/24 1009 | 189.14.52.0/24 1010 | 189.26.123.0/24 1011 | 189.34.253.0/24 1012 | 189.38.33.0/24 1013 | 189.39.126.0/24 1014 | 189.45.193.0/24 1015 | 189.51.155.0/24 1016 | 189.58.99.0/24 1017 | 189.59.93.0/24 1018 | 189.63.251.0/24 1019 | 189.73.192.0/24 1020 | 189.76.142.0/24 1021 | 189.86.41.0/24 1022 | 189.89.161.0/24 1023 | 189.90.243.0/24 1024 | 189.103.27.0/24 1025 | 189.115.42.0/24 1026 | 189.124.133.0/24 1027 | 189.193.189.0/24 1028 | 189.194.54.0/24 1029 | 189.194.94.0/24 1030 | 189.195.96.0/24 1031 | 189.195.222.0/24 1032 | 189.196.168.0/24 1033 | 189.196.189.0/24 1034 | 189.197.77.0/24 1035 | 189.197.79.0/24 1036 | 189.197.190.0/24 1037 | 189.198.236.0/24 1038 | 189.198.250.0/24 1039 | 189.199.19.0/24 1040 | 189.199.71.0/24 1041 | 189.199.81.0/24 1042 | 189.199.103.0/24 1043 | 189.199.105.0/24 1044 | 189.199.250.0/24 1045 | 189.203.167.0/24 1046 | 189.203.232.0/24 1047 | 189.215.132.0/24 1048 | 189.215.200.0/24 1049 | 189.247.133.0/24 1050 | 189.247.134.0/23 1051 | 189.247.136.0/24 1052 | 189.247.138.0/24 1053 | 189.247.144.0/22 1054 | 189.247.148.0/24 1055 | 189.247.160.0/23 1056 | 189.247.168.0/23 1057 | 190.45.0.0/24 1058 | 190.57.158.0/24 1059 | 190.57.224.0/24 1060 | 190.58.136.0/24 1061 | 190.92.89.0/24 1062 | 190.94.130.0/24 1063 | 190.94.176.0/24 1064 | 190.96.87.0/24 1065 | 190.96.100.0/24 1066 | 190.97.0.0/24 1067 | 190.98.163.0/24 1068 | 190.98.170.0/23 1069 | 190.104.150.0/24 1070 | 190.106.220.0/24 1071 | 190.108.82.0/24 1072 | 190.111.66.0/24 1073 | 190.116.191.0/24 1074 | 190.120.207.0/24 1075 | 190.121.11.0/24 1076 | 190.122.100.0/24 1077 | 190.129.124.0/24 1078 | 190.143.134.0/24 1079 | 190.145.255.0/24 1080 | 190.150.50.0/24 1081 | 190.166.41.0/24 1082 | 190.167.241.0/24 1083 | 190.186.210.0/24 1084 | 190.197.64.0/24 1085 | 190.211.175.0/24 1086 | 190.212.166.0/24 1087 | 190.221.162.0/24 1088 | 190.235.154.0/24 1089 | 190.240.1.0/24 1090 | 190.240.2.0/24 1091 | 190.240.6.0/24 1092 | 190.241.121.0/24 1093 | 190.248.1.0/24 1094 | 190.248.34.0/23 1095 | 191.33.177.0/24 1096 | 191.99.255.0/24 1097 | 191.243.156.0/24 1098 | 191.251.128.0/24 1099 | 191.251.192.0/24 1100 | 191.253.208.0/24 1101 | 192.31.228.0/24 1102 | 192.70.222.0/24 1103 | 192.119.21.0/24 1104 | 192.119.24.0/24 1105 | 192.122.185.0/24 1106 | 192.124.233.0/24 1107 | 192.154.121.0/24 1108 | 192.232.16.0/24 1109 | 193.0.255.0/24 1110 | 193.4.115.0/24 1111 | 193.28.236.0/24 1112 | 193.51.224.0/24 1113 | 193.90.147.0/24 1114 | 193.92.133.0/24 1115 | 193.95.12.0/24 1116 | 193.95.144.0/24 1117 | 193.134.255.0/24 1118 | 193.170.141.0/24 1119 | 193.189.184.0/24 1120 | 193.192.226.0/24 1121 | 193.192.250.0/24 1122 | 193.206.135.0/24 1123 | 193.229.108.0/24 1124 | 194.9.24.0/23 1125 | 194.24.134.0/24 1126 | 194.44.4.0/24 1127 | 194.44.64.0/24 1128 | 194.78.0.0/24 1129 | 194.78.99.0/24 1130 | 194.90.196.0/24 1131 | 194.100.28.0/24 1132 | 194.106.173.0/24 1133 | 194.116.101.0/24 1134 | 194.122.80.0/23 1135 | 194.122.82.0/24 1136 | 194.134.26.0/24 1137 | 194.152.31.0/24 1138 | 194.158.92.0/24 1139 | 194.182.232.0/24 1140 | 194.183.149.0/24 1141 | 194.199.78.0/24 1142 | 194.210.238.0/24 1143 | 195.8.11.0/24 1144 | 195.8.12.0/24 1145 | 195.12.176.0/23 1146 | 195.13.189.0/24 1147 | 195.13.231.0/24 1148 | 195.22.207.0/24 1149 | 195.39.213.0/24 1150 | 195.43.73.0/24 1151 | 195.49.27.0/24 1152 | 195.50.84.0/24 1153 | 195.78.217.0/24 1154 | 195.80.176.0/24 1155 | 195.80.179.0/24 1156 | 195.95.178.0/24 1157 | 195.111.111.0/24 1158 | 195.113.214.0/24 1159 | 195.122.16.0/24 1160 | 195.122.30.0/24 1161 | 195.149.238.0/24 1162 | 195.176.255.0/24 1163 | 195.177.197.0/24 1164 | 195.187.242.0/24 1165 | 195.202.131.0/24 1166 | 195.249.20.0/24 1167 | 195.249.23.0/24 1168 | 196.0.3.0/24 1169 | 196.12.217.0/24 1170 | 196.23.168.0/24 1171 | 196.27.66.0/24 1172 | 196.29.35.0/24 1173 | 196.44.149.0/24 1174 | 196.46.1.0/24 1175 | 196.46.123.0/24 1176 | 196.49.8.0/24 1177 | 196.201.223.0/24 1178 | 196.202.235.0/24 1179 | 196.202.246.0/24 1180 | 196.203.102.0/24 1181 | 196.204.32.0/24 1182 | 196.207.198.0/24 1183 | 197.80.128.0/24 1184 | 197.136.0.0/24 1185 | 197.149.150.0/24 1186 | 197.157.244.0/24 1187 | 197.158.80.0/24 1188 | 197.159.29.0/24 1189 | 197.199.253.0/24 1190 | 197.199.254.0/24 1191 | 197.218.0.0/24 1192 | 197.220.0.0/24 1193 | 197.221.233.0/24 1194 | 197.235.0.0/24 1195 | 197.243.124.0/24 1196 | 197.251.230.0/24 1197 | 197.253.18.0/24 1198 | 198.7.237.0/24 1199 | 198.52.15.0/24 1200 | 198.70.68.0/23 1201 | 198.70.70.0/24 1202 | 198.142.187.0/24 1203 | 198.231.29.0/24 1204 | 198.235.201.0/24 1205 | 199.59.103.0/24 1206 | 199.83.198.0/24 1207 | 199.87.241.0/24 1208 | 199.247.157.0/24 1209 | 200.3.21.0/24 1210 | 200.10.226.0/24 1211 | 200.28.0.0/24 1212 | 200.28.6.0/24 1213 | 200.28.8.0/24 1214 | 200.28.12.0/24 1215 | 200.29.113.0/24 1216 | 200.31.96.0/24 1217 | 200.40.0.0/24 1218 | 200.40.3.0/24 1219 | 200.40.172.0/24 1220 | 200.49.185.0/24 1221 | 200.50.67.0/24 1222 | 200.52.21.0/24 1223 | 200.53.245.0/24 1224 | 200.55.230.0/24 1225 | 200.56.193.0/24 1226 | 200.62.26.0/24 1227 | 200.63.214.0/24 1228 | 200.77.168.0/24 1229 | 200.77.222.0/24 1230 | 200.81.125.0/24 1231 | 200.85.99.0/24 1232 | 200.94.238.0/24 1233 | 200.105.131.0/24 1234 | 200.108.53.0/24 1235 | 200.110.122.0/24 1236 | 200.111.181.0/24 1237 | 200.115.92.0/24 1238 | 200.115.94.0/23 1239 | 200.115.192.0/24 1240 | 200.142.191.0/24 1241 | 200.149.119.0/24 1242 | 200.150.4.0/24 1243 | 200.160.97.0/24 1244 | 200.172.62.0/24 1245 | 200.187.85.0/24 1246 | 200.188.128.0/24 1247 | 200.189.63.0/24 1248 | 200.195.190.0/24 1249 | 200.216.56.0/24 1250 | 200.216.90.0/24 1251 | 200.220.141.0/24 1252 | 201.6.16.0/24 1253 | 201.16.57.0/24 1254 | 201.16.134.0/24 1255 | 201.23.161.0/24 1256 | 201.30.4.0/24 1257 | 201.31.84.0/24 1258 | 201.33.240.0/24 1259 | 201.49.80.0/24 1260 | 201.67.193.0/24 1261 | 201.82.108.0/24 1262 | 201.86.233.0/24 1263 | 201.87.209.0/24 1264 | 201.130.49.0/24 1265 | 201.130.208.0/24 1266 | 201.132.92.0/24 1267 | 201.132.200.0/24 1268 | 201.151.207.0/24 1269 | 201.157.30.0/24 1270 | 201.157.200.0/24 1271 | 201.162.64.0/24 1272 | 201.163.0.0/24 1273 | 201.165.0.0/24 1274 | 201.165.116.0/24 1275 | 201.165.221.0/24 1276 | 201.167.5.0/24 1277 | 201.167.51.0/24 1278 | 201.167.56.0/24 1279 | 201.167.64.0/24 1280 | 201.174.48.0/24 1281 | 201.174.82.0/24 1282 | 201.174.96.0/23 1283 | 201.174.98.0/24 1284 | 201.218.56.0/24 1285 | 201.218.92.0/24 1286 | 201.227.61.0/24 1287 | 201.229.1.0/24 1288 | 201.245.193.0/24 1289 | 201.245.194.0/24 1290 | 201.248.76.0/24 1291 | 201.248.78.0/24 1292 | 202.3.240.0/24 1293 | 202.28.85.0/24 1294 | 202.38.180.0/24 1295 | 202.39.143.0/24 1296 | 202.51.67.0/24 1297 | 202.58.96.0/23 1298 | 202.67.41.0/24 1299 | 202.70.58.0/24 1300 | 202.76.239.0/24 1301 | 202.78.113.0/24 1302 | 202.86.162.0/24 1303 | 202.88.157.0/24 1304 | 202.88.186.0/24 1305 | 202.89.241.0/24 1306 | 202.93.153.0/24 1307 | 202.122.145.0/24 1308 | 202.122.146.0/24 1309 | 202.148.204.0/24 1310 | 202.152.130.0/24 1311 | 202.152.192.0/24 1312 | 202.158.57.0/24 1313 | 202.163.174.0/24 1314 | 202.169.173.0/24 1315 | 202.169.175.0/24 1316 | 202.169.193.0/24 1317 | 202.208.170.0/24 1318 | 202.216.0.0/24 1319 | 202.220.161.0/24 1320 | 202.224.62.0/24 1321 | 202.224.83.0/24 1322 | 202.231.177.0/24 1323 | 202.248.151.0/24 1324 | 202.248.248.0/24 1325 | 203.2.228.0/24 1326 | 203.42.8.0/24 1327 | 203.42.38.0/24 1328 | 203.42.93.0/24 1329 | 203.66.124.0/24 1330 | 203.78.36.0/24 1331 | 203.82.75.0/24 1332 | 203.82.77.0/24 1333 | 203.94.209.0/24 1334 | 203.113.160.0/23 1335 | 203.114.135.0/24 1336 | 203.116.165.0/24 1337 | 203.117.34.0/24 1338 | 203.117.36.0/23 1339 | 203.133.8.0/24 1340 | 203.133.72.0/24 1341 | 203.139.206.0/24 1342 | 203.146.98.0/24 1343 | 203.151.116.0/24 1344 | 203.165.13.0/24 1345 | 203.165.14.0/24 1346 | 203.176.178.0/24 1347 | 203.176.180.0/24 1348 | 203.192.223.0/24 1349 | 203.210.2.0/24 1350 | 203.210.4.0/24 1351 | 203.211.0.0/24 1352 | 203.211.8.0/24 1353 | 203.217.98.0/24 1354 | 203.233.10.0/24 1355 | 203.233.18.0/24 1356 | 203.233.63.0/24 1357 | 203.233.88.0/24 1358 | 203.233.126.0/24 1359 | 203.248.180.0/24 1360 | 203.248.210.0/24 1361 | 204.9.80.0/24 1362 | 204.17.140.0/24 1363 | 204.85.30.0/24 1364 | 204.111.84.0/24 1365 | 204.186.48.0/24 1366 | 204.186.215.0/24 1367 | 205.158.11.0/24 1368 | 205.213.108.0/24 1369 | 205.213.114.0/24 1370 | 205.237.38.0/24 1371 | 205.237.60.0/24 1372 | 206.80.249.0/24 1373 | 206.111.13.0/24 1374 | 206.126.112.0/24 1375 | 206.131.134.0/24 1376 | 206.167.212.0/24 1377 | 206.169.145.0/24 1378 | 206.181.8.0/24 1379 | 206.248.149.0/24 1380 | 206.248.151.0/24 1381 | 207.34.103.0/24 1382 | 207.70.129.0/24 1383 | 207.134.64.0/24 1384 | 207.172.159.0/24 1385 | 207.172.195.0/24 1386 | 207.173.228.0/24 1387 | 207.181.192.0/24 1388 | 207.191.178.0/24 1389 | 207.192.241.0/24 1390 | 207.204.159.0/24 1391 | 207.237.69.0/24 1392 | 207.238.252.0/24 1393 | 207.249.186.0/24 1394 | 207.255.26.0/24 1395 | 208.53.243.0/24 1396 | 208.54.64.0/24 1397 | 208.65.152.0/22 1398 | 208.73.255.0/24 1399 | 208.90.107.0/24 1400 | 208.93.196.0/24 1401 | 208.94.168.0/24 1402 | 208.104.242.0/24 1403 | 208.111.59.0/24 1404 | 208.117.225.0/24 1405 | 208.117.226.0/23 1406 | 208.117.228.0/22 1407 | 208.117.234.0/24 1408 | 208.117.236.0/24 1409 | 208.117.238.0/23 1410 | 208.117.242.0/23 1411 | 208.117.244.0/24 1412 | 208.117.250.0/24 1413 | 208.117.252.0/23 1414 | 208.117.254.0/24 1415 | 208.138.46.0/24 1416 | 208.180.176.0/24 1417 | 208.187.128.0/24 1418 | 209.33.235.0/24 1419 | 209.52.189.0/24 1420 | 209.56.124.0/24 1421 | 209.81.111.0/24 1422 | 209.85.145.0/24 1423 | 209.85.146.0/23 1424 | 209.85.225.0/24 1425 | 209.85.226.0/23 1426 | 209.85.228.0/22 1427 | 209.85.239.0/24 1428 | 209.91.176.0/24 1429 | 209.91.216.0/24 1430 | 209.116.150.0/24 1431 | 209.116.186.0/24 1432 | 209.118.7.0/24 1433 | 209.118.99.0/24 1434 | 209.118.208.0/24 1435 | 209.141.120.0/24 1436 | 209.148.195.0/24 1437 | 209.183.147.0/24 1438 | 209.191.218.0/24 1439 | 209.226.57.0/24 1440 | 210.2.185.0/24 1441 | 210.61.221.0/24 1442 | 210.139.253.0/24 1443 | 210.143.70.0/24 1444 | 210.143.147.0/24 1445 | 210.153.73.0/24 1446 | 210.158.146.0/24 1447 | 210.187.22.0/24 1448 | 210.187.25.0/24 1449 | 210.191.74.0/24 1450 | 210.236.185.0/24 1451 | 210.242.125.0/24 1452 | 210.242.127.0/24 1453 | 210.242.128.0/24 1454 | 210.245.14.0/24 1455 | 210.253.46.0/24 1456 | 211.124.13.0/24 1457 | 211.175.187.0/24 1458 | 211.181.65.0/24 1459 | 212.0.195.0/24 1460 | 212.1.249.0/24 1461 | 212.2.108.0/24 1462 | 212.6.83.0/24 1463 | 212.7.1.0/24 1464 | 212.9.14.0/24 1465 | 212.10.212.0/24 1466 | 212.15.170.0/24 1467 | 212.20.34.0/24 1468 | 212.30.5.0/24 1469 | 212.39.82.0/24 1470 | 212.40.1.0/24 1471 | 212.40.34.0/24 1472 | 212.40.98.0/24 1473 | 212.50.193.0/24 1474 | 212.52.60.0/24 1475 | 212.56.71.0/24 1476 | 212.56.131.0/24 1477 | 212.56.132.0/24 1478 | 212.57.191.0/24 1479 | 212.88.109.0/24 1480 | 212.89.5.0/24 1481 | 212.92.207.0/24 1482 | 212.106.207.0/24 1483 | 212.106.221.0/24 1484 | 212.112.37.0/24 1485 | 212.113.7.0/24 1486 | 212.113.49.0/24 1487 | 212.113.52.0/24 1488 | 212.113.184.0/23 1489 | 212.120.241.0/24 1490 | 212.122.6.0/24 1491 | 212.122.14.0/24 1492 | 212.126.123.0/24 1493 | 212.142.160.0/24 1494 | 212.146.69.0/24 1495 | 212.188.7.0/24 1496 | 212.188.10.0/24 1497 | 212.188.15.0/24 1498 | 212.188.49.0/24 1499 | 212.191.227.0/24 1500 | 212.191.236.0/24 1501 | 212.247.8.0/24 1502 | 213.24.121.0/24 1503 | 213.30.5.0/24 1504 | 213.55.64.0/24 1505 | 213.81.154.0/24 1506 | 213.85.209.0/24 1507 | 213.94.75.0/24 1508 | 213.152.1.0/24 1509 | 213.153.32.0/24 1510 | 213.155.151.0/24 1511 | 213.158.11.0/24 1512 | 213.158.189.0/24 1513 | 213.159.32.0/24 1514 | 213.163.23.0/24 1515 | 213.186.122.0/24 1516 | 213.190.196.0/24 1517 | 213.196.106.0/24 1518 | 213.208.156.0/24 1519 | 213.233.153.0/24 1520 | 213.240.44.0/24 1521 | 213.241.87.0/24 1522 | 213.241.88.0/23 1523 | 213.242.89.0/24 1524 | 213.253.9.0/24 1525 | 216.11.246.0/24 1526 | 216.12.120.0/24 1527 | 216.21.170.0/24 1528 | 216.50.166.0/24 1529 | 216.58.192.0/23 1530 | 216.58.194.0/24 1531 | 216.58.197.0/24 1532 | 216.58.198.0/23 1533 | 216.58.202.0/24 1534 | 216.59.116.0/24 1535 | 216.68.10.0/24 1536 | 216.68.248.0/24 1537 | 216.93.235.0/24 1538 | 216.123.55.0/24 1539 | 216.123.194.0/24 1540 | 216.126.108.0/24 1541 | 216.147.171.0/24 1542 | 216.152.163.0/24 1543 | 216.177.189.0/24 1544 | 216.197.242.0/24 1545 | 216.211.1.0/24 1546 | 216.221.127.0/24 1547 | 216.229.87.0/24 1548 | 216.239.90.0/24 1549 | 216.254.140.0/24 1550 | 217.15.105.0/24 1551 | 217.16.73.0/24 1552 | 217.18.243.0/24 1553 | 217.19.150.0/24 1554 | 217.73.128.0/24 1555 | 217.73.160.0/24 1556 | 217.75.205.0/24 1557 | 217.115.45.0/24 1558 | 217.119.118.0/24 1559 | 217.147.40.0/24 1560 | 217.174.48.0/24 1561 | 218.189.25.0/24 1562 | 218.208.3.0/24 1563 | 218.219.168.0/24 1564 | 218.253.0.0/24 1565 | 219.109.49.0/24 1566 | 219.117.33.0/24 1567 | 219.117.35.0/24 1568 | 219.124.146.0/24 1569 | 220.102.0.0/24 1570 | 220.148.241.0/24 1571 | 220.225.89.0/24 1572 | 220.255.0.0/24 1573 | 220.255.5.0/24 1574 | 220.255.6.0/24 1575 | 221.133.8.0/24 1576 | 222.165.163.0/24 1577 | 222.251.134.0/24 1578 | 222.255.120.0/24 1579 | 223.26.69.0/24 1580 | 223.27.237.0/24 1581 | 223.62.225.0/24 1582 | 223.196.4.0/24 1583 | 223.196.82.0/24 1584 | 83.169.197.0/24 1585 | 84.244.62.0/24 1586 | 90.150.83.0/24 1587 | 92.126.155.0/24 1588 | 101.100.190.0/24 1589 | 195.64.213.0/24 1590 | 195.162.39.0/24 1591 | 212.1.250.0/24 1592 | 213.59.237.0/24 1593 | 213.108.23.0/24 1594 | 217.116.143.0/24 1595 | 220.255.2.0/24 1596 | 1.255.22.0/24 1597 | 31.55.166.0/24 1598 | 36.37.218.0/24 1599 | 42.112.8.0/24 1600 | 42.112.10.0/24 1601 | 43.245.144.0/24 1602 | 43.245.193.0/24 1603 | 43.245.201.0/24 1604 | 45.64.29.0/24 1605 | 45.64.30.0/23 1606 | 45.64.34.0/24 1607 | 49.231.60.0/24 1608 | 58.123.102.0/24 1609 | 58.123.220.0/24 1610 | 59.18.45.0/24 1611 | 59.18.46.0/24 1612 | 59.18.49.0/24 1613 | 61.91.161.0/24 1614 | 61.205.127.0/24 1615 | 66.96.224.0/24 1616 | 74.125.1.0/24 1617 | 74.125.106.0/24 1618 | 74.125.155.0/24 1619 | 74.125.156.0/24 1620 | 74.125.171.0/24 1621 | 80.253.30.0/24 1622 | 83.169.197.0/24 1623 | 90.150.83.0/24 1624 | 92.126.155.0/24 1625 | 101.100.190.0/24 1626 | 103.11.28.0/24 1627 | 103.224.194.0/24 1628 | 103.249.65.0/24 1629 | 104.237.172.0/24 1630 | 110.50.81.0/24 1631 | 110.164.8.0/24 1632 | 111.90.117.0/24 1633 | 114.4.4.0/24 1634 | 118.98.106.0/24 1635 | 120.28.12.0/24 1636 | 120.28.26.0/24 1637 | 120.28.53.0/24 1638 | 124.153.255.0/24 1639 | 125.234.50.0/24 1640 | 125.235.17.0/24 1641 | 125.235.31.0/24 1642 | 125.235.36.0/24 1643 | 173.194.49.0/24 1644 | 173.194.51.0/24 1645 | 173.194.55.0/24 1646 | 180.188.250.0/24 1647 | 193.90.147.0/24 1648 | 195.162.39.0/24 1649 | 202.86.162.0/24 1650 | 202.248.151.0/24 1651 | 202.248.248.0/24 1652 | 203.113.161.0/24 1653 | 203.176.178.0/24 1654 | 203.211.8.0/24 1655 | 208.117.228.0/24 1656 | 210.92.119.0/24 1657 | 210.94.153.0/24 1658 | 211.239.234.0/24 1659 | 212.1.250.0/24 1660 | 213.59.237.0/24 1661 | 216.58.193.0/24 1662 | 216.58.197.0/24 1663 | 216.58.199.0/24 1664 | 217.116.143.0/24 1665 | 220.255.2.0/24 1666 | 45.64.253.0/24 1667 | 45.116.219.0/24 1668 | 49.231.58.0/24 1669 | 172.217.0.0/24 1670 | 172.217.16.0/24 1671 | 172.217.24.0/24 1672 | 43.230.130.0/24 1673 | 43.240.231.0/24 1674 | 91.202.206.0/24 1675 | 103.21.169.0/24 1676 | 125.234.55.0/24 1677 | 172.217.2.0/24 1678 | 172.217.25.0/24 1679 | 175.100.94.0/24 1680 | 182.253.220.0/24 1681 | 185.5.161.0/24 1682 | 213.59.210.0/24 1683 | 216.58.200.0/24 1684 | 216.58.203.0/24 1685 | 218.253.0.0/24 -------------------------------------------------------------------------------- /python/checkip.md: -------------------------------------------------------------------------------- 1 | checkgoogleip 2 | ============= 3 | 4 | 此说明文件来自 checkgoogleip,详细说明 checkip.py 使用方法,主要是用来检查哪些IP可以用在goagent上面 5 | 6 | 检查方法 7 | ------------- 8 | * 默认使用内置的ssl库连接到该IP,并使用cacert.pem来获取服务器证书,可以通过修改变量来支持pyOpenSSL库获取服务器证书, 9 | * 检查该 IP是否使用google.com的证书,如果不是该域名,则发送http请求,然后检查回应头部的Server是否为gws 10 | * 以响应时间排序,时间越少,排序就越前 11 | 12 | 注意 13 | ------------- 14 | * IP组的格式 15 | 1.xxx.xxx.xxx.xxx-xx.xxx.xxx.xxx 16 | 如218.253.0.80-218.253.0.90 17 | 2.xxx.xxx.xxx.xxx/xx 18 | 如218.253.0.80/24 19 | 3.xxx.xxx.xxx. 20 | 如218.253.0. 21 | 4.xxx.xxx.xxx.xxx 22 | 如218.253.0.80 23 | 组与组之间可以用换行、'|'或','相隔开 24 | * connect超时时间可以看g_commtimeout变量,时间为5秒,握手超时请看g_handshaketimeout,时间为7秒 25 | * 默认会尝试使用gevent及内置的ssl库查询,好处:明显优化cpu及内存使用,最大线程数量限制了128条,可以支持pyOpenSSL库,但需要设置g_usegevent为0 26 | * 默认增加一些IP段检查,并且只随机检查700个IP 27 | * 默认会保存测试IP的结果到ip_tmperror.txt(失败)、ip_tmpno.txt(非gae可用IP),ip_tmpok.txt(gae可用IP),下次运行脚本时会预先读取,并会跳过ip_tmperror.txt与ip_tmpno.txt的查询,如果不想保留ip_tmperror.txt,则g_autodeltmperrorfile为1,如果不想保留ip_tmpno.txt,则需要设置g_autodeltmpnofile=1,如果程序正常运行结束,则会检查g_autodeltmperrorfile及g_autodeltmpnofile,并执行对应的操作,如果程序运行异常,需要关闭程序,则会保留这两个文件 28 | * 增加gogotest里面的部分IP列表,特别感谢该开发者 29 | * 程序在启动时会优先读取ip_tmpok.txt检查,如果不想优先检查,可以设置g_checklastgoogleipfirst为0 30 | * 程序在正常结束时会对ip_tmpok.txt的结果进行排序,当次没有检查到的IP时排在最后,第二列是时间值,以NA_开头(表示当次查询超时或没检查到),如果不想对文件排序,可以设置 31 | g_needsorttmpokfile为0 32 | * 设置默认线程为60(g_maxthreads),默认最大IP延时1500毫秒(g_maxhandletimeout),默认检查可用IP数50(g_maxhandleipcnt) 33 | * 程序支持优先读取外部IP列表,文件名为googleip.txt,当这个文件存在时,默认不会读取脚本里面的IP列表,如果需要检查里面的IP列表,可以在新一行中填写@default,表示读取脚本预设IP列表 34 | * **检查SSL证书时,需要检查organizationName为google Inc,其他内容暂时被认为非google ip,如果有其他名称也可用,可以在g_organizationName中添加** 35 | * 解决使用OpenSSL检查IP时,Ctrl-C无响应的情况 36 | * 命令增加IP参数,用来检查该IP的ssl证书的情况 37 | ```` 38 | python checkip.py xxx.xxx.xxx.xxx 39 | use gevent to check xxx.xxx.xxx.xxx 40 | try connect to xxx.xxx.xxx.xxx 41 | ssl subject: ((('countryName', u'US'),), (('stateOrProvinceName', u'California' 42 | ),), (('localityName', u'Mountain View'),), (('organizationName', u'Google Inc') 43 | ,), (('commonName', u'google.com'),)) 44 | Exception KeyError: KeyError(41875536,) in ignored 46 | ```` 47 | * 增加IP黑名单配置,暂时把216开头的IP屏蔽 48 | `g_blackiplist = ("216.",)` 49 | 50 | 51 | 使用方法 52 | ------------- 53 | ### windows 54 | 到上级目录即 checkiptools 目录,双击运行 checkip.bat 55 | 56 | ### linux 57 | 把checkip.py与cacert.pem放在同一个目录,然后执行 58 | python checkip.py 即可 59 | 60 | 61 | 由于开发时主要用python2.7版本,暂时不支持python3版本 62 | 63 | 64 | 65 | 更新说明 66 | ------------- 67 | ### 2014.08.13 68 | * 支持只保留小于最大延时的IP,支持只获取指定数量的IP列表 69 | 70 | ### 2014.06.27 71 | * 优化查询可用IP,支持随机查询IP 72 | 73 | ### 2014.06.13 74 | * 使用两个临时文件来记录程序运行过程中查询成功与失败的IP地址,方便下次使用 75 | * 支持gevent,但只能在关闭pyOpenSSL库时使用 76 | * 支持多进程方式,在pyOpenSSL库下默认使用,在gevent下禁用 77 | 78 | ### 2014.06.07 79 | * 优化线程队列的使用 80 | * 默认会尝试使用pyOpenSSL库,支持高并发量,并且有效地优化cpu及内存使用,程序在启动时cpu较高,几秒后会降下来 81 | * 设置默认线程的stack大小,减少内存消耗 82 | 83 | ### 2014.06.06 84 | * 使用队列来控制线程数量,默认改为256条线程,测试发现超过378条线程时,在windows中出现部分线程加载证书出错 85 | * g_ssldomain 使用元组类型,检查多种域名的证书 86 | -------------------------------------------------------------------------------- /python/checkip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | __author__ = 'moonshawdo@gamil.com' 4 | """ 5 | 验证哪些IP可以用在gogagent中 6 | 主要是检查这个ip是否可以连通,并且证书是否为google.com 7 | """ 8 | 9 | import os 10 | import sys 11 | import threading 12 | import socket 13 | import ssl 14 | import re 15 | import select 16 | import traceback 17 | import logging 18 | import random 19 | from operator import itemgetter 20 | import shutil 21 | 22 | PY3 = False 23 | if sys.version_info[0] == 3: 24 | from queue import Queue, Empty 25 | PY3 = True 26 | try: 27 | from functools import reduce 28 | finally: 29 | pass 30 | try: 31 | xrange 32 | except NameError: 33 | xrange = range 34 | else: 35 | from Queue import Queue, Empty 36 | import time 37 | from time import sleep 38 | 39 | g_useOpenSSL = 1 40 | g_usegevent = 1 41 | if g_usegevent == 1: 42 | try: 43 | from gevent import monkey 44 | monkey.patch_all() 45 | g_useOpenSSL = 0 46 | from gevent import sleep 47 | except ImportError: 48 | g_usegevent = 0 49 | 50 | if g_useOpenSSL == 1: 51 | try: 52 | import OpenSSL.SSL 53 | 54 | SSLError = OpenSSL.SSL.WantReadError 55 | g_usegevent = 0 56 | except ImportError: 57 | g_useOpenSSL = 0 58 | SSLError = ssl.SSLError 59 | else: 60 | SSLError = ssl.SSLError 61 | 62 | 63 | #最大IP延时,单位毫秒 64 | g_maxhandletimeout = 600 65 | #最大可用IP数量 66 | g_maxhandleipcnt = 9999 67 | #检查IP的线程数 68 | g_maxthreads = 50 69 | #是否立即检查上一次的google ip列表 70 | g_checklastgoogleipfirst = 1 71 | #结束时是否需要对ip_tmpok.txt里面的结果进行排序 72 | g_needsorttmpokfile = 1 73 | 74 | "连接超时设置" 75 | g_conntimeout = 5 76 | g_handshaketimeout = 7 77 | 78 | g_filedir = os.path.dirname(os.path.abspath(__file__)) 79 | g_cacertfile = os.path.join(g_filedir, "cacert.pem") 80 | if os.name == "nt": 81 | g_pardir = os.path.abspath(os.path.join(g_filedir, os.path.pardir)) 82 | else: 83 | g_pardir = g_filedir 84 | g_tmpdir = os.path.join(g_pardir, "tmp") 85 | #建立缓存文件夹 86 | if not os.path.exists(g_tmpdir): 87 | os.mkdir(g_tmpdir) 88 | g_ipfile = os.path.join(g_pardir, "ip.txt") 89 | g_tmpokfile = os.path.join(g_pardir, "ip_tmpok.txt") 90 | g_tmpnofile = os.path.join(g_tmpdir, "ip_tmpno.txt") 91 | g_tmperrorfile = os.path.join(g_tmpdir, "ip_tmperror.txt") 92 | g_googleipfile = os.path.join(g_pardir, "googleip.txt") 93 | 94 | 95 | # gevent socket cnt must less than 1024 96 | if g_usegevent == 1 and g_maxthreads > 1000: 97 | g_maxthreads = 128 98 | 99 | g_ssldomain = ("google.com","*.googlevideo.com","*.c.docs.google.com") 100 | g_excludessdomain=() 101 | #检查组织是否为google,如果有其他名称,需要添加,暂时只发现一个 102 | g_organizationName = ("Google Inc",) 103 | g_blackiplist = ("216.255.",) 104 | 105 | 106 | "是否自动删除记录查询成功的非google的IP文件,方便下次跳过连接,0为不删除,1为删除" 107 | "文件名:ip_tmpno.txt,格式:ip 连接与握手时间 ssl域名" 108 | g_autodeltmpnofile = 0 109 | "是否自动删除记录查询失败的IP文件,0为不删除,1为删除" 110 | "ip_tmperror.txt,格式:ip" 111 | g_autodeltmperrorfile = 0 112 | 113 | if g_usegevent == 1: 114 | # Re-add sslwrap to Python 2.7.9 115 | import inspect 116 | __ssl__ = __import__('ssl') 117 | 118 | try: 119 | _ssl = __ssl__._ssl 120 | except AttributeError: 121 | _ssl = __ssl__._ssl2 122 | 123 | def new_sslwrap(sock, server_side=False, keyfile=None, certfile=None, cert_reqs=__ssl__.CERT_NONE, ssl_version=__ssl__.PROTOCOL_SSLv23, ca_certs=None, ciphers=None): 124 | context = __ssl__.SSLContext(ssl_version) 125 | context.verify_mode = cert_reqs or __ssl__.CERT_NONE 126 | if ca_certs: 127 | context.load_verify_locations(ca_certs) 128 | if certfile: 129 | context.load_cert_chain(certfile, keyfile) 130 | if ciphers: 131 | context.set_ciphers(ciphers) 132 | 133 | caller_self = inspect.currentframe().f_back.f_locals['self'] 134 | return context._wrap_socket(sock, server_side=server_side, ssl_sock=caller_self) 135 | 136 | if not hasattr(_ssl, 'sslwrap'): 137 | _ssl.sslwrap = new_sslwrap 138 | 139 | 140 | """ 141 | ip_str_list为需要查找的IP地址,第一组的格式: 142 | 1.xxx.xxx.xxx.xxx-xx.xxx.xxx.xxx 143 | 2.xxx.xxx.xxx.xxx/xx 144 | 3.xxx.xxx.xxx. 145 | 4 xxx.xxx.xxx.xxx 146 | 5 xxx.xxx.xxx.xxx-xxx 147 | 148 | 组与组之间可以用换行相隔开,第一行中IP段可以用'|'或',' 149 | 获取随机IP是每组依次获取随机个数量的,因此一组的IP数越少,越有机会会检查,当然获取随机IP会先排除上次查询失败的IP 150 | """ 151 | ip_str_list = ''' 152 | 218.189.25.166-218.189.25.187|121.78.74.80-121.78.74.88|178.45.251.84-178.45.251.123|210.61.221.148-210.61.221.187 153 | 61.219.131.84-61.219.131.251|202.39.143.84-202.39.143.123|203.66.124.148-203.66.124.251|203.211.0.20-203.211.0.59 154 | 60.199.175.18-60.199.175.187|218.176.242.20-218.176.242.251|203.116.165.148-203.116.165.251|203.117.34.148-203.117.34.187 155 | 210.153.73.20-210.153.73.123|106.162.192.148-106.162.192.187|106.162.198.84-106.162.198.123|106.162.216.20-106.162.216.123 156 | 210.139.253.20-210.139.253.251|111.168.255.20-111.168.255.187|203.165.13.210-203.165.13.251 157 | 61.19.1.30-61.19.1.109|74.125.31.33-74.125.31.60|210.242.125.20-210.242.125.59|203.165.14.210-203.165.14.251 158 | #216.239.32.0/19 159 | 64.233.160.0/19 160 | 66.249.80.0/20 161 | 72.14.192.0/18 162 | 209.85.128.0/17 163 | 66.102.0.0/20 164 | 74.125.0.0-74.125.31.255 165 | 74.125.32.0-74.125.63.255 166 | 74.125.64.0-74.125.95.255 167 | 74.125.96.0-74.125.127.255 168 | 74.125.128.0-74.125.159.255 169 | 74.125.160.0-74.125.191.255 170 | 74.125.192.0-74.125.223.255 171 | 74.125.224.0-74.125.255.255 172 | 64.18.0.0/20 173 | 207.126.144.0/20 174 | 173.194.0.0-173.194.31.255 175 | 173.194.32.0-173.194.63.255 176 | 173.194.64.0-173.194.95.255 177 | 173.194.96.0-173.194.127.255 178 | 173.194.128.0-173.194.159.255 179 | 173.194.160.0-173.194.191.255 180 | 173.194.192.0-173.194.223.255 181 | 173.194.224.0-173.194.255.255 182 | 1.179.248.0-255 183 | 106.162.192.148-187 184 | 108.166.34.0-255 185 | 118.174.24.0-255 186 | 118.174.25.0-255 187 | 118.174.26.0-255 188 | 118.174.27.0-255 189 | 121.195.178.0-255 190 | 121.78.74.68-123 191 | 123.205.250.0-255 192 | 123.205.251.68-123 193 | 124.160.89.0-255 194 | 130.211.115.0-255 195 | 130.211.76.0-255 196 | 130.211.78.0-255 197 | 130.211.82.0-255 198 | 146.148.16.0-255 199 | 146.148.24.0-255 200 | 146.148.34.0-255 201 | 146.148.8.0-255 202 | 146.148.9.0-255 203 | 178.60.128.1-63 204 | 193.120.166.64-127 205 | 193.92.133.0-63 206 | 194.78.20.16-31 207 | 194.78.99.0-255 208 | 195.249.20.192-255 209 | 202.106.93.0-255 210 | 202.39.143.1-123 211 | 202.69.26.0-255 212 | 203.66.124.129-251 213 | 208.117.224.0-208.117.229.255 214 | 208.117.230.0-208.117.239.255 215 | 208.117.240.0-208.117.255.255 216 | 209.85.228.0-255 217 | 210.242.125.20-59 218 | 212.188.15.0-255 219 | 213.186.229.0-63 220 | 213.240.44.0-31 221 | 218.176.242.0-255 222 | 24.156.131.0-255 223 | 41.206.96.0-255 224 | 62.116.207.0-63 225 | 62.197.198.193-251 226 | 64.15.112.0-64.15.117.255 227 | 64.15.119.0-64.15.126.255 228 | 64.233.160.0-255 229 | 64.233.168.0-255 230 | 64.233.171.0-255 231 | 66.102.133.0-255 232 | 66.102.136.0-255 233 | 66.102.255.0-255 234 | 80.228.65.128-191 235 | 81.175.29.128-191 236 | 84.235.77.0-255 237 | 85.182.250.0-255 238 | 86.127.118.128-191 239 | 93.183.211.192-255 240 | 93.94.217.0-31 241 | 93.94.218.0-31 242 | 94.200.103.64-71 243 | 94.40.70.0-63 244 | ''' 245 | 246 | 247 | 248 | 249 | logging.basicConfig(format="[%(threadName)s]%(message)s",level=logging.INFO) 250 | 251 | 252 | evt_ipramdomstart = threading.Event() 253 | evt_ipramdomend = threading.Event() 254 | 255 | def PRINT(strlog): 256 | logging.info(strlog) 257 | 258 | def isgoolgledomain(domain): 259 | lowerdomain = domain.lower() 260 | if lowerdomain in g_ssldomain: 261 | return 1 262 | if lowerdomain in g_excludessdomain: 263 | return 0 264 | return 2 265 | 266 | def isgoogleserver(svrname): 267 | lowerdomain = svrname.lower() 268 | if lowerdomain == "gws": 269 | return True 270 | elif lowerdomain == "gvs 1.0": 271 | return True 272 | else: 273 | return False 274 | 275 | def checkvalidssldomain(domain,svrname): 276 | ret = isgoolgledomain(domain) 277 | if ret == 1: 278 | return True 279 | elif ret == 0: 280 | return False 281 | elif len(svrname) > 0 and isgoogleserver(svrname): 282 | return True 283 | else: 284 | return False 285 | 286 | prekey="\nServer:" 287 | def getgooglesvrnamefromheader(header): 288 | begin = header.find(prekey) 289 | if begin != -1: 290 | begin += len(prekey) 291 | end = header.find("\n",begin) 292 | if end == -1: 293 | end = len(header) 294 | gws = header[begin:end].strip(" \t") 295 | return gws 296 | return "" 297 | 298 | g_NAtimeout = 1000000 299 | def getcosttime(costtime): 300 | if costtime.startswith("NA_"): 301 | return g_NAtimeout 302 | else: 303 | return int(costtime) 304 | 305 | class TCacheResult(object): 306 | __slots__ = ["oklist","failiplist","oklock","errlock","okfile","errorfile","notfile","validipcnt","filegwsipset","okfilelinecnt"] 307 | def __init__(self): 308 | self.oklist = list() 309 | self.failiplist = list() 310 | self.oklock = threading.Lock() 311 | self.errlock = threading.Lock() 312 | self.okfile = None 313 | self.errorfile = None 314 | self.notfile = None 315 | self.validipcnt = 0 316 | self.filegwsipset = set() 317 | self.okfilelinecnt = 0 318 | 319 | def addOKIP(self,costtime,ip,ssldomain,gwsname): 320 | bOK = False 321 | try: 322 | self.oklock.acquire() 323 | if checkvalidssldomain(ssldomain,gwsname): 324 | bOK = True 325 | self.oklist.append((costtime,ip,ssldomain,gwsname)) 326 | if not bOK: 327 | if self.notfile is None: 328 | self.notfile = open(g_tmpnofile,"a+",0) 329 | self.notfile.seek(0,2) 330 | line = "%s %d %s %s\n" % (ip, costtime, ssldomain,gwsname) 331 | self.notfile.write(line) 332 | else: 333 | if self.okfile is None: 334 | self.okfile = open(g_tmpokfile,"a+",0) 335 | self.okfile.seek(0,2) 336 | line = "%s %d %s %s\n" % (ip, costtime, ssldomain,gwsname) 337 | self.okfile.write(line) 338 | if bOK and costtime <= g_maxhandletimeout: 339 | self.validipcnt += 1 340 | return bOK,self.validipcnt 341 | else: 342 | return bOK,0 343 | finally: 344 | self.oklock.release() 345 | 346 | def addFailIP(self,ip): 347 | try: 348 | self.errlock.acquire() 349 | #如果之前是google ip,不需要记录到失败文件,下次启动可以继续尝试该 ip 350 | if ip not in self.filegwsipset: 351 | if self.errorfile is None: 352 | self.errorfile = open(g_tmperrorfile,"a+",0) 353 | self.errorfile.seek(0,2) 354 | self.errorfile.write(ip+"\n") 355 | self.failiplist.append(ip) 356 | if len(self.failiplist) > 128: 357 | self.flushFailIP() 358 | finally: 359 | self.errlock.release() 360 | 361 | def close(self): 362 | def closefile(fileobj): 363 | if fileobj: 364 | fileobj.close() 365 | fileobj = None 366 | closefile(self.okfile) 367 | closefile(self.notfile) 368 | closefile(self.errorfile) 369 | 370 | def getIPResult(self): 371 | return self.oklist 372 | 373 | def flushFailIP(self): 374 | nLen = len(self.failiplist) 375 | if nLen > 0 : 376 | self.failiplist = list() 377 | PRINT( "%d ip timeout" % nLen ) 378 | 379 | def loadLastResult(self): 380 | okresult = set() 381 | errorresult = set() 382 | if os.path.exists(g_tmpnofile): 383 | with open(g_tmpnofile,"r") as fd: 384 | for line in fd: 385 | ips = line.strip("\r\n").split(" ") 386 | ipint = from_string(ips[0]) 387 | okresult.add(ipint) 388 | if os.path.exists(g_tmpokfile): 389 | with open(g_tmpokfile,"r") as fd: 390 | self.okfilelinecnt = 0 391 | for line in fd: 392 | line = line.replace('NA_', '') 393 | if '[INFO] Add' in line: 394 | line = line.replace('time:', '') 395 | line = line.replace('CN:', '') 396 | nline = line.strip().split(' ') 397 | ips = [nline[6], nline[7], nline[8]] 398 | else: 399 | ips = line.strip().split(' ') 400 | try: 401 | if ips[3].isdigit(): 402 | ips = [ips[0], ips[3], ips[1]] 403 | except: 404 | pass 405 | self.okfilelinecnt += 1 406 | if len(ips) < 3: 407 | continue 408 | gwsname = "" 409 | if len(ips) > 3: 410 | gwsname = " ".join(ips[3:]) 411 | ipint = from_string(ips[0]) 412 | # 如果为google ip,每次都需要检查,如果不是,则跳过检查 413 | if not checkvalidssldomain(ips[2],gwsname): 414 | okresult.add(ipint) 415 | else: 416 | self.filegwsipset.add(ips[0]) 417 | if ipint in okresult: 418 | okresult.remove(ipint) 419 | if os.path.exists(g_tmperrorfile): 420 | with open(g_tmperrorfile,"r") as fd: 421 | for line in fd: 422 | ips = line.strip("\r\n").split(" ") 423 | for item in ips: 424 | errorresult.add(from_string(item)) 425 | return okresult,errorresult 426 | 427 | def clearFile(self): 428 | self.close() 429 | if g_autodeltmpnofile and os.path.exists(g_tmpnofile): 430 | os.remove(g_tmpnofile) 431 | PRINT("remove file %s" % g_tmpokfile) 432 | if g_autodeltmperrorfile and os.path.exists(g_tmperrorfile): 433 | os.remove(g_tmperrorfile) 434 | PRINT("remove file %s" % g_tmperrorfile) 435 | 436 | def queryfinish(self): 437 | try: 438 | self.oklock.acquire() 439 | return self.validipcnt >= g_maxhandleipcnt 440 | finally: 441 | self.oklock.release() 442 | 443 | class my_ssl_wrap(object): 444 | ssl_cxt = None 445 | ssl_cxt_lock = threading.Lock() 446 | httpreq = "GET / HTTP/1.1\r\nAccept: */*\r\nHost: %s\r\nConnection: Keep-Alive\r\n\r\n" 447 | 448 | def __init__(self): 449 | pass 450 | 451 | @staticmethod 452 | def initsslcxt(): 453 | if my_ssl_wrap.ssl_cxt is not None: 454 | return 455 | try: 456 | my_ssl_wrap.ssl_cxt_lock.acquire() 457 | if my_ssl_wrap.ssl_cxt is not None: 458 | return 459 | my_ssl_wrap.ssl_cxt = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) 460 | my_ssl_wrap.ssl_cxt.set_timeout(g_handshaketimeout) 461 | PRINT("init ssl context ok") 462 | except Exception: 463 | raise 464 | finally: 465 | my_ssl_wrap.ssl_cxt_lock.release() 466 | 467 | def getssldomain(self, threadname, ip): 468 | time_begin = time.time() 469 | s = None 470 | c = None 471 | haserror = 1 472 | timeout = 0 473 | domain = None 474 | gwsname = "" 475 | ssl_orgname = "" 476 | try: 477 | s = socket.socket() 478 | s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 479 | if g_useOpenSSL: 480 | my_ssl_wrap.initsslcxt() 481 | s.settimeout(g_conntimeout) 482 | s.connect((ip, 443)) 483 | c = OpenSSL.SSL.Connection(my_ssl_wrap.ssl_cxt, s) 484 | c.set_connect_state() 485 | s.setblocking(0) 486 | while True: 487 | try: 488 | c.do_handshake() 489 | break 490 | except SSLError: 491 | infds, outfds, errfds = select.select([s, ], [], [], g_handshaketimeout) 492 | if len(infds) == 0: 493 | raise SSLError("do_handshake timed out") 494 | else: 495 | costtime = int(time.time() - time_begin) 496 | if costtime > g_handshaketimeout: 497 | raise SSLError("do_handshake timed out") 498 | else: 499 | pass 500 | except OpenSSL.SSL.SysCallError as e: 501 | raise SSLError(e.args) 502 | time_end = time.time() 503 | cert = c.get_peer_certificate() 504 | costtime = int(time_end * 1000 - time_begin * 1000) 505 | for subject in cert.get_subject().get_components(): 506 | if subject[0] == "CN": 507 | domain = subject[1] 508 | haserror = 0 509 | elif subject[0] == "O": 510 | ssl_orgname = subject[1] 511 | if domain is None: 512 | PRINT("%s can not get CN: %s " % (ip, cert.get_subject().get_components())) 513 | if ssl_orgname == "" or ssl_orgname not in g_organizationName: 514 | return domain, costtime,timeout,gwsname,ssl_orgname 515 | #尝试发送http请求,获取回应头部的Server字段 516 | #if domain is None or isgoolgledomain(domain) == 2: 517 | if True: 518 | cur_time = time.time() 519 | gwsname = self.getgooglesvrname(c,s,ip) 520 | time_end = time.time() 521 | costtime += int(time_end * 1000 - cur_time * 1000) 522 | if domain is None and len(gwsname) > 0: 523 | domain = "null" 524 | return domain, costtime,timeout,gwsname,ssl_orgname 525 | else: 526 | s.settimeout(g_conntimeout) 527 | c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs=g_cacertfile, 528 | do_handshake_on_connect=False) 529 | c.settimeout(g_conntimeout) 530 | c.connect((ip, 443)) 531 | c.settimeout(g_handshaketimeout) 532 | c.do_handshake() 533 | time_end = time.time() 534 | cert = c.getpeercert() 535 | costtime = int(time_end * 1000 - time_begin * 1000) 536 | if 'subject' in cert: 537 | subjectitems = cert['subject'] 538 | for mysets in subjectitems: 539 | for item in mysets: 540 | if item[0] == "commonName": 541 | if not isinstance(item[1], str): 542 | domain = item[1].encode("utf-8") 543 | else: 544 | domain = item[1] 545 | haserror = 0 546 | elif item[0] == "organizationName": 547 | if not isinstance(item[1], str): 548 | ssl_orgname = item[1].encode("utf-8") 549 | else: 550 | ssl_orgname = item[1] 551 | if domain is None: 552 | PRINT("%s can not get commonName: %s " % (ip, subjectitems)) 553 | # 如果组织不在g_organizationName,可能不是google的IP,不能使用 554 | if ssl_orgname == "" or ssl_orgname not in g_organizationName: 555 | return domain, costtime,timeout,gwsname,ssl_orgname 556 | #尝试发送http请求,获取回应头部的Server字段 557 | #if domain is None or isgoolgledomain(domain) == 2: 558 | if True: 559 | cur_time = time.time() 560 | gwsname = self.getgooglesvrname(c,s,ip) 561 | time_end = time.time() 562 | costtime += int(time_end * 1000 - cur_time * 1000) 563 | if domain is None and len(gwsname) > 0: 564 | domain = "null" 565 | return domain, costtime,timeout,gwsname,ssl_orgname 566 | except SSLError as e: 567 | time_end = time.time() 568 | costtime = int(time_end * 1000 - time_begin * 1000) 569 | if str(e).endswith("timed out"): 570 | timeout = 1 571 | else: 572 | PRINT("SSL Exception(%s): %s, times:%d ms " % (ip, e, costtime)) 573 | return domain, costtime,timeout,gwsname,ssl_orgname 574 | except IOError as e: 575 | time_end = time.time() 576 | costtime = int(time_end * 1000 - time_begin * 1000) 577 | if str(e).endswith("timed out"): 578 | timeout = 1 579 | else: 580 | PRINT("Catch IO Exception(%s): %s, times:%d ms " % (ip, e, costtime)) 581 | return domain, costtime,timeout,gwsname,ssl_orgname 582 | except Exception as e: 583 | time_end = time.time() 584 | costtime = int(time_end * 1000 - time_begin * 1000) 585 | PRINT("Catch Exception(%s): %s, times:%d ms " % (ip, e, costtime)) 586 | return domain, costtime,timeout,gwsname,ssl_orgname 587 | finally: 588 | if g_useOpenSSL: 589 | if c: 590 | if haserror == 0: 591 | c.shutdown() 592 | c.sock_shutdown(2) 593 | c.close() 594 | if s: 595 | s.close() 596 | else: 597 | if c: 598 | if haserror == 0: 599 | c.shutdown(2) 600 | c.close() 601 | elif s: 602 | s.close() 603 | 604 | def getgooglesvrname(self,conn,sock,ip): 605 | try: 606 | myreq = my_ssl_wrap.httpreq % ip 607 | conn.write(myreq) 608 | data="" 609 | sock.setblocking(0) 610 | trycnt = 0 611 | begin = time.time() 612 | conntimeout = g_conntimeout if g_usegevent == 0 else 0.001 613 | while True: 614 | end = time.time() 615 | costime = int(end-begin) 616 | if costime >= g_conntimeout: 617 | PRINT("get http response timeout(%ss),ip:%s,try:%d" % (costime,ip,trycnt) ) 618 | return "" 619 | trycnt += 1 620 | infds, outfds, errfds = select.select([sock, ], [], [], conntimeout) 621 | if len(infds) == 0: 622 | if g_usegevent == 1: 623 | sleep(0.5) 624 | continue 625 | timeout = 0 626 | try: 627 | d = conn.read(1024) 628 | except SSLError as e: 629 | sleep(0.5) 630 | continue 631 | readlen = len(d) 632 | if readlen == 0: 633 | sleep(0.5) 634 | continue 635 | data = data + d.replace("\r","") 636 | index = data.find("\n\n") 637 | if index != -1: 638 | gwsname = getgooglesvrnamefromheader(data[0:index]) 639 | return gwsname 640 | elif readlen <= 64: 641 | sleep(0.01) 642 | return "" 643 | except Exception as e: 644 | info = "%s" % e 645 | if len(info) == 0: 646 | info = type(e) 647 | PRINT("Catch Exception(%s) in getgooglesvrname: %s" % (ip, info)) 648 | return "" 649 | 650 | 651 | class Ping(threading.Thread): 652 | ncount = 0 653 | ncount_lock = threading.Lock() 654 | ipcnt = 0 655 | __slots__=["checkqueue","cacheResult"] 656 | def __init__(self,checkqueue,cacheResult): 657 | threading.Thread.__init__(self) 658 | self.queue = checkqueue 659 | self.cacheResult = cacheResult 660 | 661 | def runJob(self): 662 | while not evt_ipramdomstart.is_set(): 663 | evt_ipramdomstart.wait(5) 664 | while not self.cacheResult.queryfinish(): 665 | try: 666 | if self.queue.qsize() == 0 and evt_ipramdomend.is_set(): 667 | break 668 | addrint = self.queue.get(True,2) 669 | ipaddr = to_string(addrint) 670 | self.queue.task_done() 671 | self.addIPCount() 672 | matchblack = False 673 | for blackitem in g_blackiplist: 674 | if ipaddr.startswith(blackitem): 675 | matchblack = True 676 | break 677 | if matchblack: 678 | PRINT("ip: %s in blacklist,skip it" % (ipaddr)) 679 | continue 680 | ssl_obj = my_ssl_wrap() 681 | (ssldomain, costtime,timeout,gwsname,ssl_orgname) = ssl_obj.getssldomain(self.getName(), ipaddr) 682 | if ssldomain is not None: 683 | gwsip,cnt = self.cacheResult.addOKIP(costtime, ipaddr, ssldomain,gwsname) 684 | if cnt != 0: 685 | PRINT("ip: %s,CN: %s,O:%s,svr: %s,ok:1,cnt:%d" % (ipaddr, ssldomain,ssl_orgname,gwsname,cnt)) 686 | elif gwsip: 687 | PRINT("ip: %s,CN: %s,O:%s,svr: %s,t:%dms,ok:0" % (ipaddr, ssldomain,ssl_orgname,gwsname,costtime)) 688 | else: 689 | PRINT("ip: %s,CN: %s,O:%s,svr: %s,not gae" % (ipaddr, ssldomain,ssl_orgname,gwsname)) 690 | elif ssldomain is None: 691 | self.cacheResult.addFailIP(ipaddr) 692 | except Empty: 693 | pass 694 | 695 | def run(self): 696 | try: 697 | Ping.ncount_lock.acquire() 698 | Ping.ncount += 1 699 | Ping.ncount_lock.release() 700 | self.runJob() 701 | except Exception: 702 | raise 703 | finally: 704 | Ping.ncount_lock.acquire() 705 | Ping.ncount -= 1 706 | Ping.ncount_lock.release() 707 | 708 | @staticmethod 709 | def getCount(): 710 | try: 711 | Ping.ncount_lock.acquire() 712 | return Ping.ncount 713 | finally: 714 | Ping.ncount_lock.release() 715 | @staticmethod 716 | def addIPCount(): 717 | try: 718 | Ping.ncount_lock.acquire() 719 | Ping.ipcnt += 1 720 | finally: 721 | Ping.ncount_lock.release() 722 | 723 | 724 | class RamdomIP(threading.Thread): 725 | def __init__(self,checkqueue,cacheResult,cacheip,g_googleipfile): 726 | threading.Thread.__init__(self) 727 | self.ipqueue = checkqueue 728 | self.cacheResult = cacheResult 729 | self.hadaddipcnt = 0 730 | self.cacheip = cacheip 731 | self.g_googleipfile = g_googleipfile 732 | 733 | def ramdomip(self): 734 | iplineslist = [] 735 | skipokcnt = 0 736 | skiperrocnt = 0 737 | iplinelist = [] 738 | totalipcnt = 0 739 | loaddefaultip = False 740 | if os.path.exists(self.g_googleipfile): 741 | try: 742 | fp = open(self.g_googleipfile,"r") 743 | linecnt = 0 744 | for line in fp: 745 | data = line.strip("\r\n") 746 | if data == '@default': 747 | iplineslist.extend(re.split("\r|\n", ip_str_list.strip("\r\n"))) 748 | loaddefaultip = True 749 | else: 750 | iplineslist.append(data) 751 | linecnt += 1 752 | fp.close() 753 | PRINT("load extra ip ok,line:%d,load default ip: %d" % (linecnt,loaddefaultip)) 754 | except Exception as e: 755 | PRINT("load extra ip file error:%s " % str(e) ) 756 | sys.exit(1) 757 | else: 758 | iplineslist.extend(re.split("\r|\n", ip_str_list.strip("\r\n"))) 759 | for iplines in iplineslist: 760 | if len(iplines) == 0 or iplines[0] == '#': 761 | continue 762 | singlelist = [] 763 | ips = re.split(",|\|", iplines) 764 | for line in ips: 765 | if len(line) == 0 or line[0] == '#': 766 | continue 767 | begin, end = splitip(line) 768 | if checkipvalid(begin) == 0 or checkipvalid(end) == 0: 769 | PRINT("ip format is error,line:%s, begin: %s,end: %s" % (line, begin, end)) 770 | continue 771 | nbegin = from_string(begin) 772 | nend = from_string(end) 773 | iplinelist.append([nbegin,nend]) 774 | 775 | if g_checklastgoogleipfirst: 776 | num = 0 777 | for ip in self.cacheResult.filegwsipset: 778 | ip_int = from_string(ip) 779 | self.ipqueue.put(ip_int) 780 | self.cacheip.add(ip_int) 781 | num += 1 782 | if num: 783 | self.hadaddipcnt += num 784 | PRINT("load last gae ip cnt: %d" % num) 785 | evt_ipramdomstart.set() 786 | 787 | hadIPData = True 788 | putdata = False 789 | while hadIPData: 790 | if evt_ipramdomend.is_set(): 791 | break 792 | hadIPData = False 793 | index = -1 794 | emptyindexlist=[] 795 | #PRINT("ramdom ip array: % d" % len(iplinelist)) 796 | for itemlist in iplinelist: 797 | begin = itemlist[0] 798 | end = itemlist[1] 799 | itemlen = end - begin + 1 800 | index += 1 801 | if itemlen <= 0: 802 | continue 803 | if self.cacheResult.queryfinish(): 804 | break 805 | if itemlen > 1000: 806 | selectcnt = 5 807 | elif itemlen <= 2: 808 | selectcnt = itemlen 809 | else: 810 | selectcnt = 2 811 | for i in xrange(0,selectcnt): 812 | k = random.randint(begin,end) 813 | first = True 814 | findOK = True 815 | checkcnt = 0 816 | checkend = k 817 | # try get next index in circle 818 | while k in self.cacheip: 819 | checkcnt += 1 820 | if k < end: 821 | k += 1 822 | else: 823 | k = begin 824 | # if met itself,nee break 825 | if k == checkend : 826 | findOK = False 827 | break 828 | #if checkcnt > 1: 829 | # PRINT("[%d]total cnt: %d,index:%d,ramdom checkcnt:%d,found:%d" % (index,itemlen,checkend-begin,checkcnt,findOK)) 830 | if findOK: 831 | hadIPData = True 832 | self.ipqueue.put(k) 833 | self.cacheip.add(k) 834 | self.hadaddipcnt += 1 835 | if not putdata: 836 | evt_ipramdomstart.set() 837 | putdata = True 838 | if evt_ipramdomend.is_set(): 839 | break 840 | # not found,no need to ramdom next index 841 | if not findOK: 842 | emptyindexlist.insert(0,index) 843 | break 844 | if self.ipqueue.qsize() >= 500: 845 | sleep(1) 846 | for empytindex in emptyindexlist: 847 | iplinelist.pop(empytindex) 848 | #PRINT("remote index: %d" % empytindex ) 849 | if not evt_ipramdomstart.is_set(): 850 | evt_ipramdomstart.set() 851 | 852 | def run(self): 853 | PRINT("begin to get ramdom ip") 854 | self.ramdomip() 855 | evt_ipramdomend.set() 856 | self.cacheip.clear() 857 | qsize = self.ipqueue.qsize() 858 | PRINT("ramdom ip thread stopped.had check ip: %d,rest ip queue size: %d" % (self.hadaddipcnt - qsize,qsize)) 859 | 860 | def from_string(s): 861 | """Convert dotted IPv4 address to integer.""" 862 | return reduce(lambda a, b: a << 8 | b, map(int, s.split("."))) 863 | 864 | 865 | def to_string(ip): 866 | """Convert 32-bit integer to dotted IPv4 address.""" 867 | return ".".join(map(lambda n: str(ip >> n & 0xFF), [24, 16, 8, 0])) 868 | 869 | 870 | g_ipcheck = re.compile(r'^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$') 871 | 872 | 873 | def checkipvalid(ip): 874 | """检查ipv4地址的合法性""" 875 | ret = g_ipcheck.match(ip) 876 | if ret is not None: 877 | "each item range: [0,255]" 878 | for item in ret.groups(): 879 | if int(item) > 255: 880 | return 0 881 | return 1 882 | else: 883 | return 0 884 | 885 | 886 | def splitip(strline): 887 | """从每组地址中分离出起始IP以及结束IP""" 888 | begin = "" 889 | end = "" 890 | if "-" in strline: 891 | "xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx" 892 | begin, end = strline.split("-") 893 | if 1 <= len(end) <= 3: 894 | prefix = begin[0:begin.rfind(".")] 895 | end = prefix + "." + end 896 | elif strline.endswith("."): 897 | "xxx.xxx.xxx." 898 | begin = strline + "0" 899 | end = strline + "255" 900 | elif "/" in strline: 901 | "xxx.xxx.xxx.xxx/xx" 902 | (ip, bits) = strline.split("/") 903 | if checkipvalid(ip) and (0 <= int(bits) <= 32): 904 | orgip = from_string(ip) 905 | end_bits = (1 << (32 - int(bits))) - 1 906 | begin_bits = 0xFFFFFFFF ^ end_bits 907 | begin = to_string(orgip & begin_bits) 908 | end = to_string(orgip | end_bits) 909 | else: 910 | "xxx.xxx.xxx.xxx" 911 | begin = strline 912 | end = strline 913 | 914 | return begin, end 915 | 916 | 917 | def dumpstacks(): 918 | code = [] 919 | for threadId, stack in sys._current_frames().items(): 920 | code.append("\n# Thread: %d" % (threadId)) 921 | for filename, lineno, name, line in traceback.extract_stack(stack): 922 | code.append('File: "%s", line %d, in %s' % (filename, lineno, name)) 923 | if line: 924 | code.append(" %s" % (line.strip())) 925 | PRINT("\n".join(code)) 926 | 927 | def checksingleprocess(ipqueue,cacheResult,max_threads): 928 | threadlist = [] 929 | threading.stack_size(96 * 1024) 930 | PRINT('need create max threads count: %d' % (max_threads)) 931 | for i in xrange(1, max_threads + 1): 932 | ping_thread = Ping(ipqueue,cacheResult) 933 | ping_thread.setDaemon(True) 934 | try: 935 | ping_thread.start() 936 | except threading.ThreadError as e: 937 | PRINT('start new thread except: %s,work thread cnt: %d' % (e, Ping.getCount())) 938 | break 939 | threadlist.append(ping_thread) 940 | try: 941 | quit = False 942 | while not quit: 943 | for p in threadlist: 944 | if p.is_alive(): 945 | p.join(5) 946 | elif Ping.getCount() == 0 or cacheResult.queryfinish(): 947 | quit = True 948 | break 949 | except KeyboardInterrupt: 950 | PRINT("try to interrupt process") 951 | ipqueue.queue.clear() 952 | evt_ipramdomend.set() 953 | cacheResult.close() 954 | 955 | 956 | def sort_tmpokfile(nLastOKFileLineCnt): 957 | if os.path.exists(g_tmpokfile): 958 | ipdict = dict() 959 | tmpfile = g_tmpokfile + ".tmp" 960 | bsortok = False 961 | needsortip = False 962 | lastcostime = 0 963 | ncurline = 0 964 | with open(g_tmpokfile,"r") as fd: 965 | for line in fd: 966 | line = line.replace('NA_', '') 967 | if '[INFO] Add' in line: 968 | line = line.replace('time:', '') 969 | line = line.replace('CN:', '') 970 | nline = line.strip().split(' ') 971 | ips = [nline[6], nline[7], nline[8]] 972 | else: 973 | ips = line.strip().split(' ') 974 | try: 975 | if ips[3].isdigit(): 976 | ips = [ips[0], ips[3], ips[1]] 977 | except: 978 | pass 979 | ncurline += 1 980 | if len(ips) < 3: 981 | continue 982 | ipint = from_string(ips[0]) 983 | # 把当次查询出来的IP放在最前面,因为有一些IP可能上一次的时间少,并且这次又没有查询出来,应该排在新IP后面 984 | oldIP = True if ncurline <= nLastOKFileLineCnt else False 985 | if oldIP == True: 986 | costime = g_NAtimeout + ncurline 987 | else: 988 | costime = int(ips[1]) 989 | if lastcostime > costime: 990 | needsortip = True 991 | lastcostime = costime 992 | ipdict[ipint] = (costime,ips) 993 | if needsortip: 994 | iplist = sorted(ipdict.iteritems(),key = itemgetter(1)) 995 | with open(tmpfile,"w") as wfd: 996 | for item in iplist: 997 | costime = item[1][0] 998 | ips = item[1][1] 999 | if costime >= g_NAtimeout and ips[1][0] != 'N': 1000 | ips[1] = "NA_" + ips[1] 1001 | wfd.write(" ".join(ips)) 1002 | wfd.write("\n") 1003 | bsortok = True 1004 | if bsortok: 1005 | shutil.move(tmpfile,g_tmpokfile) 1006 | PRINT("sort %s file ok" % g_tmpokfile) 1007 | else: 1008 | PRINT("file %s no need sort" % g_tmpokfile) 1009 | 1010 | 1011 | def list_ping(g_googleipfile, max_threads=g_maxthreads): 1012 | if g_useOpenSSL == 1: 1013 | PRINT("support PyOpenSSL") 1014 | if g_usegevent == 1: 1015 | PRINT("support gevent") 1016 | 1017 | cur_time = time.time() 1018 | checkqueue = Queue() 1019 | cacheResult = TCacheResult() 1020 | lastokresult,lasterrorresult = cacheResult.loadLastResult() 1021 | oklen = len(lastokresult) 1022 | errorlen = len(lasterrorresult) 1023 | totalcachelen = oklen + errorlen 1024 | if totalcachelen != 0: 1025 | PRINT("load last result,ok cnt:%d,ok file line:%d,error cnt: %d" % (oklen,cacheResult.okfilelinecnt,errorlen) ) 1026 | 1027 | ramdomip_thread = RamdomIP(checkqueue,cacheResult,lastokresult|lasterrorresult,g_googleipfile) 1028 | ramdomip_thread.setDaemon(True) 1029 | ramdomip_thread.start() 1030 | checksingleprocess(checkqueue,cacheResult,max_threads) 1031 | 1032 | lastokresult.clear() 1033 | lasterrorresult.clear() 1034 | 1035 | cacheResult.flushFailIP() 1036 | ip_list = cacheResult.getIPResult() 1037 | ip_list.sort() 1038 | 1039 | PRINT('try to collect ssl result,check ip cnt: %d,times:%ds' % (Ping.ipcnt,time.time()-cur_time) ) 1040 | op = 'wb' 1041 | if sys.version_info[0] == 3: 1042 | op = 'w' 1043 | ff = open(g_ipfile, op) 1044 | ncount = 0 1045 | for ip in ip_list: 1046 | domain = ip[2] 1047 | if ip[0] > g_maxhandletimeout : 1048 | break 1049 | PRINT("[%s] %d ms,domain: %s,svr:%s" % (ip[1], ip[0], domain,ip[3])) 1050 | if domain is not None: 1051 | if ncount != 0: 1052 | ff.write("|") 1053 | ff.write(ip[1]) 1054 | ncount += 1 1055 | PRINT("write to file %s ok,count:%d " % (g_ipfile, ncount)) 1056 | ff.close() 1057 | nLastOKFileLineCnt = cacheResult.okfilelinecnt 1058 | cacheResult.clearFile() 1059 | if g_needsorttmpokfile: 1060 | sort_tmpokfile(nLastOKFileLineCnt) 1061 | 1062 | 1063 | def checkip(ip): 1064 | if g_useOpenSSL == 1: 1065 | print "use PyOpenSSL to check ",ip 1066 | sslcontext = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) 1067 | sslcontext.set_timeout(30) 1068 | s = socket.socket() 1069 | s.connect((ip, 443)) 1070 | c = OpenSSL.SSL.Connection(sslcontext, s) 1071 | c.set_connect_state() 1072 | print "%s try to handshake " % ( ip ) 1073 | c.do_handshake() 1074 | cert = c.get_peer_certificate() 1075 | print "ssl subject: ",cert.get_subject().get_components() 1076 | c.shutdown() 1077 | s.close() 1078 | else: 1079 | print "use gevent to check ",ip 1080 | s = socket.socket() 1081 | s.settimeout(10) 1082 | c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs=g_cacertfile) 1083 | c.settimeout(10) 1084 | print( "try connect to %s" % (ip)) 1085 | c.connect((ip, 443)) 1086 | cert = c.getpeercert() 1087 | if 'subject' in cert: 1088 | print "ssl subject: ",cert['subject'] 1089 | else: 1090 | print "ssl key: ",cert 1091 | c.close() 1092 | 1093 | 1094 | def move_over(file, i): 1095 | filename = file.split(os.sep)[-1] 1096 | filename = filename.split('.')[0] + "-" + i + ".txt" 1097 | file_name = os.path.join(g_tmpdir, filename) 1098 | if os.path.exists(file_name): 1099 | os.remove(file_name) 1100 | shutil.move(file, file_name) 1101 | 1102 | 1103 | def main(): 1104 | thread = raw_input("Please type max threads(default 50):") 1105 | thread = thread.replace(" ","") 1106 | if thread.isdigit(): 1107 | g_maxthreads = int(thread) 1108 | else: 1109 | g_maxthreads = 50 1110 | files = os.listdir(g_pardir) 1111 | files.sort() 1112 | i = j = 0 1113 | n = len(files) 1114 | global g_googleipfile 1115 | for item in files: 1116 | j += 1 1117 | if "googleip-" in item: 1118 | i = re.findall(r'([0-9]+)',item)[0] 1119 | g_googleipfile = os.path.join(g_pardir, "googleip-%s.txt" % i) 1120 | evt_ipramdomend.clear() 1121 | print "\n", "="*80, "\nbegin check googleip-%s.txt" % i 1122 | list_ping(g_googleipfile, g_maxthreads) 1123 | if os.path.exists(g_tmpokfile): move_over(g_tmpokfile, i) 1124 | if os.path.exists(g_tmpnofile): move_over(g_tmpnofile, i) 1125 | if os.path.exists(g_tmperrorfile): move_over(g_tmperrorfile, i) 1126 | if os.path.exists("googleip-%s.txt" % i): os.remove("googleip-%s.txt" % i) 1127 | elif j == n and i == 0: 1128 | list_ping(g_googleipfile, g_maxthreads) 1129 | 1130 | 1131 | if __name__ == '__main__': 1132 | if len(sys.argv) > 1: 1133 | checkip(sys.argv[1]) 1134 | else: 1135 | main() 1136 | -------------------------------------------------------------------------------- /python/generate_ip_range_bad.bat: -------------------------------------------------------------------------------- 1 | @echo off & title generate ip range bad & cd /d %~dp0 2 | :do 3 | "%~dp0python27.exe" "%~dp0generate_ip_range_bad.py" 4 | pause -------------------------------------------------------------------------------- /python/generate_ip_range_bad.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import re 4 | import subprocess 5 | import sys 6 | import urllib2 7 | import math 8 | import time 9 | import os.path 10 | import ip_utils 11 | 12 | fdir = os.path.dirname(os.path.abspath(__file__)) 13 | 14 | 15 | def parse_range_string(input_lines): 16 | ip_range_list = [] 17 | ip_lines_list = re.split("\r|\n", input_lines) 18 | for raw_line in ip_lines_list: 19 | raw_s = raw_line.split("#") 20 | context_line = raw_s[0] 21 | context_line = context_line.replace(' ', '') 22 | ips = re.split(",|\|", context_line) 23 | for line in ips: 24 | if len(line) == 0: 25 | #print "non line:", line 26 | continue 27 | begin, end = ip_utils.split_ip(line) 28 | if ip_utils.check_ip_valid(begin) == 0 or ip_utils.check_ip_valid(end) == 0: 29 | print("ip format is error,line:%s, begin: %s,end: %s" % (line, begin, end)) 30 | continue 31 | nbegin = ip_utils.ip_string_to_num(begin) 32 | nend = ip_utils.ip_string_to_num(end) 33 | ip_range_list.append([nbegin,nend]) 34 | #print begin, end 35 | ip_range_list.sort() 36 | return ip_range_list 37 | 38 | def merge_range(input_ip_range_list): 39 | output_ip_range_list = [] 40 | range_num = len(input_ip_range_list) 41 | last_begin = input_ip_range_list[0][0] 42 | last_end = input_ip_range_list[0][1] 43 | for i in range(1,range_num): 44 | ip_range = input_ip_range_list[i] 45 | begin = ip_range[0] 46 | end = ip_range[1] 47 | #print "now:",ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 48 | if begin > last_end + 2: 49 | #print "add:",ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 50 | output_ip_range_list.append(ip_utils.ip_num_to_string(last_begin)+ "-" + ip_utils.ip_num_to_string(last_end)) 51 | last_begin = begin 52 | last_end = end 53 | else: 54 | #print "merge:", ip_utils.ip_num_to_string(last_begin), ip_utils.ip_num_to_string(last_end), ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 55 | if end > last_end: 56 | last_end = end 57 | output_ip_range_list.append(ip_utils.ip_num_to_string(last_begin)+ "-" + ip_utils.ip_num_to_string(last_end)) 58 | return output_ip_range_list 59 | 60 | 61 | def download_apic(filename): 62 | url = 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' 63 | try: 64 | data = subprocess.check_output(['wget', url, '-O-']) 65 | except (OSError, AttributeError): 66 | print >> sys.stderr, "Fetching data from apnic.net, "\ 67 | "it might take a few minutes, please wait...\n" 68 | data = urllib2.urlopen(url).read() 69 | with open(filename, "w") as f: 70 | f.write(data) 71 | return data 72 | 73 | 74 | def generage_range_from_apnic(input,feature): 75 | if feature == 2: cnregex = re.compile(r'^apnic\|(?:cn|hk|mo)\|ipv4\|[\d\.]+\|\d+\|\d+\|a\w*$', re.I | re.M ) 76 | else: cnregex = re.compile(r'^apnic\|(?:cn)\|ipv4\|[\d\.]+\|\d+\|\d+\|a\w*$', re.I | re.M ) 77 | cndata = cnregex.findall(input) 78 | results = [] 79 | for item in cndata: 80 | unit_items = item.split('|') 81 | starting_ip = unit_items[3] 82 | num_ip = int(unit_items[4]) 83 | cidr = 32 - int(math.log(num_ip, 2)) 84 | results.append("%s/%s" % (starting_ip, cidr)) 85 | return "\n".join(results) + "\n" 86 | 87 | def load_bad_ip_range(feature): 88 | filename = "delegated-apnic-latest.txt" 89 | apnic_file = os.path.join(fdir, filename) 90 | if not os.path.isfile(apnic_file): 91 | download_apic(apnic_file) 92 | with open(apnic_file) as inf: 93 | apnic_lines = inf.read() 94 | bad_ip_range_lines = generage_range_from_apnic(apnic_lines,feature) 95 | # 添加自定义IP黑名单 96 | input_bad_ip_range_lines = open("ip_bad.txt").read() 97 | return bad_ip_range_lines + input_bad_ip_range_lines 98 | 99 | 100 | def generate_ip_range(feature): 101 | # load input good ip range 102 | file_name = "ip_range_bad.txt" if feature == 1 else "ip_range_bad2.txt" 103 | bad_ip_range = load_bad_ip_range(feature) 104 | ip_range_list = parse_range_string(bad_ip_range) 105 | ip_range_list = merge_range(ip_range_list) 106 | # test ip amount 107 | ip_amount = test_ip_amount(file_name,ip_range_list) 108 | # write out 109 | output_file = os.path.join(fdir, file_name) 110 | fd = open(output_file, "w") 111 | local = 'cn' if feature == 1 else 'cn|hk|mo' 112 | update_time = time.strftime('%Y-%m-%d %H:%M',time.localtime(time.time())) 113 | fd.write("#include %s ip range and bad ip range, update time: %s, amount ip: %s" % (local, update_time, ip_amount) + "\n") 114 | fd.write("\n".join(x for x in ip_range_list)) 115 | fd.close() 116 | 117 | 118 | def test_ip_amount(file_name,ip_lists): 119 | amount = 0 120 | for ip in ip_lists: 121 | begin, end = ip_utils.split_ip(ip) 122 | ip_begin_str = begin.split('.') 123 | ip_end_str = end.split('.') 124 | if ip_begin_str[3] == '0': ip_begin_str[3] = '1' 125 | if ip_end_str[3] == '255': ip_end_str[3] = '254' 126 | str_1 = (int(ip_end_str[0]) - int(ip_begin_str[0])) * 16646144 127 | str_2 = (int(ip_end_str[1]) - int(ip_begin_str[1])) * 65024 128 | str_3 = (int(ip_end_str[2]) - int(ip_begin_str[2])) * 254 129 | str_4 = int(ip_end_str[3]) - int(ip_begin_str[3]) + 1 130 | num = str_1 + str_2 + str_3 + str_4 131 | amount += num 132 | #print begin, end, num 133 | amount = format(amount, ',') 134 | print "%s amount ip: %s \n" % (file_name, amount) 135 | return amount 136 | 137 | 138 | if __name__ == "__main__": 139 | generate_ip_range(1) 140 | # 包含香港澳门的IP黑名单 141 | # generate_ip_range(2) -------------------------------------------------------------------------------- /python/ip_bad.txt: -------------------------------------------------------------------------------- 1 | # 保留IP地址 2 | 0.0.0.0/8 3 | 10.0.0.0/8 4 | 100.64.0.0/10 5 | 127.0.0.0/8 6 | 169.254.0.0/16 7 | 172.16.0.0/12 8 | 192.0.0.0/24 9 | 192.0.2.0/24 10 | 192.88.99.0/24 11 | 192.168.0.0/16 12 | 198.18.0.0/15 13 | 198.51.100.0/24 14 | 203.0.113.0/24 15 | 224.0.0.0/3 16 | 255.255.255.255/32 17 | 18 | 130.211.0.0/16 # Empty ip range, no route to it. 19 | 20 | # 不可用216段 21 | 216.58.196.0/24 22 | 216.58.208.0/20 23 | 216.239.32.0/19 24 | 25 | # not GGC IP 26 | # null -------------------------------------------------------------------------------- /python/iptools.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import re 5 | import os 6 | import netaddr 7 | import ip_utils 8 | 9 | # Support format(支持的格式): 10 | # # Comment (#后面为注释) 11 | # 12 | # range seperater: 13 | # 每个范围可以用 半角逗号(,) 和竖线(|) 或分行进行分割 14 | # 15 | # Single range format: (单个范围的格式): 16 | # "xxx.xxx.xxx-xxx.xxx-xxx" (范围格式) 17 | # "xxx.xxx.xxx." (前缀格式) 18 | # "xxx.xxx.xxx.xxx/xx" (掩码格式) 19 | # "xxx.xxx.xxx.xxx" (单个ip) 20 | 21 | g_filedir = os.path.dirname(os.path.abspath(__file__)) 22 | if os.name == "nt": 23 | g_pardir = os.path.abspath(os.path.join(g_filedir, os.path.pardir)) 24 | else: 25 | g_pardir = g_filedir 26 | 27 | # 包含原始IP段的文件 28 | ip_origin_filename = "ip_range_origin.txt" 29 | ip_origin = os.path.join(g_pardir, ip_origin_filename) 30 | # IP转换后输出的文件 31 | ip_output_filename = "ip_output.txt" 32 | ip_output_file = os.path.join(g_pardir, ip_output_filename) 33 | # checkgoogleip 生成的可用IP文件 34 | ip_tmpok_filename = "ip_tmpok.txt" 35 | ip_tmpok_file = os.path.join(g_pardir, ip_tmpok_filename) 36 | # 谷歌IP段文件 37 | googleip_fimename = "googleip.txt" 38 | googleip = os.path.join(g_pardir, googleip_fimename) 39 | # 包含IP段黑名单的文件 40 | ip_range_bad = os.path.join(g_filedir, "ip_range_bad.txt") 41 | # 自定义IP黑名单的文件 42 | ip_range_bad_csm = os.path.join(g_pardir, "ip_bad_csm.txt") 43 | 44 | input_good_range_lines = open(ip_origin).read() 45 | input_bad_ip_range_lines = open(ip_range_bad).read() 46 | # 自定义IP黑名单 47 | if os.path.isfile(ip_range_bad_csm): 48 | input_bad_ip_range_lines += "\n" + open(ip_range_bad_csm).read() 49 | 50 | 51 | if os.name == "nt": 52 | coding = "GBK" 53 | else: 54 | coding = "utf-8" 55 | 56 | def print_range_list(ip_range_list): 57 | for ip_range in ip_range_list: 58 | begin = ip_range[0] 59 | end = ip_range[1] 60 | print ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 61 | 62 | 63 | def parse_range_string(input_lines): 64 | ip_range_list = [] 65 | 66 | ip_lines_list = re.split("\r|\n", input_lines) 67 | for raw_line in ip_lines_list: 68 | raw_s = raw_line.split("#") 69 | context_line = raw_s[0] 70 | 71 | context_line = context_line.replace(' ', '') 72 | 73 | ips = re.split(",|\|", context_line) 74 | for line in ips: 75 | if len(line) == 0: 76 | #print "non line:", line 77 | continue 78 | begin, end = ip_utils.split_ip(line) 79 | if ip_utils.check_ip_valid(begin) == 0 or ip_utils.check_ip_valid(end) == 0: 80 | print("ip format is error,line:%s, begin: %s,end: %s" % (line, begin, end)) 81 | continue 82 | nbegin = ip_utils.ip_string_to_num(begin) 83 | nend = ip_utils.ip_string_to_num(end) 84 | ip_range_list.append([nbegin,nend]) 85 | #print begin, end 86 | 87 | ip_range_list.sort() 88 | 89 | return ip_range_list 90 | 91 | 92 | def merge_range(input_ip_range_list): 93 | output_ip_range_list = [] 94 | range_num = len(input_ip_range_list) 95 | 96 | last_begin = input_ip_range_list[0][0] 97 | last_end = input_ip_range_list[0][1] 98 | for i in range(1,range_num): 99 | ip_range = input_ip_range_list[i] 100 | begin = ip_range[0] 101 | end = ip_range[1] 102 | 103 | #print "now:",ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 104 | 105 | if begin > last_end + 1: 106 | #print "add:",ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 107 | output_ip_range_list.append([last_begin, last_end]) 108 | last_begin = begin 109 | last_end = end 110 | else: 111 | print "merge:", ip_utils.ip_num_to_string(last_begin), ip_utils.ip_num_to_string(last_end), ip_utils.ip_num_to_string(begin), ip_utils.ip_num_to_string(end) 112 | if end > last_end: 113 | last_end = end 114 | 115 | output_ip_range_list.append([last_begin, last_end]) 116 | 117 | return output_ip_range_list 118 | 119 | 120 | def filter_ip_range(good_range, bad_range): 121 | out_good_range = [] 122 | bad_i = 0 123 | 124 | bad_begin, bad_end = bad_range[bad_i] 125 | 126 | for good_begin, good_end in good_range: 127 | while True: 128 | if good_begin > good_end: 129 | print("bad good ip range when filter:%s-%s" % (ip_utils.ip_num_to_string(good_begin), ip_utils.ip_num_to_string(good_end))) 130 | break 131 | if good_end < bad_begin: 132 | # case: 133 | # [ good ] 134 | # [ bad ] 135 | out_good_range.append([good_begin, good_end]) 136 | break 137 | elif bad_end < good_begin: 138 | # case: 139 | # [ good ] 140 | # [ bad ] 141 | bad_i += 1 142 | if bad_i < len(bad_range): 143 | bad_begin, bad_end = bad_range[bad_i] 144 | continue 145 | else: 146 | out_good_range.append([good_begin, good_end]) 147 | break 148 | elif good_begin <= bad_begin and good_end <= bad_end: 149 | # case: 150 | # [ good ] 151 | # [ bad ] 152 | print("cut bad ip case 1:%s - %s" % (ip_utils.ip_num_to_string(bad_begin), ip_utils.ip_num_to_string(good_end))) 153 | if bad_begin - 1 > good_begin: 154 | out_good_range.append([good_begin, bad_begin - 1]) 155 | break 156 | elif good_begin >= bad_begin and good_end == bad_end: 157 | # case: 158 | # [ good ] 159 | # [ bad ] 160 | print("cut bad ip case 2:%s - %s" % (ip_utils.ip_num_to_string(good_begin), ip_utils.ip_num_to_string(bad_end))) 161 | 162 | bad_i += 1 163 | if bad_i < len(bad_range): 164 | bad_begin, bad_end = bad_range[bad_i] 165 | break 166 | elif good_begin >= bad_begin and good_end > bad_end: 167 | # case: 168 | # [ good ] 169 | # [ bad ] 170 | print("cut bad ip case 3:%s - %s" % (ip_utils.ip_num_to_string(good_begin), ip_utils.ip_num_to_string(bad_end))) 171 | good_begin = bad_end + 1 172 | bad_i += 1 173 | if bad_i < len(bad_range): 174 | bad_begin, bad_end = bad_range[bad_i] 175 | continue 176 | else: 177 | out_good_range.append([bad_end + 1, good_end]) 178 | break 179 | elif good_begin <= bad_begin and good_end >= bad_end: 180 | # case: 181 | # [ good ] 182 | # [ bad ] 183 | out_good_range.append([good_begin, bad_begin - 1]) 184 | print("cut bad ip case 4:%s - %s" % (ip_utils.ip_num_to_string(bad_begin), ip_utils.ip_num_to_string(bad_end))) 185 | good_begin = bad_end + 1 186 | bad_i += 1 187 | if bad_i < len(bad_range): 188 | bad_begin, bad_end = bad_range[bad_i] 189 | continue 190 | else: 191 | out_good_range.append([bad_end + 1, good_end]) 192 | break 193 | elif good_begin >= bad_begin and good_end <= bad_end: 194 | # case: 195 | # [good] 196 | # [ bad ] 197 | print("cut bad ip case 5:%s - %s" % (ip_utils.ip_num_to_string(good_begin), ip_utils.ip_num_to_string(good_end))) 198 | break 199 | else: 200 | print("any case?") 201 | 202 | return out_good_range 203 | 204 | 205 | # 整合IP段去黑名单IP段并排序 206 | def generate_ip_range(feature='', good_range=None): 207 | if not feature: 208 | feature = raw_input( u"\nIP段格式: 1、x.x.x.x-x.x.x.x 2、x.x.x.x/xx ".encode(coding) ) 209 | if feature == '': feature = 1 210 | print("\nMerge Good ip range:") 211 | if good_range: 212 | ip_range_list = parse_range_string(good_range) 213 | else: 214 | ip_range_list = parse_range_string(input_good_range_lines) 215 | ip_range_list = merge_range(ip_range_list) 216 | 217 | print("\nMerge Bad ip range:") 218 | bad_range_list = parse_range_string(input_bad_ip_range_lines) 219 | bad_range_list = merge_range(bad_range_list) 220 | 221 | print("\nCut Bad ip range:") 222 | ip_range_list = filter_ip_range(ip_range_list, bad_range_list) 223 | 224 | # write out 225 | ip_out_lists = [] 226 | for ip_range in ip_range_list: 227 | begin = ip_range[0] 228 | end = ip_range[1] 229 | ip_out_lists.append(ip_utils.ip_num_to_string(begin) + "-" + ip_utils.ip_num_to_string(end)) 230 | if int(feature) == 2: ip_out_lists = ip_range_to_cidr(ip_out_lists) 231 | open(googleip, 'w').write('\n'.join(x for x in ip_out_lists) + '\n') 232 | 233 | 234 | def test_ip_num(begin, end): 235 | ip_begin_str = begin.strip().split('.') 236 | ip_end_str = end.strip().split('.') 237 | 238 | if ip_begin_str[3] == '0': ip_begin_str[3] = '1' 239 | if ip_begin_str[3] == '255': ip_begin_str[3] = '254' 240 | if ip_end_str[3] == '0': ip_end_str[3] = '1' 241 | if ip_end_str[3] == '255': ip_end_str[3] = '254' 242 | 243 | str_1 = (int(ip_end_str[0]) - int(ip_begin_str[0])) * 16646144 244 | str_2 = (int(ip_end_str[1]) - int(ip_begin_str[1])) * 65024 245 | str_3 = (int(ip_end_str[2]) - int(ip_begin_str[2])) * 254 246 | str_4 = int(ip_end_str[3]) - int(ip_begin_str[3]) + 1 247 | 248 | num = str_1 + str_2 + str_3 + str_4 249 | return num 250 | 251 | 252 | def test_ip_amount(ip_lists): 253 | amount = 0 254 | for ip in ip_lists: 255 | begin, end = ip_utils.split_ip(ip) 256 | num = test_ip_num(begin, end) 257 | amount += num 258 | #print begin, end, num 259 | print "amount ip: %s \n" % format(amount, ',') 260 | return amount 261 | 262 | 263 | # 统计IP数量,超过1KW提示分割 264 | def test_load(): 265 | print("\nBegin test load %s" % googleip_fimename) 266 | fd = open(googleip) 267 | 268 | i = 1 269 | amount = 0 270 | ip_rip = 10000000 # 以1KW个IP分割IP段 271 | ip_lists = [] 272 | ip_range_list = [] 273 | 274 | ip_range = re.split("\r|\n", fd.read()) 275 | for ip_line in ip_range: 276 | if len(ip_line) == 0 or ip_line[0] == '#': 277 | continue 278 | ip_line = ip_line.replace(' ', '') 279 | ips = ip_line.split("|") 280 | for ip in ips: 281 | if len(ip) == 0: 282 | continue 283 | ip_range_list.append(ip) 284 | fd.close() 285 | 286 | ip_amount = test_ip_amount(ip_range_list) 287 | if ip_amount > ip_rip: 288 | rip = raw_input( u"IP数量超过%s,是否分割IP段: 1.是 2.否 ".encode(coding) % format(i*ip_rip, ',') ) 289 | else: 290 | return 291 | rip = rip.strip() 292 | if rip == '2' or rip != '1': 293 | print 294 | return 295 | 296 | for line in ip_range_list: 297 | begin, end = ip_utils.split_ip(line) 298 | num = test_ip_num(begin, end) 299 | amount += num 300 | ip_lists.append(line) 301 | 302 | filename = '%s-%03d.txt' % (googleip_fimename.split(".")[0], i) 303 | if amount > i*ip_rip: 304 | print "ip amount over %s" % format(i*ip_rip, ',') 305 | ip_lists = ip_range_to_cidr(ip_lists) 306 | open(filename,'w').write('\n'.join(x for x in ip_lists) + '\n') 307 | i += 1 308 | ip_lists = [] 309 | elif amount == ip_amount: 310 | print "ip amount below %s" % format(i*ip_rip, ','), '\n' 311 | ip_lists = ip_range_to_cidr(ip_lists) 312 | if amount > ip_rip : open(filename,'w').write('\n'.join(x for x in ip_lists) + '\n') 313 | 314 | 315 | # 转换IP范围,需要 netaddr,将IP转换为CIDR格式 316 | def ip_range_to_cidr(ip_str_lists): 317 | ip_cidr_network = [] 318 | ip_cidr_lists = [] 319 | for ip_str in ip_str_lists: 320 | begin, end = ip_utils.split_ip(ip_str) 321 | cidrs = netaddr.iprange_to_cidrs(begin, end) 322 | for ip in cidrs: 323 | ip_cidr_network.append(ip) 324 | for ip_cidr in ip_cidr_network: 325 | ip_cidr_lists.append(str(ip_cidr)) 326 | return ip_cidr_lists 327 | 328 | 329 | # convert_ip_tmpok(延时, 格式, 有效IP数) 转换/提取 ip_tmpok.txt 330 | def convert_ip_tmpok(timeout, format, good_ip_num=0): 331 | with open(ip_tmpok_file) as ip_tmpok: 332 | new_line_list = sort_tmpok(ip_tmpok, format, timeout) 333 | if format == 1: 334 | out = '|'.join(x for x in new_line_list) 335 | out+= '\n\n"'+'", "'.join(x for x in new_line_list)+'"' 336 | elif format == 2: 337 | new_ip_range = extract_ip(new_line_list, good_ip_num) 338 | out = '\n'.join(x for x in new_ip_range) if new_ip_range else '' 339 | elif format == 3: 340 | out = '\n'.join(x[0] + " " + x[2] + " gws " + x[1] + " 0" for x in new_line_list) 341 | if len(out) > 6: 342 | print(out + "\n") 343 | open(ip_output_file, 'w').write(out + '\n') 344 | else: 345 | print "\n No enough ip! \n" 346 | 347 | 348 | # extract_ip(需要提取的IP数组, 有效IP数) 349 | def extract_ip(filter_ip, good_ip_num): 350 | if len(filter_ip) < 1: 351 | return False 352 | ip_lists = [] 353 | ip_range = [] 354 | for ip in filter_ip: 355 | ip = ip.split('.') 356 | ip_lists.append(ip) 357 | if good_ip_num == 1: 358 | for ip in ip_lists: 359 | ip = ip[0] + "." + ip[1] + "." + ip[2] + ".0/24" 360 | ip_range.append(ip) 361 | else: 362 | i = d = 1 363 | for ip in ip_lists: 364 | if i == 1: last_ip = ip 365 | if not i == 1: 366 | if ip[0] == last_ip[0] and ip[1] == last_ip[1] and ip[2] == last_ip[2]: 367 | d += 1 368 | if d >= good_ip_num: 369 | ip = ip[0] + "." + ip[1] + "." + ip[2] + ".0/24" 370 | ip_range.append(ip) 371 | d = 1 372 | else: 373 | last_ip = ip 374 | d = 1 375 | i += 1 376 | new_ip_range = list(set(ip_range)) 377 | new_ip_range.sort(key=ip_range.index) 378 | #print new_ip_range 379 | return new_ip_range 380 | 381 | 382 | # sort_tmpok(ip_tmpok文件内容, 格式, 延时) 对ip_tmpok文件内容进行整理和排序,并剔除重复IP 383 | def sort_tmpok(ip_tmpok, format, timeout=0): 384 | line_list = [] 385 | ip_list = [] 386 | new_line_list = [] 387 | for line in ip_tmpok: 388 | line = line.replace('NA_', '') 389 | if '[INFO] Add' in line: 390 | line = line.replace('time:', '') 391 | line = line.replace('CN:', '') 392 | nline = line.strip().split(' ') 393 | sline = [nline[6], nline[7], nline[8], 'gws'] 394 | else: 395 | sline = line.strip().split(' ') 396 | try: 397 | if sline[3].isdigit(): 398 | sline = [sline[0], sline[3], sline[1]] 399 | except: 400 | pass 401 | line_list.append(sline) 402 | if format == 2: # 提取IP段使用IP来进行排序而不是延时 403 | line_list.sort(key=lambda x: ( int(x[0].split('.')[0]), int(x[0].split('.')[1]), int(x[0].split('.')[2]), int(x[0].split('.')[3]) )) 404 | else: 405 | line_list.sort(key=lambda x: int(x[1])) 406 | for line in line_list: 407 | if line[0] not in ip_list: 408 | ip_list.append(line[0]) 409 | if format == 3: # 转换为XX-Net格式需要返回整行数组 410 | new_line_list.append(line) 411 | elif format == 4: # 整合tmp文件夹的ip_tmpok文件需要返回整行内容 412 | new_line_list.append(' '.join(x for x in line)) 413 | else: 414 | if int(line[1]) < timeout: new_line_list.append(line[0]) 415 | return new_line_list 416 | 417 | 418 | def convertip(iplist): 419 | if iplist == "": return 420 | fd = open(ip_output_file, 'w') 421 | iplist = iplist.replace(' ','') 422 | if '|' in iplist: 423 | out = '"' + iplist.replace('|', '", "') + '"' 424 | else: 425 | ip_str = [] 426 | ip_str = iplist.replace('"','').split(',') 427 | out = '|'.join(x for x in ip_str) 428 | print('\n' + out + '\n') 429 | fd.write(out) 430 | fd.close() 431 | 432 | 433 | # 整合tmp目录下所有的可用IP 434 | def integrate_tmpok(): 435 | tmpdir = os.path.join(g_pardir, "tmp") 436 | files = os.listdir(tmpdir) 437 | files.sort() 438 | ip_tmpok_lists = [] 439 | for item in files: 440 | if "ip_tmpok-" in item: 441 | i = re.findall(r'([0-9]+)',item)[0] 442 | ip_tmpok_lists += open(os.path.join(tmpdir, "ip_tmpok-%s.txt" % i)).readlines() 443 | if len(ip_tmpok_lists) < 3: 444 | print "\n doesn't find any %s in tmp/ \n" % ip_tmpok_filename 445 | else: 446 | #print ip_tmpok_lists 447 | try: 448 | ip_tmpok_lists += open(ip_tmpok_file).readlines() 449 | except: 450 | pass 451 | out_lists = sort_tmpok(ip_tmpok_lists, 4) 452 | output = '\n'.join(x for x in out_lists) 453 | print output + "\n" 454 | open(ip_tmpok_file, "w").write(output + '\n') 455 | 456 | 457 | # 选项 458 | def main(): 459 | add_tmpok = " " 460 | if os.path.exists(os.path.join(g_pardir, "tmp", "ip_tmpok-001.txt")): 461 | add_tmpok = u"7. 整合tmp目录下的可用IP到 {0} \n\n ".encode(coding).format(ip_tmpok_filename) 462 | cmd = raw_input( 463 | u""" 464 | 请选择需要处理的操作, 输入对应的数字并按下回车: 465 | 466 | 1. 提取 {1} 中的IP, 用|分隔以及 json 格式, 并生成 {0} 467 | 468 | 2. 提取 {1} 中有效IP的IP段, 并生成 {0} 469 | 470 | 3. 转换 {1} 中的IP为 XX-Net 格式, 并生成 {0} 471 | 472 | 4. 整合 {2} 中的IP段, 并生成 {3} 473 | 474 | 5. 统计 {3} 中的IP数量, 超过1KW提示分割 475 | 476 | 6. 同时执行4、5两条命令 477 | 478 | """.encode(coding).format(ip_output_filename, ip_tmpok_filename, ip_origin_filename, googleip_fimename) + add_tmpok 479 | ) 480 | cmd = cmd.replace(" ","") 481 | if cmd == '1' or cmd == '2' or cmd == '3': 482 | if not os.path.isfile(ip_tmpok_file): 483 | print "\n %s doesn't exist\n" % ip_tmpok_filename 484 | return 485 | if cmd == '1': 486 | timeout = raw_input( u"\n请输入IP延时(不用单位), 默认2000毫秒: ".encode(coding) ) 487 | if timeout == '': timeout = 2000 488 | convert_ip_tmpok(int(timeout), 1) 489 | elif cmd == '2': 490 | timeout = raw_input( u"\n提取IP的延时范围(不用单位), 默认2000毫秒: ".encode(coding) ) 491 | if timeout == '': timeout = 2000 492 | good_ip_num = raw_input( u"\n在/24范围内有效IP数, 输入1提取所有/24的IP段: ".encode(coding) ) 493 | if good_ip_num == '': good_ip_num = 1 494 | convert_ip_tmpok(int(timeout), 2, int(good_ip_num)) 495 | elif cmd == '3': 496 | convert_ip_tmpok(0, 3) 497 | elif cmd == '4': 498 | generate_ip_range() 499 | elif cmd == '5': 500 | test_load() 501 | elif cmd == '6': 502 | generate_ip_range() 503 | test_load() 504 | #elif cmd == '7': 505 | # iplist = raw_input( u"\n请输入需要转换的IP, 可使用右键->粘贴: \n".encode(coding) ) 506 | # convertip(iplist) 507 | elif cmd == '7' and add_tmpok != " ": 508 | integrate_tmpok() 509 | else: 510 | main() 511 | 512 | if __name__ == '__main__': 513 | main() 514 | -------------------------------------------------------------------------------- /python/pydig.md: -------------------------------------------------------------------------------- 1 | pydig 2 | ===== 3 | 4 | ## 软件说明 5 | * 一个简单的使用dig扩展功能获取谷歌IP的工具 6 | * 支持平台:Windows | Linux 7 | * 支持网站:[Best DNS](http://www.bestdns.org/), [Ungefiltert surfen](http://www.ungefiltert-surfen.de/) 8 | 9 | ## 使用方法: 10 | **启动程序命令:**Windows 直接双击 dig.bat,Linux 使用命令 `$ python pydig.py` 11 | 12 | 1. 方法一: 13 | 1. 在 dig.bat 所在目录新建一个 dig_url.txt。 14 | 2. 到 [Best DNS](http://www.bestdns.org/) 首页 **Where do you need a DNS from?** 下方选一个地区的网址进行复制,或者到 [Ungefiltert surfen](http://www.ungefiltert-surfen.de/) 选择 **Öffentliche Nameserver nach Ländern** 下方的地区网址进行复制,粘贴到 dig_url.txt,一行一条。 15 | 2. 启动程序获取返回的IP段。 16 | 2. 方法二: 17 | 1. 在 dig.bat 所在目录新建一个 dig_ip.txt,将模拟IP地址复制进去,一行一个。 18 | 2. 启动程序获取返回的IP段。 19 | 3. 方法三: 20 | 1. 启动程序,输入网址或IP地址,按下回车自动 dig 网址中的IP。 21 | 22 | * 生成 dig_range.txt 后将里面的IP段导入 googleip.txt 中并使用 checkip 扫描。 23 | * 其他功能修改请参考 pydig.py 文件里的中文注释。 24 | -------------------------------------------------------------------------------- /python/pydig.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import sys 5 | sys.dont_write_bytecode = True 6 | 7 | import os, re, time, threading 8 | from urllib2 import Request, urlopen 9 | from pydig.main import main as pydig 10 | from pydig.common import LOGFILE, roll_file 11 | from ip_utils import check_ip_valid 12 | from iptools import generate_ip_range 13 | 14 | dig_filedir = os.path.dirname(os.path.abspath(__file__)) 15 | dig_pardir = os.path.abspath(os.path.join(dig_filedir, os.path.pardir)) 16 | dig_tmpdir = os.path.join(dig_pardir, "tmp") 17 | if not os.path.exists(dig_tmpdir): 18 | os.mkdir(dig_tmpdir) 19 | 20 | #默认IP,当IP被判定为无效时使用此IP代替 21 | default_ip = '1.255.22.36' 22 | #默认读取的URL文件,优先级大于 dig_ipfile 23 | dig_urlfile = os.path.join(dig_pardir, 'dig_url.txt') 24 | #默认读取的IP文件,无此文件需手动输入网址或IP 25 | dig_ipfile = os.path.join(dig_pardir, 'dig_ip.txt') 26 | #pydig日志文件,别修改 27 | dig_logfile = LOGFILE 28 | #pydig日志最大行数 29 | dig_loglength = 6000 30 | #pydig失败的IP文件 31 | dig_error = os.path.join(dig_tmpdir, 'dig_tmperror.txt') 32 | #pydig成功的IP文件 33 | dig_finished = os.path.join(dig_tmpdir, 'dig_tmpfinished.txt') 34 | #pydig结束后整理的IP段文件 35 | dig_iprange = os.path.join(dig_pardir, 'dig_range.txt') 36 | #pydig最大线程数 37 | dig_max_threads = 50 38 | #pydig结束后重新dig一次dig_error中的IP 39 | dig_redig_error = 1 40 | #pydig结束后整合IP段到 googleip.txt 41 | dig_sort_range = 0 42 | 43 | HEADER = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0'} 44 | 45 | if os.name == "nt": 46 | coding = "GBK" 47 | else: 48 | coding = "utf-8" 49 | 50 | 51 | def dig_ip(ip): 52 | if not check_ip_valid(ip): 53 | print('ip: %s is invalid, reset to default ip: %s' % (ip, default_ip)) 54 | ip = default_ip 55 | print('\ndig ip: %s' % ip) 56 | cmd = ['1', '+subnet=%s/32' % ip, '@ns1.google.com', 'www.google.com'] 57 | code = pydig(cmd) 58 | if code == 502: 59 | open(dig_error, "a").write(ip + "\n") 60 | else: 61 | open(dig_finished, "a").write(ip + "\n") 62 | 63 | 64 | def load_ip(filename): 65 | ips = [] 66 | with open(filename) as fd: 67 | for line in fd: 68 | ip = line.strip() 69 | ips.append(ip) 70 | return ips 71 | 72 | 73 | def load_url(filename): 74 | ips = [] 75 | urls = [] 76 | with open(filename) as fd: 77 | for line in fd: 78 | url = line.strip() 79 | urls.append(url) 80 | for url in urls: 81 | ips += get_ip_from_url(url) 82 | return ips 83 | 84 | 85 | def get_ip_from_url(url, filename=dig_ipfile): 86 | ips = [] 87 | if not url.startswith('http'): 88 | url = 'http://' + url 89 | try: 90 | print('download url page: %s' % url) 91 | req = Request(url, headers=HEADER) 92 | html = urlopen(req, timeout=5).read() 93 | except: 94 | print('download url page: %s fail, try again.' % url) 95 | time.sleep(2) 96 | try: 97 | req = Request(url, headers=HEADER) 98 | html = urlopen(req, timeout=5).read() 99 | except: 100 | print('download url page: %s fail!' % url) 101 | return ips 102 | if 'bestdns' in url: 103 | ips = re.compile(r'

Nameserver (\d+.\d+.\d+.\d+) Details:

').findall(html) 104 | elif 'ungefiltert-surfen' in url: 105 | ips = re.compile(r'searchtext=(\d+.\d+.\d+.\d+)').findall(html) 106 | else: 107 | ips = re.compile(r'(\d+.\d+.\d+.\d+)').findall(html) 108 | output = '\n'.join(ip for ip in ips) + '\n' 109 | open(filename, 'a').write(output) 110 | return ips 111 | 112 | 113 | def load_ip_range(filename): 114 | ip_range = [] 115 | if not os.path.isfile(filename): 116 | return ip_range 117 | with open(filename) as fd: 118 | for line in fd: 119 | range = line.strip() 120 | ip_range.append(range) 121 | return ip_range 122 | 123 | 124 | def get_ip_range(filename, old_list=[]): 125 | ip_range = old_list 126 | if not os.path.isfile(filename): 127 | return ip_range 128 | logfile = open(filename).read() 129 | ips = re.compile(r'(\d+.\d+.\d+.\d+)').findall(logfile) 130 | for ip in ips: 131 | ip = ip.strip().split('.') 132 | range = ip[0] + '.' + ip[1] + '.' + ip[2] + '.0/24' 133 | ip_range.append(range) 134 | ip_range = list(set(ip_range)) 135 | return ip_range 136 | 137 | 138 | class DIG(): 139 | def __init__(self, ips, finishedip, max_thread_num): 140 | self.dig_lock = threading.Lock() 141 | self.dig_ips = ips 142 | self.dig_finishedip = finishedip 143 | self.dig_max_thread_num = max_thread_num 144 | self.dig_thread_num = 0 145 | self.dig_ipdict = [] 146 | 147 | def dig_ip_worker(self): 148 | try: 149 | for ip in self.dig_ips: 150 | if ip in self.dig_ipdict or ip in self.dig_finishedip: 151 | continue 152 | self.dig_ipdict.append(ip) 153 | if not check_ip_valid(ip): 154 | print('ip: %s is invalid, reset to default ip: %s' % (ip, default_ip)) 155 | ip = default_ip 156 | print('\ndig ip: %s' % ip) 157 | cmd = ['1', '+subnet=%s/32' % ip, '@ns1.google.com', 'www.google.com'] 158 | code = pydig(cmd) 159 | self.dig_lock.acquire() 160 | if code == 502: 161 | open(dig_error, "a").write(ip + "\n") 162 | else: 163 | open(dig_finished, "a").write(ip + "\n") 164 | self.dig_lock.release() 165 | except: 166 | pass 167 | finally: 168 | self.dig_lock.acquire() 169 | print 'dig_ip_worker exit' 170 | self.dig_thread_num -= 1 171 | self.dig_lock.release() 172 | 173 | def start_dig(self): 174 | new_thread_num = self.dig_max_thread_num - self.dig_thread_num 175 | if new_thread_num < 1: 176 | return 177 | ip_num = len(self.dig_ips) 178 | if new_thread_num > ip_num: 179 | new_thread_num = ip_num 180 | for i in range(0, new_thread_num): 181 | self.dig_lock.acquire() 182 | self.dig_thread_num += 1 183 | self.dig_lock.release() 184 | d = threading.Thread(target = self.dig_ip_worker) 185 | d.start() 186 | time.sleep(0.1) 187 | while self.dig_thread_num > 5: 188 | time.sleep(5) 189 | 190 | 191 | def main(): 192 | ip = '' 193 | ips = [] 194 | finishedip = [] 195 | if os.path.isfile(dig_urlfile): 196 | ips = load_url(dig_urlfile) 197 | roll_file(dig_urlfile) 198 | elif os.path.isfile(dig_ipfile): 199 | ips = load_ip(dig_ipfile) 200 | else: 201 | text = raw_input(u'\n请输入网址或IP:'.encode(coding)) 202 | text = text.strip() 203 | ip = text 204 | if 'www' in text: 205 | ips = get_ip_from_url(text) 206 | 207 | if os.path.isfile(dig_finished): 208 | finishedip = load_ip(dig_finished) 209 | 210 | if os.path.isfile(dig_logfile): 211 | with open(dig_logfile, "r") as fd: 212 | lines = fd.readlines() 213 | line_num = len(lines) 214 | if line_num >= dig_loglength: 215 | roll_file(dig_logfile) 216 | 217 | if ips: 218 | dig = DIG(ips, finishedip, dig_max_threads) 219 | dig.start_dig() 220 | elif ip: 221 | dig_ip(ip) 222 | else: 223 | main() 224 | 225 | if dig_redig_error and os.path.isfile(dig_error): 226 | print '\nredig ip from %s' % dig_error 227 | errorip = load_ip(dig_error) 228 | errorip = list(set(errorip)) 229 | roll_file(dig_error) 230 | dig = DIG(errorip, finishedip, dig_max_threads) 231 | dig.start_dig() 232 | 233 | old_list = load_ip_range(dig_iprange) 234 | ip_range = get_ip_range(dig_logfile, old_list) 235 | output = '\n'.join(x for x in ip_range) + '\n' 236 | open(dig_iprange, 'w').write(output) 237 | roll_file(dig_ipfile) 238 | print 'dig finished!' 239 | 240 | if dig_sort_range: 241 | print 'begin sort ip and merge into googleip.txt' 242 | good_range = open('googleip.txt').read() 243 | good_range += open(dig_iprange).read() 244 | generate_ip_range(2, good_range) 245 | 246 | 247 | if __name__ == '__main__': 248 | if len(sys.argv) > 1: 249 | sys.exit(main(sys.argv)) 250 | else: 251 | main() -------------------------------------------------------------------------------- /python/python27.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xyuanmu/checkiptools/f4a179bd566b4ed732b17ef0d5645a94f6714f25/python/python27.dll -------------------------------------------------------------------------------- /python/python27.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xyuanmu/checkiptools/f4a179bd566b4ed732b17ef0d5645a94f6714f25/python/python27.exe -------------------------------------------------------------------------------- /python/python27.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xyuanmu/checkiptools/f4a179bd566b4ed732b17ef0d5645a94f6714f25/python/python27.zip --------------------------------------------------------------------------------