如何从命令行启动 fiddler 作为 https 代理?
How to start fiddler as a https proxy from command line?
我需要自动启动fiddler来解析https请求。
如何强制fiddler生成并使用没有GUI的ssl证书?
有谁知道fiddler在哪里存储它的证书?
我可以生成自己的服务器证书并将其设置为不带 GUI 的 fiddler 吗?
我可以在退出模式下启动fiddler。
我可以通过注册表项启用 https,但 fiddler 启动时没有 ssl 证书。
我可以使用 makecert.exe 创建证书,
但我不知道如何在没有 UI.
的情况下将其设置为提琴手的活动证书
如果有人帮助我解决问题,我将不胜感激。
没有人帮助我,但我找到了解决方案。
解决方法:
要启用捕获 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
您需要使用自定义提琴手的脚本。它强制 fiddler 生成 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()
}
}
我需要自动启动fiddler来解析https请求。
如何强制fiddler生成并使用没有GUI的ssl证书? 有谁知道fiddler在哪里存储它的证书? 我可以生成自己的服务器证书并将其设置为不带 GUI 的 fiddler 吗?
我可以在退出模式下启动fiddler。 我可以通过注册表项启用 https,但 fiddler 启动时没有 ssl 证书。 我可以使用 makecert.exe 创建证书, 但我不知道如何在没有 UI.
的情况下将其设置为提琴手的活动证书如果有人帮助我解决问题,我将不胜感激。
没有人帮助我,但我找到了解决方案。
解决方法:
要启用捕获 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
您需要使用自定义提琴手的脚本。它强制 fiddler 生成 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()
}
}