python : 对批量URL检测指定路径是否存在

python : 对批量URL检测指定路径脚本是否存在

使用场景

众所周知在地市HVV中最容易出现的问题是弱口令和shiro等框架漏洞,且很多站是由一家公司建站的,就可以批量探测URL是否存在指定路径。

实际编写背景

知悉某建站公司通用路径和默认口令,且HVV目标中存在大量此公司建站。

实现原理

实际上也是目录扫描,但我们日常用的目录扫描是对某一URL进行大量路径拼接,此脚本是对大量URL进行指定一个路径拼接。
判断依据是返回码200,在第一版的代码中仅仅做了返回码的判断,没有判断页面内容,在实际测试中发现许多不存在的站和跳转回主界面的站。
后更改为检查返回页面中是否存在来判断页面是否真实有效,尽管跳转后回主界面的站无法排除,也排除了大部分没有意义的站,实际测试中更改前输出目标数为80多条,更改后为40多条,由此可见提升还是很大的。
程序结束会输出返回码为200的URL保存在txt文件中。

代码

import requests
import concurrent.futures

# URL 文件的路径
url_file_path = "urls.txt"
# 输出文件的路径
output_file_path = "testss_urls.txt"

# 从文件中读取 URL
with open(url_file_path, "r") as file:
    urls = [line.strip() for line in file]

def is_valid_page(content):
    # 在这里,我们检查页面内容是否包含某些特定的字符串
    # 这些字符串应该是表示一个页面是有效的标志
    # 例如,如果我们知道所有有效的页面都会包含字符串"<!DOCTYPE html>"
    # 我们可以如下检查:
    return "<!DOCTYPE html>" in content

def check_url(url, session):
    # 如果 URL 不以 http:// 或 https:// 开头,我们假设它是 http 的
    if not url.startswith(("http://", "https://")):
        url = "http://" + url

    try:
        #拼接URL 从此处更改需要探测的路径
        full_url = url + "/management/webmaster/maindefault"
        response = session.get(full_url, timeout=5)  # 设置一个合理的超时时间
        if response.status_code == 200 and is_valid_page(response.text):
            return full_url
    except (requests.exceptions.RequestException, Exception) as e:
        print(f"URL: {full_url}, Error: {str(e)}")
    return None

# 创建一个 requests 的 Session 对象
session = requests.Session()

# 使用多线程并行检查 URL
with concurrent.futures.ThreadPoolExecutor() as executor:
    # 使用 session 对象作为 check_url 函数的额外参数
    valid_urls = list(filter(None, executor.map(check_url, urls, [session]*len(urls))))

# 将返回状态码为200的URL写入输出文件
with open(output_file_path, "w") as file:
    for url in valid_urls:
        file.write(url + "\n")

使用方法

在python文件的同文件夹下创建urls.txt文件,存入需要检测的URL

python 文件名.py

本人菜鸟一个,希望对大家有所帮助,欢迎批评指正。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值