【亲测好用!】获取所有Google IP地址、谷歌IP地址列表、Google IP段

  • A+
所属分类:其他杂项
本文信息本文由方法SEO顾问发表于2017-12-2022:09:39,共 3054 字,转载请注明:【亲测好用!】获取所有Google IP地址、谷歌IP地址列表、Google IP段_【方法SEO顾问】

第一步:用google官方帮助文档的方法,找到所有的Google IP段。以下官方说明(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个!

【亲测好用!】获取所有Google IP地址、谷歌IP地址列表、Google IP段

接下来,就是用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

参考文章:工程师奇技淫巧-IP段转换CIDR(python篇)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: