• ip地址查询python3小工具_V0.0.1


    看到同事在一个一个IP地址的百度来确认导出表格中的ip地址所对应的现实世界的地址是否正确,决定给自己新开一个坑。做一个查询ip“地址”的python小工具,读取Excel表格,在表格中的后续列输出尽可能多的ip地址查询平台的结果以供验证比对。
    第一个版本写的比较丑,仅仅能用,后续慢慢完善吧。

     1 # -*- coding: utf-8 -*-
     2 # @Author: EnderZhou
     3 # @E-mail: zptxwd@gmail.com
     4 # @Date:   2018-11-09 15:17:21
     5 # @Last Modified by:   EnderZhou
     6 # @Last Modified time: 2018-11-09 16:56:40
     7 
     8 import sys        
     9 import requests    #读取web页面
    10 import openpyxl    #读写Excel
    11 import re         #正则表达式
    12 import time     #延时 后期将尝试使用多线程和随机延迟、代理地址池等手段提高速度、降低搜索被禁风险。
    13 
    14 def get_ip(text): #后续使用正则表达式判断是否是ip地址
    15      #默认网页内的IP地址位于端口号之前,并且中间至少隔了一个非数字的字符串
    16      # (?:((?:d|[1-9]d|1d{2}|2[0-5][0-5]).(?:d|[1-9]d|1d{2}|2[0-5][0-5]).(?:d|[1-9]d|1d{2}|2[0-5][0-5]).(?:d|[1-9]d|12}|2[0-5][0-5]))  用于匹配IP地址
    17      # (6[0-5]{2}[0-3][0-5]|[1-5]d{4}|[1-9]d{1,3}|[0-9])    用于匹配端口号 注意端口号匹配规则应从大到校排序 
    18      # 使用 ([0-9]|[1-9]d{1,3}|[1-5]d{4}|6[0-5]{2}[0-3][0-5]) 替换即可观察到原因。
    19      # 使用D+?匹配IP地址与端口号中间至少隔了一个非数字的字符串
    20      p = r'(?:((?:d|[1-9]d|1d{2}|2[0-5][0-5]).(?:d|[1-9]d|1d{2}|2[0-5][0-5]).(?:d|[1-9]d|1d{2}|2[0-5][0-5]).(?:d|[1-9]d|12}|2[0-5][0-5]))'
    21      iplist = re.findall(p,text)
    22      for each in iplist:
    23          print(each)
    24 
    25 proxies = {
    26     "http":"http://127.0.0.1:8080",
    27     "https":"https://127.0.0.1:8080"
    28 }
    29 
    30 headers = {
    31     'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0',
    32     'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    33     'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    34     'Accept-Encoding':'gzip, deflate',
    35     'Referer':'http://101.71.29.5:10023/',
    36     'Content-Type':'application/x-www-form-urlencoded',
    37 }
    38 
    39 ipsearchurl = 'http://www.ip168.com/chxip/doGetIp.do'
    40 
    41 def get_add(ipadd):
    42     payload = {}
    43     payload['keyword'] = ipadd
    44     payload['btnsearch'] = '%E6%9F%A5%E8%AF%A2'
    45     r = requests.post(ipsearchurl,timeout=10,data=payload,proxies=proxies,verify=False,headers=headers)
    46     # print(r.status_code)
    47     print(r.text[7:])
    48     return r.text[7:]
    49 
    50 wb = openpyxl.load_workbook('非内陆IP攻击统计.xlsx')
    51 # 获得所有sheet的名称
    52 print(wb.get_sheet_names())
    53 # 根据sheet名字获得sheet
    54 a_sheet = wb.get_sheet_by_name('Sheet1')
    55 # 获得sheet名
    56 print(a_sheet.title)
    57 # 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
    58 sheet = wb.active 
    59 
    60 # 获得最大行
    61 row_num = sheet.max_row
    62 print(row_num)
    63 
    64 for i in range(2,row_num) :
    65     ipadd = sheet['B'+str(i)].value
    66     print (ipadd)
    67     # get_ip(ipadd) 这里缺少一个判断单元格内容是否为正确的IP地址格式的函数,后续会利用以前写的IPv4地址正则来实现。
    68     add = get_add(ipadd)
    69     sheet['E'+str(i)] = add
    70     wb.save('非内陆IP攻击统计_test.xlsx')
    71     time.sleep(10)

  • 相关阅读:
    java--保留重复排序
    java--TreeSet比较器排序
    java--去重练习
    java--HashSet
    java--集合可变参数
    spring MVC入门
    java IO详解
    spring入门
    redis详解
    maven教程
  • 原文地址:https://www.cnblogs.com/enderzhou/p/9937281.html
Copyright © 2020-2023  润新知