看到同事在一个一个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|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\2}|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|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(?:\d|[1-9]\d|1\2}|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)

ip地址查询python3小工具_V0.0.1的更多相关文章

  1. 微信小程序开发-IP地址查询-例子

    微信小程序开发  小程序搜索框  IP地址查询  搜索查询  样例 微信小程序 开发 参考   https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...

  2. python requests库爬取网页小实例:ip地址查询

    ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...

  3. 通过Web Service实现IP地址查询功能

    实例01 实现一个简单的Web服务访问 本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省.市.地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件 ...

  4. QQ IP 地址查询相关

    1.QQwry.dat格式分析和查询IP位置的PHP程序 以前的追捕数据库太大,而且很久没有更新了. 所以我想到利用QQwry.dat这个文件查询IP所在位置,QQwry.dat 在很多地方都能找到, ...

  5. [1]IP地址查询

    今天起开始玩百度APIStore里面的免费API.以前用过的有12306的:数据.接口,有时间整理出来,12306的有点乱就是了.还有扇贝以及有道的API,之前用在留言板里自动翻译,公司用过百度地图以 ...

  6. 根据IP地址查询所在地

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Tex ...

  7. Android中由IP地址查询经纬度坐标的实例

    大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标. 本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的 ...

  8. 齐全的IP地址查询接口及调用方法(转)

    设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口: ...

  9. API之IP地址查询---权威的IP地址查询接口集合

    原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...

随机推荐

  1. pypdf2:下载Americanlife网页生成pdf合并pdf并添加书签

    初步熟悉 安装 pip install pypdf2 合并并添加书签 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/1 ...

  2. 国内Maven镜像仓库

    <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http:/ ...

  3. 错误信息:[ERR] Sorry, can't connect to node 10.211.55.8:7001

    错误信息: [root@centos-linux redis-cluster]# ./redis-trib.rb create --replicas 1 10.211.55.8:7001 10.211 ...

  4. Elasticsearch 读时分词、写时分词

    初次接触 Elasticsearch 的同学经常会遇到分词相关的难题,比如如下这些场景: 为什么明明有包含搜索关键词的文档,但结果里面就没有相关文档呢?我存进去的文档到底被分成哪些词(term)了?我 ...

  5. jQuery系列(五):jQuery操作input的value值

    表单控件是重中之重,因为一旦牵扯到数据交互,离不开form表单的使用,比如用户的注册登录功能等. jQuery操作表单控件的方法: $(selector).val()//设置值和获取值 1.实例代码 ...

  6. mac使用php-version切换PHP版本

    在开发过程中,有时候我们的程序对某个php版本有着极为重要的限制,特别是大型项目. 因此,我们就需要切换多个php版本来满足我们的需求. 我们使用php-version来达到这个目的. 首先我们先使用 ...

  7. redis,memcached,mongodb之间的区别

    Redis Redis的优点: 支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set).hyperloglog(基数估算) ...

  8. 学数据分析到底要不要掌握Linux-Python基础前传(2)

    使用Python的数据分析师到底要不要掌握Linux? 对于上面的问题,大部分的答案是Python数据分析在windows的环境下跑跑就可以了,没有必要再花时间来学习Linux; 这里jacky有一个 ...

  9. Codeforces 1009 F. Dominant Indices(长链剖分/树上启发式合并)

    F. Dominant Indices 题意: 给一颗无向树,根为1.对于每个节点,求其子树中,哪个距离下的节点数量最多.数量相同时,取较小的那个距离. 题目: 这类题一般的做法是树上的启发式合并,复 ...

  10. HDU 1024 Max Sum Plus Plus ——(M段区间的最大和)

    感觉有点奇怪的是这题明明是n^2的复杂度,n=1e6竟然能过= =.应该是数据水了. dp[i][j]表示前j个数,分成i段,且最后一段的最后一个为a[j]的答案.那么转移式是:dp[i][j] = ...