用户
搜索
  • TA的每日心情

    2018-9-1 08:09
  • 签到天数: 39 天

    连续签到: 2 天

    [LV.5]常住居民I

    i春秋作家

    QQ547006660~欢迎交流

    Rank: 7Rank: 7Rank: 7

    18

    主题

    88

    帖子

    5037

    魔法币
    收听
    0
    粉丝
    7
    注册时间
    2017-1-18

    i春秋签约作者春秋文阁楚春秋游侠秦燕魏齐赵

    J0o1ey i春秋作家 QQ547006660~欢迎交流 i春秋签约作者 春秋文阁 楚 春秋游侠 秦 燕 魏 齐 楼主
    发表于 2018-7-25 18:54:12 13913609
    本帖最后由 何为大牛 于 2018-7-27 14:29 编辑

    0x00.个人感悟:

    一个大牛的成长,是离不开一样东西的,资源!!这个缺一不可的,但是资源从哪里来呢?资源可以说为,别人总结的经验,又或者是别人的笔记等等~ 但是资源多,并不能意味着什么,我们要利用资源合理去学习其中的重点,有时候你会发现自己看了很多书,视频等..但是,到头来却什么都没学会,原因就是你看懂了,但是实践的少就会忘记,为什么九九乘法表我们到现在都不会忘,因为生活中我们会经常用,所以不会忘记。。。本人作为一名Python小白,为了巩固自己的辣鸡Python编程技术,因此决定写一个关于基于Python3扫描器的专题。

    0x01.工欲善其事,必先利其器:

    二.本文章将会涉及:

    > 1.requests库使用

    > 2.if while 文件操作 等基础知识

    > 3.一个强大的字典

    > 4.效果就是如下图,但是我们的是命令行模式的,当然我说的是效果!!!

    0x002.基础目录扫描器案例

    1.引入需要的库,设置编码环境

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import requests
    import argparse
    requests用于请求目标站点;
    argparse用于解析命令行参数;

    2.解析用户输入的命令

    parser = argparse.ArgumentParser()  #描述程序
    parser.add_argument('website',help="welcome, Directory scan",type=str)  #获取用户输入的网址
    args = parser.parse_args()

    3.对用户输入的网址进行处理

    if "http://" not in args.website: #利用not in 语句将用户输入的网址进行处理
        url = "http://"+args.website
    else:
        url = args.website

    4.赋值操作

    website = url  #将用户输入的网址进行赋值操作
    webdic = 'D:\zi.txt'  #文件赋值   #赋值永远都是右边赋给左边

    5.headers自定义头部信息设置

    header = {
       'Accept': '*/*',
       'Referer': website,   #这是经过处理后的网址
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; ',#设置扫描器的浏览器标识UA
       'Connection': 'Keep-Alive',
       'Cache-Control': 'no-cache',
    }

    6.处理过的网址和字典进行组合

    webdict = []    #创建一个新的字典用于存放拼接后的网址
    with open(webdic) as file: #打开我们的字典文件,它的新名字是file
        while True:    #一个条件永远为真的while循环,就好比吃了炫迈停不下来
            dirdic = file.readline().strip()  #逐行读取字典文件并去除空格,它的新名字叫dirdic
            if (len(dirdic) == 0): break   #判断是否读取完毕,成立的话break语句就一板砖给while循环拍死
            webdict.append(website + dirdic) #将用户输入的网址website+经过循环的字典拼接起来添加到webdict

    7.将拼接好的网址用requests方法进行访问

    for king in webdict:   #把我们拼接好的网址丢入for循环,并给它一个新名字king:很霸气!
        try:   #异常处理,好比警察大大
            respon = requests.get(king,headers=header)  #requests.get的方法进行访问,使用我们自定义的头部信息
            if respon.status_code == 200:   #判断状态码有没有=200的
                print('[' + str(respon.status_code) + ']' + ":" +king )  #把状态码为200的和拼接好网址一起打印出来
        except Exception as e:
            print (e)  #警察大大把有异常的信息打印出来
            pass

    0x003.本地测试效果图:

    可以不用输入http哦,我们做了验证

    还是非常给力的哦~~~

    0x004.结束:

    1.不足

    >a.其实这个扫描器还有许多东西要来补的0.0

    >b.有没有发现速度巨慢,要砸电脑的感觉!

    >c.遇到不存的网页也返回200怎么办。。

    2.当然是需要改进的啊!!!

    >a.对于404页面的识别

    >b.对于404 200的页面进行颜色识别

    >c.对于有防火墙的网站绕过进行扫描

    >d.增加线程



    0X005.推荐及下载
    在此小弟我推荐两本适合萌新学习的Python书籍,大家可以看下
    1.Python基础教程

    u=1626924528,2087270709&fm=58&bpow=2200&bpoh=2770.jpg
    2.Python网络数据采集
    u=4280311400,3646581465&fm=202&mola=new&crop=v1.jpg
    本人的爆破字典及猪猪侠大牛的字典包下载!
    游客,如果您要查看本帖隐藏内容请回复

    注:本主题来自基友King。
    u=323849708,2078968767&fm=27&gp=0.jpg

    本帖被以下淘专辑推荐:

    • · sc|主题: 48, 订阅: 1
    有培训需求或是技术交流需求的朋友可以联系我~QQ547006660
    自己修改的,不知道可不可以

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import requests
    import argparse
    import threading,queue,time,random


    parser = argparse.ArgumentParser()
    parser.add_argument('website',help="welcome, Directory scan",type=str)
    args = parser.parse_args()
    if "http://" not in args.website:
        url = "http://"+args.website
        website = url
    #    print(url)
    else:
        url = args.website
        website = url
           
    webdict = []
    with open("1.txt") as file:
        while True:
            dirdic = file.readline().strip()
            if (len(dirdic) == 0): break
            webdict.append(website + dirdic)

    def yanzheng(zidian,q):
            header = {
       'Accept': '*/*',
       'Referer': website,
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; ',
       'Connection': 'Keep-Alive',
       'Cache-Control': 'no-cache',
    }
            for url in zidian:
                    requests.get(url,headers=header)
                    if respon.status_code == 200:
                            q.put(url)
                            time.sleep(2)
                            q.task_done()

    def dedao(q):
            while True:
                    url = q.get()
                    if url is None:
                            break
                    time.sleep(2)
                    q.task_done()
                   
    if __name__ =="__main__":
            #消息队列
            q = queue.Queue()
           
           
           
            #启动生产者
            for i in range(4)
                    i = threading.Thread(target=yanzheng,args=(webdict,q)).start
                    t = []
                    t.append(i)
                    for a in t:
                            a.join()
           
            #启动消费者
            for i in range(3)
                    i = threading.Thread(target=customer,args=(q)).start
                    t = []
                    t.append(i)
                    for a in t:
                            a.join()
    使用道具 举报 回复

    ”webdic = 'D:\zi.txt' #文件赋值 #赋值永远都是右边赋给左边“ 是干嘛的?
    好像没有“http://”不能运行少了一个赋值?
    小弟学浅,望大神指教
    调试源码
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import requests
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument('website',help="welcome, Directory scan",type=str)
    args = parser.parse_args()
    if "http://" not in args.website:
        url = "http://"+args.website
        website = url
    #    print(url)
    else:
        url = args.website
        website = url
    header = {
       'Accept': '*/*',
       'Referer': website,
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; ',
       'Connection': 'Keep-Alive',
       'Cache-Control': 'no-cache',
    }
    webdict = []
    with open("1.txt") as file:
        while True:
            dirdic = file.readline().strip()
            if (len(dirdic) == 0): break
            webdict.append(website + dirdic)
    for king in webdict:
        try:
            respon = requests.get(king,headers=header)
            if respon.status_code == 200:
                print('[' + str(respon.status_code) + ']' + ":" + king )
        except Exception as e:
            print (e)
            pass
    使用道具 举报 回复
    ”webdic = 'D:\zi.txt' #文件赋值 #赋值永远都是右边赋给左边“ 是干嘛的?
    好像没有“http://”不能运行少了一个赋值?
    小弟学浅,望大神指教
    调试源码
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import requests
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument('website',help="welcome, Directory scan",type=str)
    args = parser.parse_args()
    if "http://" not in args.website:
        url = "http://"+args.website
        website = url
    #    print(url)
    else:
        url = args.website
        website = url
    header = {
       'Accept': '*/*',
       'Referer': website,
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; ',
       'Connection': 'Keep-Alive',
       'Cache-Control': 'no-cache',
    }
    webdict = []
    with open("1.txt") as file:
        while True:
            dirdic = file.readline().strip()
            if (len(dirdic) == 0): break
            webdict.append(website + dirdic)
    for king in webdict:
        try:
            respon = requests.get(king,headers=header)
            if respon.status_code == 200:
                print('[' + str(respon.status_code) + ']' + ":" + king )
        except Exception as e:
            print (e)
            pass
    使用道具 举报 回复
    webdic = 'D:\zi.txt' #文件赋值 #赋值永远都是右边赋给左边“ 是干嘛的?
    好像没有“http://”不能运行少了一个赋值?
    小弟学浅,望大神指教
    调试源码
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import requests
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument('website',help="welcome, Directory scan",type=str)
    args = parser.parse_args()
    if "http://" not in args.website:
        url = "http://"+args.website
        website = url
    #    print(url)
    else:
        url = args.website
        website = url
    header = {
       'Accept': '*/*',
       'Referer': website,
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; ',
       'Connection': 'Keep-Alive',
       'Cache-Control': 'no-cache',
    }
    webdict = []
    with open("1.txt") as file:
        while True:
            dirdic = file.readline().strip()
            if (len(dirdic) == 0): break
            webdict.append(website + dirdic)
    for king in webdict:
        try:
            respon = requests.get(king,headers=header)
            if respon.status_code == 200:
                print('[' + str(respon.status_code) + ']' + ":" + king )
        except Exception as e:
            print (e)
            pass
    使用道具 举报 回复
                               
    使用道具 举报 回复
                           顶
    使用道具 举报 回复
    如果我没看错的话,这是列表吧???
    “webdict = []    #创建一个新的字典用于存放拼接后的网址”
    使用道具 举报 回复
    11111111111111111111111111111111111111111111111111111111111111111111111111111
    使用道具 举报 回复
    发表于 2018-7-25 21:25:34
    字典拿走~
    使用道具 举报 回复
    感谢楼主分享
    使用道具 举报 回复
    谢谢楼主分享
    使用道具 举报 回复
    发表于 2018-7-26 09:20:58
    支持一波~
    使用道具 举报 回复
    发表于 2018-7-26 09:43:59
    我是来拿字典的.
    使用道具 举报 回复
    发表于 2018-7-26 10:08:45
    表哥,我想要字典
    使用道具 举报 回复
    感谢分享
    使用道具 举报 回复
    发表于 2018-7-26 10:37:22
    然后不感谢一下我吗???


    实名diss
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复
    发表于 2018-7-26 10:55:53
    字典收下
    使用道具 举报 回复
    发表于 2018-7-26 11:10:11
    666666666666666666666
    使用道具 举报 回复
    发表于 2018-7-26 11:30:25

    感谢楼主分享
    使用道具 举报 回复
    发表于 2018-7-26 11:43:12
    你很棒棒,感谢分享字典
    使用道具 举报 回复
    谢谢好东西,
    使用道具 举报 回复
    您需要登录后才可以回帖 登录 | 立即注册