第一步:用google官方帮助文档的方法,找到所有的Google IP段。以下官方说明():
Google IP 地址范围
当您为所在的网域配置电子邮件处理时,如果您想要防止系统将 Google 邮件标记为垃圾邮件,您可能需要了解 G Suite 邮件服务器的 IP 地址。
请注意:以下说明是针对用于处理电子邮件流量的列表 IP 地址。这并不是 Google 保留的 IP 地址的完整列表。
Google 拥有一个全局基础架构,该基础架构会动态地进行扩展,以适应不断增长的需求。因此,G Suite 邮件服务器使用的 IP 地址范围很大,并且地址经常变动。查找当前 Google IP 地址范围的最有效方法是查询 Google 的 SPF 记录。
要为您的网域创建SPF记录,只需使该记录指向当前IP地址列表的Google SPF记录即可:
v=spf1 include:_spf.google.com ~all
使用此方法,您的网域会在Google IP地址发生变化时自动继承这些变更。
如需G Suite邮件服务器的文字IP地址,建议您使用某个常用DNS查找命令(nslookup、dig、host)提取_spf.google.com网域的SPF记录,如下所示:
nslookup -q=TXT _spf.google.com 8.8.8.8
此操作会返回一张列表,其中列出了Google SPF记录中包含的网域,例如: _netblocks.google.com、_netblocks2.google.com、_netblocks3.google.com
现在,请逐个查找与这些网域关联的DNS记录,例如:
nslookup -q=TXT _netblocks.google.com 8.8.8.8
nslookup -q=TXT _netblocks2.google.com 8.8.8.8
nslookup -q=TXT _netblocks3.google.com 8.8.8.8
这些命令得到的结果中会包含当前地址范围。
用该方法,我找到了所有IPV4的谷歌IP段:
64.233.160.0/19
66.102.0.0/20
66.249.80.0/20
72.14.192.0/18
74.125.0.0/16
108.177.8.0/21
173.194.0.0/16
209.85.128.0/17
216.58.192.0/19
216.239.32.0/19
172.217.0.0/19
172.217.32.0/20
172.217.128.0/19
172.217.160.0/20
172.217.192.0/19
108.177.96.0/19
接下来就是将这些CIDR的IP段转换为IP地址了,python 大法好,我找到现在的轮子(见文末参考文章):
用之前先安装netaddr模块:pip install netaddr
from netaddr import *
a = open('google_ip.txt','a')
ip = IPNetwork('108.177.96.0/19')
ip_list = list(ip)
for i in ip_list:
print i
a.write('%s\n'%(i))
a.flush()
这样就得到了所有的google IP,总数有256000个!
接下来,就是用python逐个去验证这些IP哪些能打开google了。。。。开200个线程,要不了多久就会跑完。。。。贴上渣代码:
#coding=utf-8
#!/usr/local/bin/python
import requests,time,random,pycurl,json,StringIO,datetime,re,threading,urllib,Queue
import os
import sys
from urlparse import *
from lxml import etree
import hashlib
import jieba
import jieba.analyse
import codecs #为了生成gbk编码的文件
import chardet
# from lxml import *
#import MySQLdb as mdb
reload(sys)
sys.setdefaultencoding('utf-8')
# today = datetime.date.today()
today = time.strftime("%Y-%m-%d-%H:%M:%S",time.localtime(time.time()))
# from netaddr import *
# a = open('google_ip.txt','a')
# ip = IPNetwork('108.177.96.0/19')
# ip_list = list(ip)
# for i in ip_list:
# # print i
# a.write('%s\n'%(i))
# a.flush()
#proxies = {'http':'127.0.0.1:1080','https':'127.0.0.1:1080'}
s = requests.session()
b = open('good_google_ip.txt','a')
def checkIP(i):
try:
r = s.get('http://%s'%(i),timeout=1)
#print r.headers
timeused = r.elapsed.microseconds/1000
domain = r.cookies._cookies.keys()[0]
print 11111,'-'*100,i,timeused,domain
b.write('%s\t%s\t%s\n'%(i,timeused,domain))
b.flush()
except Exception,e:
print 2222222
print e
pass
ip_list = []
for c in open('google_ip.txt'):
c = c.strip()
ip_list.append(c)
# for i in ip_list:
# print i
# checkIP(i)
############## Queue方式多进程
############## Queue方式多进程
############## Queue方式多进程
from threading import Thread
from Queue import Queue
from time import sleep
q = Queue() #q是任务队列
NUM = 200 #NUM是并发线程总数
#具体的处理函数,负责处理单个任务
# def do_somthing_using(arguments):
# print arguments
#这个是工作进程,负责不断从队列取数据并处理
def working():
while True:
arguments = q.get()
checkIP(arguments)
sleep(0.1)
q.task_done()
#fork NUM个线程等待队列
for i in xrange(NUM):
t = Thread(target=working)
t.setDaemon(True)
t.start()
#把JOBS排入队列
for i in ip_list:
i = i.strip()
q.put(i)
q.join()#等待所有JOBS完成
# print '所有的IP验证已经完成'
本文关键词:ip段转换为ip,google ip,google ip列表,google ip查询,CIDR是什么,CIDR怎么转换为ip
参考文章:

评论