练习:c段ip探测

任务

给2个c段,
要求判断他们每个ip上面的80-443-8080-8888端口上面是否部署web服务,
如果ip+端口上面有存活的网站,就把这个网址写文本保存

分析

c段就是1-255,可以用for循环;每个ip上面的80、443、8080、8888可以做成列表,看是否有web就是判断状态码是否为200,存活的话就写入文本
通过分析我们可以做成3个方法来实现
第一个方法:做个3层循环来拼接url,一层c段ip,二层为1-255,三层为端口;
第二个方法:把拼接好的url做判断,也就是状态码为200的给存到一个列表里面
第三个方法:做个文件写入方法,把第二个方法筛选出来的url的首页内容写入文本里

第一个方法

#拼接url
def urls(c,port):
    urls = []
    for i in c:
        a = i[0:-4]
        for j in range(1,255):
            for k in port:
                urls.append('http://' + a + str(j) + ':' +str(k))
                urls.append('https://' + a + str(j) + ':' +str(k))
    return urls

第二个方法

#判断存活
def url(urls):
    url2 = []
    for i in urls:
        try:
            if requests.get(i,timeout=0.1).status_code == 200:
                print('网站:'+i+'存活,正在写入文本中')
                url2.append(i)
        except:
            pass
    return url2

第三个方法

#写入
def xr(url):
    with open('text.txt', 'a+', encoding='utf-8') as a:
        for i in url:
            a.writelines(i+'\n')
        print('全部写入成功')

总体代码

# 给2个c段
# 要求判断他们每个ip上面的80-443-8080-8888端口上面是否部署web服务,如果ip+端口上面有存活的网站,就把这个网址写文本保存
import requests
#拼接url
def urls(c,port):
    urls = []
    for i in c:
        a = i[0:-4]
        for j in range(1,255):
            for k in port:
                urls.append('http://' + a + str(j) + ':' +str(k))
                urls.append('https://' + a + str(j) + ':' +str(k))
    return urls
#判断存活
def url(urls):
    url2 = []
    for i in urls:
        try:
            if requests.get(i,timeout=0.1).status_code == 200:
                print('网站:'+i+'存活,正在写入文本中')
                url2.append(i)
        except:
            pass
    return url2
#写入
def xr(url):
    with open('text.txt', 'a+', encoding='utf-8') as a:
        for i in url:
            a.writelines(i+'\n')
        print('全部写入成功')


c = ['0.0.0.0/24']
port = [80,443,8080,8888]
a = urls(c,port)
b = url(a)
xr(b)
posted @ 2023-10-31 20:41  JFSec  阅读(46)  评论(0)    收藏  举报