检测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\r\nHost: %s\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\r\nAccept-Encoding: gzip, deflate, sdch\r\nAccept-Language: zh-CN,zh;q=0.8,en;q=0.6\r\n\r\n‘‘‘ % (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(‘\r\n‘)
        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])

测试结果:

时间: 2024-08-03 14:52:39

检测web服务器指定位置大文件是否存在的相关文章

各大web服务器https的证书文件

nginx  key+pem iis pfx+pfx-password.txt tomcat pfx+pfx-password.txt apache key+chain.crt+public.crt 原文地址:https://www.cnblogs.com/ahuo/p/11163659.html

如何检测web服务器是nginx还是apache

curl -I http://127.0.0.1 清楚看见是nginx的服务器 但是如果看看百度呢 是百度自己开发的web,baidu web server

使用File类列出指定位置的文件信息,包含该路径子目录下的文件信息

public class Test{ public static void main(String [] args) { File f=new File("d:"); File [] fl=f.listFiles(); show(f1); } public static void show(File [] f1) { for(File f:fl) { if(f.isDirectory()) { File [] f2=f.listFiles(); show(f2); } else { S

复制 注册 删除文件 判断指定位置有无文件

If Dir("C:\WINDOWS\system32\MSDATGRD.OCX", vbDirectory) = "" Then ' Label1.Caption = "无" Else: Label1.Caption = "有" End If FileCopy App.Path & "\MSDATGRD.OCX", "C:\WINDOWS\system32\MSDATGRD.OCX&qu

复制文件夹中所有内容到指定位置

复制文件夹中所有内容到指定位置 /** * 复制文件夹下的所有文件到指定目录 * @param oldPath * @param newPath */ public static void copyFolder(String oldPath, String newPath) { try { // 如果文件夹不存在,则建立新文件夹 (new File(newPath)).mkdirs(); //读取整个文件夹的内容到file字符串数组,下面设置一个游标i,不停地向下移开始读这个数组 File fi

apache web服务器与防盗链的设置

一.安装apache2.4.23 新版本的httpd-2.4新增以下特性: 新增模块: mod_proxy_fcgi(可提供fcgi代理) mod_ratelimit(限制用户带宽) mod_request(请求模块,对请求做过滤) mod_remoteip(匹配客户端的IP地址) 对于基于IP的访问控制做了修改,不再支持allow,deny,order机制,而是统一使用require进行 还新增以下几条新特性: 1.MPM支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能: --

Mongoose源码剖析:外篇之web服务器

转 http://www.cnblogs.com/skynet/archive/2010/07/24/1784110.html 这个博主里面很多关于mongoose的剖析 引言 在深入Mongoose源码剖析之前,我们应该清楚web服务器是什么?它提供什么服务?怎样提供服务?使用什么协议?客户端如何唯一标识web服务器的资源?下面我们抛开Mongoose,来介绍一个web服务的这些通性. web服务器:通常是指一个计算机程序(web服务器是什么?),在World Wide Web上提供诸如web

java 大文件上传 断点续传 完整版实例 (Socket、IO流)

原文出自:https://blog.csdn.net/seesun2012 java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操作 2.服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求 3.服:每接收到一个Socket就建立一个新的线程来处理它 4.客:利用Socket进行远程连接,询问已上传进度 5.客:使用File

java大文件断点续传

java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操作2.服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求3.服:每接收到一个Socket就建立一个新的线程来处理它4.客:利用Socket进行远程连接,询问已上传进度5.客:使用FileInputStream.skip(long length)从指定位置读取文件,向服务器