ip地址查询python3小工具_V0.0.1
看到同事在一个一个IP地址的百度来确认导出表格中的ip地址所对应的现实世界的地址是否正确,决定给自己新开一个坑。做一个查询ip“地址”的python小工具,读取Excel表格,在表格中的后续列输出尽可能多的ip地址查询平台的结果以供验证比对。
第一个版本写的比较丑,仅仅能用,后续慢慢完善吧。
# -*- coding: utf-8 -*-
# @Author: EnderZhou
# @E-mail: zptxwd@gmail.com
# @Date: 2018-11-09 15:17:21
# @Last Modified by: EnderZhou
# @Last Modified time: 2018-11-09 16:56:40 import sys
import requests #读取web页面
import openpyxl #读写Excel
import re #正则表达式
import time #延时 后期将尝试使用多线程和随机延迟、代理地址池等手段提高速度、降低搜索被禁风险。 def get_ip(text): #后续使用正则表达式判断是否是ip地址
#默认网页内的IP地址位于端口号之前,并且中间至少隔了一个非数字的字符串
# (?:((?:\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地址
# (6[0-5]{2}[0-3][0-5]|[1-5]\d{4}|[1-9]\d{1,3}|[0-9]) 用于匹配端口号 注意端口号匹配规则应从大到校排序
# 使用 ([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-5]{2}[0-3][0-5]) 替换即可观察到原因。
# 使用\D+?匹配IP地址与端口号中间至少隔了一个非数字的字符串
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]))'
iplist = re.findall(p,text)
for each in iplist:
print(each) proxies = {
"http":"http://127.0.0.1:8080",
"https":"https://127.0.0.1:8080"
} headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'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',
'Accept-Encoding':'gzip, deflate',
'Referer':'http://101.71.29.5:10023/',
'Content-Type':'application/x-www-form-urlencoded',
} ipsearchurl = 'http://www.ip168.com/chxip/doGetIp.do' def get_add(ipadd):
payload = {}
payload['keyword'] = ipadd
payload['btnsearch'] = '%E6%9F%A5%E8%AF%A2'
r = requests.post(ipsearchurl,timeout=10,data=payload,proxies=proxies,verify=False,headers=headers)
# print(r.status_code)
print(r.text[7:])
return r.text[7:] wb = openpyxl.load_workbook('非内陆IP攻击统计.xlsx')
# 获得所有sheet的名称
print(wb.get_sheet_names())
# 根据sheet名字获得sheet
a_sheet = wb.get_sheet_by_name('Sheet1')
# 获得sheet名
print(a_sheet.title)
# 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
sheet = wb.active # 获得最大行
row_num = sheet.max_row
print(row_num) for i in range(2,row_num) :
ipadd = sheet['B'+str(i)].value
print (ipadd)
# get_ip(ipadd) 这里缺少一个判断单元格内容是否为正确的IP地址格式的函数,后续会利用以前写的IPv4地址正则来实现。
add = get_add(ipadd)
sheet['E'+str(i)] = add
wb.save('非内陆IP攻击统计_test.xlsx')
time.sleep(10)

ip地址查询python3小工具_V0.0.1的更多相关文章
- 微信小程序开发-IP地址查询-例子
微信小程序开发 小程序搜索框 IP地址查询 搜索查询 样例 微信小程序 开发 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...
- python requests库爬取网页小实例:ip地址查询
ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...
- 通过Web Service实现IP地址查询功能
实例01 实现一个简单的Web服务访问 本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省.市.地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件 ...
- QQ IP 地址查询相关
1.QQwry.dat格式分析和查询IP位置的PHP程序 以前的追捕数据库太大,而且很久没有更新了. 所以我想到利用QQwry.dat这个文件查询IP所在位置,QQwry.dat 在很多地方都能找到, ...
- [1]IP地址查询
今天起开始玩百度APIStore里面的免费API.以前用过的有12306的:数据.接口,有时间整理出来,12306的有点乱就是了.还有扇贝以及有道的API,之前用在留言板里自动翻译,公司用过百度地图以 ...
- 根据IP地址查询所在地
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Tex ...
- Android中由IP地址查询经纬度坐标的实例
大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标. 本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的 ...
- 齐全的IP地址查询接口及调用方法(转)
设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口: ...
- API之IP地址查询---权威的IP地址查询接口集合
原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...
随机推荐
- js中Ajax工作原理(转)
在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...
- Win2008 R2 IIS FTP防火墙的配置
注意以下两个选项要在防火墙下开启,否则将会访问失败.
- Java的23种设计模式 <二>
1.单例模式(Singleton Pattern) 定义:Ensure a class has only one instance, and provide a global point of acc ...
- shell 读取文本并访问mysql/redis
#!/bin/bash File="redeemcode.csv" #File=$ database="d_redeem_info" echo "ch ...
- springboot+shiro 跨域解决(OPTIONS)
拦截器判断 拦截器截取到请求先进行判断,如果是OPTIONS请求的话,则放行 import com.alibaba.fastjson.JSON; import com.zp.demo.util.Jwt ...
- 【面试】ArrayList 和 HaseMap 的区别和应用场景
ArrayLiat: ArrayList array = new ArrayList(); array.add("张三"); array.add("李四"); ...
- 设置Fedora能够使用root用户登录
1. 切换到root工作环境,因为一下操作必须拥有root权限 [ha@localhost ~]$ su root密码: 2. 编辑/etc/pam.d/gdm [root@localhost ha] ...
- HelloWorld入门代码
A:定义类 B:写main方法 C:写输出语句 D:Java程序开发运行与工作原理 E:编译和运行程序 class HelloWorld { public static void main(Strin ...
- SpringMVC整合Springfox-Swagger
https://www.jianshu.com/p/ab10860945c3 验证通过 关于Swagger的简介就不占篇幅了... 本文使用的Springfox-Swagger版本为2.8.0 要整合 ...
- php的时区修改
Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to ...