扫描批量ip开放的web服务
发布日期:2021-05-07 10:48:31 浏览次数:21 分类:原创文章

本文共 2947 字,大约阅读时间需要 9 分钟。



文章目录






















前言


最近闲的没事,就想着平时遇到的ip,一个一个手动测试它是否开启web服务太慢了,准备用python脚本来实现;正好学一学python中处理excel表格的模块xlrd


xlrd模块前置知识


python处理excel表格主要是用到xlrdxlwt两个模块,xlrd是读excel,xlwt是写


因为最新版本的xlrd只能处理xls,无法处理xlsx文件,所以需要下载一个旧版本的


安装


pip install xlrd==1.2.0

打开excel并读取数据


workbook = xlrd.open_workbook(filename=r'文件路径')

此时workbook中存储了要打开excel文件的位置,路径前加r是为了防止路径中有中文而报错


在这里插入图片描述


获取workbook中的一个sheet


table = data.sheets()[0]          #通过索引顺序获取table = data.sheet_by_index(sheet_indx)) #通过索引顺序获取table = data.sheet_by_name(sheet_name)#通过名称获取以上三个函数都会返回一个xlrd.sheet.Sheet()对象names = data.sheet_names()    #返回book中所有工作表的名字data.sheet_loaded(sheet_name or indx)   # 检查某个sheet是否导入完毕

在这里插入图片描述


对sheet中行的操作


nrows = table.nrows  #获取该sheet中的有效行数table.row(rowx)  #返回由该行中所有的单元格对象组成的列表table.row_slice(rowx)  #返回由该列中所有的单元格对象组成的列表table.row_types(rowx, start_colx=0, end_colx=None)    #返回由该行中所有单元格的数据类型组成的列表table.row_values(rowx, start_colx=0, end_colx=None)   #返回由该行中所有单元格的数据组成的列表table.row_len(rowx) #返回该列的有效单元格长度

对sheet中列的操作


ncols = table.ncols   #获取列表的有效列数table.col(colx, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表table.col_slice(colx, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表table.col_types(colx, start_rowx=0, end_rowx=None)    #返回由该列中所有单元格的数据类型组成的列表table.col_values(colx, start_rowx=0, end_rowx=None)   #返回由该列中所有单元格的数据组成的列表

对单元格的操作


table.cell(rowx,colx)   #返回单元格对象table.cell_type(rowx,colx)    #返回单元格中的数据类型table.cell_value(rowx,colx)   #返回单元格中的数据table.cell_xf_index(rowx, colx)   # 暂时还没有搞懂

实现


首先,在excel中,一共有六个sheet,想要分别获取,可以用一个for循环
在这里插入图片描述


for i in range(0, 5):    data_sheet = workbook.sheets()[i]    print(data_sheet)

然后可以看到ip都是集中在第三列的,也就是要对列进行操作,在将一列的ip提取出来后,是用列表存储的,发现列表中有空白''存在,要将其删除;最后将六个列表中的ip合并到一个大的列表中。


col = data_sheet.col_values(colx=2, start_rowx=1, end_rowx=None)# print(col)for ips in col:    while '' in col:        col.remove('')    ips_list.append(ips)

到此ip的提取全部结束。下面就是对ip的发起http请求,如果状态码是200,就保存该ip到文本中。


对于那些没开web服务的ip,不能让它一直加载,浪费时间,就要用到异常处理,我这里设置的延时是3秒,超过就继续检测下一个ip。


完整代码


import requestsimport xlrdif __name__ == '__main__':    workbook = xlrd.open_workbook(filename=r'路径')    # print(workbook)    ips_list = []    ip_write_list = []    for i in range(0, 5):        data_sheet = workbook.sheets()[i]        print(data_sheet)        col = data_sheet.col_values(colx=2, start_rowx=1, end_rowx=None)        # print(col)        for ips in col:            while '' in col:                col.remove('')            ips_list.append(ips)    # print(ips_list)    for ip in ips_list:        url = 'http://' + ip        headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36' } try: r = requests.get(url=url, headers=headers, timeout=3) if r.status_code == 200: print(url) with open('./ips.txt', 'a', encoding='utf-8') as fp: fp.write(url + '\n') except: continue
上一篇:python入门——循环语句
下一篇:python入门——条件控制

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月26日 02时42分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章