zoukankan      html  css  js  c++  java
  • python-网络安全编程第十天(web目录扫描&&fake_useragent模块&&optionParser模块)

    前言

    昨天的内容没有完成今天花了点时间继续完成了 感觉自己的学习效率太低了!想办法提高学习效率吧 嗯 ,再制定下今天的目标 开始健身。

    python fake_useragent模块 

     1.UserAgent

      userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。

     2. fake_useragent

      fake_useragent是一个集成了市面上大部分的user-agent,可以指定浏览器,也可随机生成任意一个

      在工作中进行爬虫时,经常会需要提供User-Agent,如果不提供User-Agent,会导致爬虫在请求网页时,请求失败,所以需要大量User-Agent。如何生成合法的User-Agent?

      使用fake-useragent库就可以解决该问题。

     3.fake_useragent简单使用

    示例代码1:

      简单打印出几个user-agent

    from fake_useragent import UserAgent
    ua=UserAgent() #实例化
    
    print(ua.ie) #随机打印一个ie浏览器的User-Agent
    print(ua.random)#随机打印一个User-Agent

    输出结果:

    示例代码2:

      将useragent带入到header请求头里面进行http请求

    from fake_useragent import UserAgent
    import requests
    ua=UserAgent() #实例化
    
    url="http://baidu.com"
    ua=str(ua.random)
    headers={'User-Agent':ua}
    
    r=requests.get(url=url,headers=headers)
    print(r.url)
    print(r.headers)

    请求结果:

    Python-optionParser模块

    代码:

    from optparse import OptionParser
    parser=OptionParser()
    
    #dest是存储变量的 default是缺省值  help是帮助提示
    #使用add_option()加入选项
    parser.add_option("-u","--url",dest="url",help='target url for scan')
    parser.add_option("-f","--file",dest="ext",help="target url ext")
    parser.add_option("-t","--thread",dest="count",default=10,help="scan thread_count")
    #最后通过parse_args()函数的解析
    (options,args)=parser.parse_args()
    
    #当option.url 和option.ext里面的值都为真是则继续执行里面的函数    
    if options.url and options.ext:
        print(options.url)
        print(options.ext)
        print(options.count)
    else:
        parser.print_help()

    正常使用我们在cmd命令界面调用一一输入我们的值即可正常运行

    如果没有输入值则会打印出我们定义的help里面的信息

    输入-help参数也会打印help信息

    参考学习:https://blog.csdn.net/lwnylslwnyls/article/details/8199454

    web目录扫描器

    代码:

    import requests
    import queue
    import sys
    import threading
    #from agent_proxy import USER_AGENT_LIST
    from fake_useragent import UserAgent
    queue=queue.Queue()
    from optparse import OptionParser
    import sys
    
    
    class DirScan(threading.Thread):
        def __init__(self,queue):
            threading.Thread.__init__(self)
            self._queue=queue
               
        def run(self):
            while not self._queue.empty():
                url=self._queue.get()
              
                try:
                 
                    ua=UserAgent()
                    ua1=str(ua.random)
                  
    
                    headers={'User-Agent':ua1}
                    r=requests.get(url=url,headers=headers,timeout=8)
                  
                
                    if r.status_code==200:
                        print(r.url)
                        #sys.stdout.write('
    '+'[*]%s		'%(url))
                        f=open('result.html','a+')
                        f.write('<a href="'+url+'" target="_blank">'+url+'</a>')
                        f.write('
    <br>')
                        f.close
                      
                except Exception as e:
                    pass
                
                
    def start(url,ext,count):
        
        f=open('result.html','w')
        f.close()
        
        f=open('./dics/%s.txt'%ext,'r')
        
        for i in f:
            queue.put(url+i.rstrip('
    '))
    
     
    #        
        threads=[]
        thread_count=int(count)
    #    
        for i in range(thread_count):
            threads.append(DirScan(queue))
        for t in threads:
            t.start()
        for t in threads:
            t.join()
    ##        
    #        
    #start("http://www.dokocom.com",'asp','10');
            
    if __name__=='__main__':
        print("=====================================
    榆林学院信息安全协会开发V1.0
    超级高速web目录敏感扫描器
    =====================================
    ")
        
        parser=OptionParser()
     #   parser=OptionParser()
        parser.add_option("-u","--url",dest="url",help='target url for scan')
        parser.add_option("-f","--file",dest="ext",help="target url ext")
        parser.add_option("-t","--thread",dest="count",default=10,help="scan thread_count")
        (options,args)=parser.parse_args()
        
        if options.url and options.ext:
            start(options.url,options.ext,options.count);
            sys.exit(1)
        else:
            parser.print_help()
            sys.exit(1)
    #    

    使用方法:

    使用方法:python Scan.py http:xxx.com -f asp -t 20
    -f: 脚本类型
    -t :线程数

    如果输入有误提示使用方式:

    会在程序当前目录下生成result.html文件 打开就是扫描的结果

  • 相关阅读:
    新版open live writer连接博客园
    github个人博客域名绑定(附带详细原理说明)
    开源性能监控分析工具glowroot
    (转)Python实例手册
    Jetty嵌入式Web容器攻略
    H2数据库攻略
    CAS ticket过期策略
    CAS自定义登录验证方法
    Sonatype Nexus高级配置
    配置sonar、jenkins进行持续审查
  • 原文地址:https://www.cnblogs.com/xhds/p/12271842.html
Copyright © 2011-2022 走看看