zoukankan      html  css  js  c++  java
  • 检测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])

    测试结果:

  • 相关阅读:
    fill & stroke
    UIView 中 hidden、alpha、clear color 与 opaque 的区别
    图像处理之_仿射变换与透视变换
    GPU性能:光栅化、图层混合、离屏渲染
    PHP开发api接口安全验证的实例,值得一看
    svn钩子(hooks)自动部署代码到web目录
    linux安装配置SVN并设置钩子
    使用Navicat for MySQL把本地数据库上传到服务器
    svn upgrade
    QQ分享 QQ空间分享 API链接:
  • 原文地址:https://www.cnblogs.com/mediciyan/p/4337589.html
Copyright © 2011-2022 走看看