You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将openWordlist方法传入scanDomain方法实现目录扫描

问题核心原因

  • 你在openWordlist里处理得到的word是方法内的局部变量,方法运行结束就会被销毁,scanDomain无法直接访问
  • 原有写法里openWordlist没有返回处理后的词汇列表,也没有把结果存到类的实例属性里,所以两个方法的数据无法互通
  • 额外问题:现有wordlist、targetURL、isVerbose都是全局变量,不符合类封装的逻辑,容易出现未定义异常

修正后完整实现代码

import sys
import requests

class exampleClass:
    # 初始化时接收必要参数,避免全局变量问题
    def __init__(self, wordlist_path, target_url, is_verbose=False):
        self.wordlist_path = wordlist_path
        self.target_url = target_url
        self.is_verbose = is_verbose
        self.word_list = [] # 实例属性,跨方法共享的词汇存储容器

    def openWordlist(self):
        try:
            with open(self.wordlist_path, 'r', encoding='utf-8') as file:
                # 把所有格式化后的非空词汇存入实例属性
                self.word_list = [word.strip() for word in file if word.strip()]
        except FileNotFoundError:
            print('File does not exist')
            sys.exit(1)

    def scanDomain(self):
        # 遍历实例属性中存储的所有词汇发起扫描
        for word in self.word_list:
            try:
                domain = f'http://{self.target_url}/{word}'
                r = requests.get(domain, timeout=5)
                if r.status_code == 200:
                    print(f'[+] {domain}')
                else:
                    if self.is_verbose:
                        print(f'[~] {domain}')
            except requests.exceptions.ConnectionError:
                print('[!] CONNECTION ERROR! Exiting...')
                sys.exit(0)

if __name__ == '__main__':
    # 初始化实例时传入你自己的字典路径、目标地址、verbose配置
    obj = exampleClass(
        wordlist_path="your_wordlist.txt",
        target_url="example.com",
        is_verbose=True
    )
    obj.openWordlist()
    obj.scanDomain()

主要改动说明

  • 通过实例属性self.word_list存储处理后的词汇列表,类内所有方法都可以直接读取该属性的内容,实现了两个方法的数据传递
  • 修复了原有scanDomain方法中的缩进错误、重复判断200状态码的冗余逻辑
  • 给请求增加了timeout参数,避免无响应时长时间卡住
  • 所有参数通过初始化方法传入,消除了全局变量依赖的风险

内容的提问来源于stack exchange,提问作者sunflower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:09:03