第一步:用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个!
接下来,就是用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验证已经完成'
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:http://hqyman.cn/post/3963.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~