我将Fiddler配置为反向代理,以便充当客户端和服务器之间的中间人。我有一个自定义规则,它会在给定特定响应的情况下从代理发送请求:
static function OnBeforeResponse(oSession: Session) {
...
if (oSession.uriContains("something.aspx")) {
var request = "..."
FiddlerObject.utilIssueRequest(request);
}
...
}
有没有办法将utilIssueRequest发出的请求路由回客户端机器?
答案 0 :(得分:1)
你可以,但这样做非常复杂。通常,您只需修改OnBeforeRequest处理程序内的请求,以便URL / Host标头指向新目标服务器。
答案 1 :(得分:0)
我道歉 - 我的问题最终需要比我在询问时所知道的更多细节。如果有人有兴趣,我用这个奇怪的方法解决了这个问题:
拓扑:Windows客户端 - > Windows客户端上的Fiddler代理 - >中间人的提琴手反向代理 - > Windows Server
Windows客户端CustomRules.js中的代码:
static function OnBeforeResponse(oSession: Session) {
//intercept response containing prefetch material
if (oSession.uriContains("some_response")) {
//parse response body for some prefetch info
...
//compose request
var request = "POST " + uri + " HTTP/1.1" + "\n" +
"X-FiddlerOpt: test\n" +
...
//send off to server
FiddlerObject.utilIssueRequest(request);
}
//detect the prefetch response, send to client
if (oSession.oRequest.headers.Exists("X-FiddlerOpt")) {
oSession.utilDecodeResponse();
var payload = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);;
//compose request
var request = "GET " + "http://windows_client:8888/ HTTP/1.1" + "\n" +
"Content-Length: " + payload.length + "\n" +
"X-FiddlerPrefetch: test\n" +
"\n" +
payload
//send request
FiddlerObject.utilIssueRequest(request);
}
...
中间人CustomRules.js中的代码:
brew install llvm
我确信有更简单或更好的方法可以做到这一点,欢迎任何反馈。