香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python实现的Google IP 可用性检测脚本


时间:2021-11-29 16:22 作者:admin610456


需要 python/' target='_blank'>python 3.4+,一个参数用来选择测试搜索服务还是 GAE 服务。测试 GAE 服务的话需要先修改开头的两个变量。从标准输入读取 IP 地址或者 IP 段(形如 192.168.0.0/16)列表,每行一个。可用 IP 输出到标准输出。实时测试结果输出到标准错误。50 线程并发。

checkgoogleip

#!/usr/bin/env Python3 import sysfrom ipaddress import IPv4Networkimport http.client as clientfrom concurrent.futures import ThreadPoolExecutorimport argparseimport sslimport socket # 先按自己的情况修改以下几行APP_ID = 'your_id_here'APP_PATH = '/fetch.py' context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)context.verify_mode = ssl.CERT_REQUIREDcontext.load_verify_locations('/etc/ssl/certs/ca-certificates.crt') class HTTPSConnection(client.HTTPSConnection): def __init__(self, *args, hostname=None, **kwargs):  self._hostname = hostname  super().__init__(*args, **kwargs)  def connect(self):  super(client.HTTPSConnection, self).connect()   if self._tunnel_host:   server_hostname = self._tunnel_host  else:   server_hostname = self._hostname or self.host   sni_hostname = server_hostname if ssl.HAS_SNI else None   self.sock = self._context.wrap_socket(self.sock,                     server_hostname=sni_hostname)  if not self._context.check_hostname and self._check_hostname:   try:    ssl.match_hostname(self.sock.getpeercert(), server_hostname)   except Exception:    self.sock.shutdown(socket.SHUT_RDWR)    self.sock.close()    raise def check_ip_p(ip, func): if func(ip):  print(ip, flush=True) def check_for_gae(ip): return _check(APP_ID + '.appspot.com', APP_PATH, ip) def check_for_search(ip): return _check('www.google.com', '/', ip) def _check(host, path, ip): for chance in range(1,-1,-1):  try:   conn = HTTPSConnection(    ip, timeout = 5,    context = context,    hostname = host,   )   conn.request('GET', path, headers = {    'Host': host,   })   response = conn.getresponse()   if response.status < 400:    print('GOOD:', ip, file=sys.stderr)   else:    raise Exception('HTTP Error %s %s' % (     response.status, response.reason))   return True  except KeyboardInterrupt:   raise  except Exception as e:   if isinstance(e, ssl.CertificateError):    print('WARN: %s is not Google\'s!' % ip, file=sys.stderr)    chance = 0   if chance == 0:    print('BAD :', ip, e, file=sys.stderr)    return False   else:    print('RE :', ip, e, file=sys.stderr) def main(): parser = argparse.ArgumentParser(description='Check Google IPs') parser.add_argument('service', choices=['search', 'gae'],           help='service to check') args = parser.parse_args() func = globals()['check_for_' + args.service]  count = 0 with ThreadPoolExecutor(max_workers=50) as executor:  for l in sys.stdin:   l = l.strip()   if '/' in l:    for ip in IPv4Network(l).hosts():     executor.submit(check_ip_p, str(ip), func)     count += 1   else:    executor.submit(check_ip_p, l, func)    count += 1 print('%d IP checked.' % count) if __name__ == '__main__': main()

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)