• 检测web服务器指定位置大文件是否存在


    在bugscan群里看到有人问有一个大文件,想探测其是否存在。如果使用curl的话,会将整个文件下载到节点,对于扫描没有任何用处,反而浪费了扫描时间。

    于是我想到的解决办法是不使用curl,直接用底层socket,发包之后接收http head部分,然后拿到返回码之后就断开链接。不知道这样做有没有什么弊端,如果有的话,请指出。

    下面直接贴上源码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #__author__ = 'Medici.Yan'
    #
    '''测试文件是wps官网上的提供的下载安装包'''
    import socketdef assign(service, arg):
        if service == "ip":
            return True, arg
    def audit(arg):
        doGet(arg,'/wdl1.cache.wps.cn/wps/download/W.P.S.4954.19.552.exe')
    
    def doGet(host,path):
        payload='''GET %s HTTP/1.1
    Host: %s
    Connection: keep-alive
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
    
    ''' % (path,host)
        print payload
        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        try:
            socket.setdefaulttimeout(20)#超时
            s.connect((host,80))#连接对应主机和端口
            s.send(payload)
            data=s.recv(len(payload))
            httphead=data.split('
    ')
            if '200 OK' in httphead[0]:
                print 'exist'
            else:
                print 'error or not exist'
        except Exception :
            pass
        finally:
            s.close()
    
    if __name__ == '__main__':
        from dummy import *
        audit(assign('ip', '222.178.202.37')[1])

    测试结果:

  • 相关阅读:
    for xml path(''),root('')
    [小明带你玩儿Photon]4.一起来看日志
    [小明带你玩儿Photon]3.Hello World i
    [小明带你玩儿Photon]2.从零开始一个程序
    [小明带你玩儿Photon]1.Photon介绍
    杂记
    FluentNHibernate初探[1]
    [Navigation]Navigation初探[2]
    [Navigation]Navigation初探[1]
    动画系统的animator
  • 原文地址:https://www.cnblogs.com/mediciyan/p/4337589.html
Copyright © 2020-2023  润新知