2014-04-14 36 views
2

我嘗試使用fiddlercore響應https請求。 我需要的東西工作是這樣的:我把一些假的網址在瀏覽器中,如https://my_url_that_doesnt_exist.com/ 我攔截與fiddlercore這個請求,並與我的數據響應。但我只看到一個CONNECT和主機url。我知道,它的https和fiddler是一個代理。但有沒有辦法獲得真正的網址,並能夠使用fiddler核心來響應https請求?使用FiddlerCore將HTTPS請求捕獲到不存在的服務器

而且我用這個代碼創建一個根證書,如果它丟失:

if (!Fiddler.CertMaker.rootCertExists()) { if (!Fiddler.CertMaker.createRootCert()) { throw new Exception("Could not create a certificate."); } }

我也用這個啓動設置:

FiddlerCoreStartupFlags fcsf = FiddlerCoreStartupFlags.Default | FiddlerCoreStartupFlags.DecryptSSL|FiddlerCoreStartupFlags.AllowRemoteClients;

CONFIG.IgnoreServerCertErrors = true;

這https請求在提琴手本身中不可見。我的意思是,如果我嘗試一些不存在的網址,以便像我的應用一樣使用某些自定義內容進行回覆。它也HTTP,HTTPS不提琴手和自身包含以下響應: [Fiddler] DNS Lookup for "my_url_that_doesnt_exist.com" failed. The requested name is valid, but no data of the requested type was found

但是,如果使用一些現有的HTTPS URL,像谷歌加或類似的東西,我可以看到的HTTPS和所有的請求的詳細信息。

所以,問題如下:我怎樣才能截取HTTPS請求,以不存在的網址和服務我的內容呢? 我可以根據需要提供任何其他細節。

也makecert.exe是在我的所有二進制文件所在的相同文件夾。

回答

2

問題是HTTPS流量流經CONNECT隧道,默認情況下,如果創建到目標服務器的CONNECT隧道不成功,則不會發送安全流量。當然,如果該目標服務器不存在,則最終會在創建隧道時出現DNS錯誤,因此永遠不會發送安全請求。

解決方法是告訴Fiddler告訴客戶端CONNECT隧道已創建,甚至不嘗試聯繫服務器。通過在BeforeRequest處理程序中添加此項操作:

if (oSession.HTTPMethodIs("CONNECT")) 
{ 
    oSession.oFlags["x-replywithtunnel"] = "GenerateTunnel"; 
    return; 
} 
相關問題