Fiddler가 요청 및 응답 패키지를 자동으로 수정하는 방법

7293 단어
Charles의 Map 기능은 어떤 요청을 리디렉션하여 리디렉션된 내용으로 요청한 내용에 응답할 수 있습니다.이 기능은 매우 편리하다.가방을 잡는 과정에서 때때로 디버깅의 편의를 위해 온라인의 서비스를 내망에 포지셔닝해야 한다.예를 들어 우리 온라인의 서버 도메인 이름은api입니다.example.com, 내부 네트워크의 디버깅에 사용되는 서버 도메인 이름은test입니다.neiwang.com, 그러면 모든 도메인 이름api가 필요합니다.example.com을 테스트로 바꿉니다.neiwang.com,charles의 이 기능을 사용할 수 있지만,charles는 유료 소프트웨어이고, 해독판을 사용하면 안전하지 않을 수도 있기 때문에,fiddler는 좋은 선택이다.그러나fiddler는 맵 기능이 없습니다. 하지만 괜찮습니다. 스크립트를 작성해서 이 기능을 실현할 수 있습니다.Fiddler 메뉴에서 Rules->Custon Rules, 또는 Ctrl+R 키를 눌러 ScriptEditor 코드 파일을 편집하고 OnBeforeRequest 함수(static function OnBeforeRequest(oSession: Session)에 몇 개의 코드를 추가합니다. 포트가 다릅니다.
if (oSession.host.ToLower=="https://api.example.com:8080") {
    oSession.host="http://test.neiwang.com:9090";
}

동일한 포트:
if (oSession.HostnameIs("www.bayden.com")) {
  oSession.hostname="test.bayden.com";
}

확장합니다. 만약 우리가 요청과 응답 정보를 수정해야 한다면 코드를 어떻게 작성해야 합니까?1. 요청 헤더 추가:
oSession.oRequest["NewHeaderName"] = "New header value";

2. 요청된 페이지를 같은 사이트의 다른 페이지로 교체
if (oSession.PathAndQuery=="/version1.css") {
  oSession.PathAndQuery="/version2.css";
}

3. 요청한 페이지를 다른 사이트의 페이지로 교체
if (oSession.url=="www.example.com/live.js") {
  oSession.url = "dev.example.com/workinprogress.js";
}

수정 응답: static function OnBeforeResponse(oSession: Session) 1.응답 헤더 삭제
oSession.oResponse.headers.Remove("Set-Cookie");

2. HTTP 응답 압축 해제 및 unchunk
// Remove any compression or chunking from the response in order to make it easier to manipulate
oSession.utilDecodeResponse();

3. 응답하는 HTML에서 키워드 검색(대/소문자 구분 없음)
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "text/html") && oSession.utilFindInResponse("searchfor", false)>-1){
  oSession["ui-color"] = "red";
}

4. HTML 컨텐츠 검색 및 교체
if (oSession.HostnameIs("www.bayden.com") && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
  oSession.utilDecodeResponse();
  oSession.utilReplaceInResponse('','');
}

5. 모든 div 태그와 태그의 내용 제거
// If content-type is HTML, then remove all DIV tags
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){
  // Remove any compression or chunking
  oSession.utilDecodeResponse();
  var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);

  // Replace all instances of the DIV tag with an empty string
  var oRegEx = /
]*>(.*?)/gi; oBody = oBody.replace(oRegEx, ""); // Set the response body to the div-less string oSession.utilSetResponseBody(oBody); }

https://www.jianshu.com/p/775f83e45a02

https://docs.telerik.com/fiddler/knowledgebase/fiddlerscript/modifyrequestorresponse

좋은 웹페이지 즐겨찾기