在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])

测试结果:

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

  1. 上传文件到服务器指定位置 & 从服务器指定位置下载文件

    需要的jar包: 去maven仓库自己搜索com.jcraft下载jar包 <dependency> <groupId>com.jcraft</groupId> & ...

  2. web页面上传大文件有没有好的解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  3. linux web服务器必需的库文件

    往往安装完linux之后,本文用的centos6.4,再编译安装其它服务器软件时,总是提示缺少各种库文件,在这里我总结了一下 平时web服务器经常需要的一些库,如下: yum -y install m ...

  4. web uploader 上传大文件总结

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

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

    nginx  key+pem iis pfx+pfx-password.txt tomcat pfx+pfx-password.txt apache key+chain.crt+public.crt

  6. springboot项目从硬盘指定位置读取文件(获取静态资源)

    方法一:继承WebMvcConfigurerAdapter类 package com.imooc.demo.config; import org.springframework.context.ann ...

  7. python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小

    本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类似Windows如下功能: 模块介绍: from ftplib import F ...

  8. Web读取指定的config文件的内容

    需求: 什么时候会用到动态改变Web.config内的值? 在Web.config定义了一个全局设置值A,因为程序运行中满足了某个条件,要将A的值改变 Web.config中定义: <appSe ...

  9. python使用dns轮循检测web服务器是否异常

    我使用的是python2.7,我本来另装了一个python3.6,发现无法安装dnspython,于是只能换回来了 import dns.resolver #这个需要另外下载并安装(下载地址www.d ...

随机推荐

  1. 无聊中,写个常见的图片保护分类-iOS

    当美工给出例如下面这种图的时候,但是需要拉伸的时候,就不得不做拉伸保护了. //调用代码 UIImage * img = [UIImage protectedImageWithLocalImageNa ...

  2. 微信小程序如何检测接收iBeacon信号

    前话 微信小程序开发带着许多坑,最近就遇到了个需求,检测iBeacon来进行地点签到. (╯▔皿▔)╯ 微信小程序对于iBeacon的文档也写的十分精简,只简单介绍了每个接口的作用,这就导致我以为简单 ...

  3. Object C学习笔记4-内存管理

    Object-C的内存管理和.NET有些不一样,.NET的内存回收机制是使用GC自动处理回收,而Object-C本质上还是C语言,所以很多时候还是需要手动去管理内存回收. 1. Object-C生成一 ...

  4. 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler

    按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...

  5. zabbix3.4 监控路由器报错No Such Instance currently exists at this OID

    zabbix 3.4 监控报错No Such Instance currently exists at this OID 1.首先查看监控的路由器的监控项是否报警 监控主机报错出现这个 No Such ...

  6. Rmdir方法

    删除现有目录或文件夹. 语法 RmDir路径 所需的_路径_参数标识的目录或文件夹要移除的字符串表达式. _路径_可以包含驱动器. 如果没有指定驱动器, RmDir 将删除当前驱动器上的目录或文件夹. ...

  7. Jmeter 数据库配置池设置IP为参数

    我在网上查了很多资料,发现jmter链接数据库的URL都是设置成固定值的.没有参数化. 当我需要使用配置文件链接不同服务器上的数据库的时候,发现无法实现. 原因在于:jmeter的元件执行优先级是配置 ...

  8. 关于matlab向文件写入数据的方法——留着备用

    MATLAB数据采集的时候,往往需要把得到的数据保存下来. fid = fopen(文件名,‘打开方式’): 说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功.打开方式有如下选 ...

  9. 用EXCEL批量更改文件名,一个命令就能完成

    工作任务:学籍库里需要更新和完善学生信息,其中有一项工作就是要导入以身份证号为文件名的学生照片,而目前各个班级提交的学生照片是以学生姓名命名的.如何将学生姓名批量转换成身份证号码呢? 解决方案:用EX ...

  10. centos7.6 安装nginx-1.14.2

    一.安装所需依赖环境 yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 二.下载nginx官方源 ...