he.net上可以直接看到任何AS所归属的IP段。可以写个脚本查询一下,默认是把curl屏蔽了的可以改一下UA。

#!/usr/bin/python
import urllib2
import sys
import os
import re
import string
class AS_TO_ACL:
def __init__(self,asnum):
self.asnum=asnum;
self.url="http://bgp.he.net/AS%s#_prefixes"%(self.asnum)
self.cidr=set();
def http_client(self,url):
request=urllib2.Request(url,headers={'User-agent':"Chrome 27.0"})
try:

            response=urllib2.urlopen(request,timeout=5)             info=response.info()             data=response.read()         except urllib2.HTTPError,error:             print “%s error:%s” %(url,error.reason)             return None         except urllib2.URLError,error:             print error.reason             return None         else:             outdata=data         return outdata     def get_acl(self):         htmldata=self.http_client(self.url)

ip_reg=re.compile("/net/(\d+\.\d+.\d+\.\d+/\d+)")

        htmls=htmldata.split();         for line in htmls:             match=ip_reg.search(line)             if match:                 ips=match.group(1)                 self.cidr.add(string.strip(ips))         for ip in self.cidr:             print “%s;\n”%(ip), if len(sys.argv)<2:     print “error!”     print “as_to_acl ASN”     sys.exit(1) query=AS_TO_ACL(sys.argv[1]) query.get_acl()


运行一下就可以把教育网的IP段都捞出来了。

python as_to_acl.py  4538
![cert_ip](/picture/4c41af4f.png)