【问题标题】:How to start fiddler as a https proxy from command line?如何从命令行将提琴手作为 https 代理启动?
【发布时间】:2017-06-17 00:45:15
【问题描述】:

我需要自动启动 fiddler 来解析 https 请求。

如何强制 fiddler 在没有 GUI 的情况下生成和使用 ssl 证书? 有谁知道提琴手将其证书存储在哪里? 我可以生成自己的服务器证书并将其设置为不带 GUI 的提琴手吗?

我可以在退出模式下启动提琴手。 我可以通过注册表项启用 https,但提琴手在没有 ssl 证书的情况下启动。 我可以使用 makecert.exe 创建证书, 但我不知道如何将其设置为没有 UI 的提琴手的活动证书。

如果有人帮我解决这个问题,我会非常感激。

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎是题外话,因为它不在帮助中心定义的范围内。请参阅帮助中心的What topics can I ask about here。也许Super UserReverse Engineering Stack Exchange 会是一个更好的提问地点。
  • 我正在开发一个使用 fiddler 的应用程序。它是应用程序的一部分。我试图找到答案,但没有成功。我读了What topics can I ask about here。 fiddler是“程序员常用的软件工具”。我没有发现任何差异。
  • 顺便说一句,你可以在 stackoverflow 上找到很多关于 fiddler 的问题。

标签: ssl https fiddler


【解决方案1】:

没有人帮助我,但我找到了解决方案。

解决方案:

启用捕获 https 流量更新寄存器的值:

reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f

reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f

您需要使用自定义提琴手的脚本。它强制提琴手生成 ssl 证书(请参阅下面脚本 CustomRules.js 中的主要部分)。如果您不添加它,fiddler 将在没有 ssl 证书的情况下启动。

copy /Y /V "<path to file>\CustomRules.js" "%userprofile%\Documents\Fiddler2\Scripts\CustomRules.js"

注意:不要更改目标文件名。

fiddler 启动时自动附加到套接字 127.0.0.1:8888

start "" "%programfiles(x86)%\fiddler2\fiddler.exe" -quiet

fiddler 会自动创建一个新的 ssl 证书。 可以下载:

curl.exe -s -k -o <dst file path> "http://127.0.0.1:8888/FiddlerRoot.cer"

然后您需要将其添加到受信任的根证书中

certutil -addstore -f "Root" <path to certificate>

现在 fiddelr 已启动,可以使用 CustomRules.js 捕获 https 流量。

Fiddler.bat:

@ECHO OFF

set currentDir=%~dp0
cd "%currentDir%"

set log="%currentDir%\fiddler.log"
set fiddler_custom_script_dir="%userprofile%\Documents\Fiddler2\Scripts\"
set fiddler_result_dir="C:\fiddler\"

echo "Start Fiddler Script" > "%log%"
echo "Current Dir: %currentDir%" >> "%log%"
echo "Update values in the register" >> "%log%"
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f >> "%log%"
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f >> "%log%"
reg.exe add "HKEY_LOCAL_MACHINE\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f >> "%log%"

reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureCONNECT /t REG_SZ /d True /f >> "%log%"
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v CaptureHTTPS /t REG_SZ /d True /f >> "%log%"
reg.exe add "HKEY_CURRENT_USER\Software\Microsoft\Fiddler2" /v IgnoreServerCertErrors /t REG_SZ /d True /f >> "%log%"

echo "Create folder for results: %fiddler_result_dir%" >> "%log%"
mkdir "%fiddler_result_dir%" >> "%log%"

echo "Create folder for the custom fiddler's script: %fiddler_custom_script_dir%" >> "%log%"
mkdir "%fiddler_custom_script_dir%" >> "%log%"

echo "Copy fiddler script to  %fiddler_custom_script_dir%" >> "%log%"
copy /Y /V "%currentDir%\CustomRules.js" "%fiddler_custom_script_dir%\CustomRules.js" >> "%log%"

echo "Start fiddler" >> "%log%"
start "" "%programfiles(x86)%\fiddler2\fiddler.exe" -quiet

set cert_path="%currentDir%\FiddlerRoot.cer"
set /a attempt=0

timeout 10 > nul

:get_cert
    set /a attempt+=1
    timeout 1 > nul
    echo "Attempt #%attempt% to download fiddeler's certificate" >> "%log%"
    curl.exe -s -k -o "%cert_path%" "http://127.0.0.1:8888/FiddlerRoot.cer" >> "%log%"
if not exist "%cert_path%" if %attempt% LSS 300 goto get_cert

if not exist "%cert_path%" (
    echo "FAIL. Certificate "%cert_path%" doesn't exist. Cannot set trusted certificate"  >> "%log%"
    exit /b -100
)

set /a attempt=0
echo "Try to add certificate to trusted" >> "%log%"
echo certutil -addstore -f "Root" %cert_path% >> "%log%"
:import_cert
    set /a attempt+=1
    timeout 1 > nul
    echo "Attempt #%attempt% to download fiddeler's certificate" >> "%log%"
    certutil -addstore -f "Root" %cert_path% >> "%log%"
if "%errorlevel%" LSS 0 if %attempt% LSS 3 goto import_cert

echo "End..." >> "%log%"
exit /b 0

CustomRules.js

import System;
import System.Windows.Forms;
import Fiddler;

/**
 This script must be in the folder C:\Users\<USER>\Documents\Fiddler2\Scripts\CustomRules.js
 */
class Handlers
{
    // The Main() function runs everytime your FiddlerScript compiles
    static function Main() {
        var today: Date = new Date();
        FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today;
        CertMaker.createRootCert();
        //CertMaker.GetRootCertificate().GetPublicKeyString()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2013-10-26
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多