【问题标题】:Launch ZAP using a script if not already running如果 ZAP 尚未运行,请使用脚本启动
【发布时间】:2022-10-23 12:49:38
【问题描述】:

我使用子进程使用 Python 脚本启动 ZAP:

filePath=r"C:\\Program Files\\OWASP\\Zed Attack Proxy\\zap-2.11.1.jar"
subprocess.Popen(filePath, shell=True, stdout=subprocess.PIPE)

该脚本运行良好并启动 ZAP。但是,我想检查一下应用程序是否已经在运行,如果是,就不要再次启动它。我看了一下如何在 Python 中实现这一点,并意识到我可以使用检查正在运行的进程。问题是该进程在任务管理器中作为 Java(TM) Platform SE 二进制文件运行,因此检查该进程可能不是最佳解决方案。

【问题讨论】:

    标签: python owasp zap


    【解决方案1】:

    一个简单的解决方法是简单地获取当前进程的所有标题,如果碰巧在其中找到 zap 然后中断

    或者如果它发现它就设置一个标志,如下所示:

    import subprocess
    import pyautogui
    global marker
    marker = False
    
    for window in pyautogui.getAllWindows():  
        if window.title == "OWASP ZAP":
            marker = True
    if marker:
        filePath=r"C:\Program Files\OWASP\Zed Attack Proxy\zap-2.11.1.jar"
        subprocess.Popen(filePath, shell=True, stdout=subprocess.PIPE)
    

    【讨论】:

    • 你好,谢谢你的回复。乍一看,这确实是一个很好的解决方法(尽管标志应该以相反的方式标记,应该在初始化时设置为 True,如果找到 window.title 则设置为 False,window.title 也是 'OWASP ZAP - OWASP ZAP (版本号)“所以我也更新了那个。如果我尝试在守护进程模式下运行 ZAP 会发生什么?我认为这个解决方案不再起作用了?
    • 好的,它似乎也可以在守护进程模式下工作。感谢您的帮助!