Fiddler에서 요청된 호스트 이름을 자동으로 변환하는 데 사용되는 플러그인

HTTP에서 요청한 호스트 이름을 step로 빠르게 전환하려면


JavaScript의 XMLHttp Request 호출 목적지를 외부 서버에서 회사 내부의 스타벅스 서버로 바꾸어 테스트해야 하는데, 요청한 호스트 이름은 다른 회사에서 제공한 JavaScript의 원본 파일에 의해 하드코딩되어 수정할 수 없습니다Fiddler(Proxy형 HTTP 디버깅)를 사용하여 HTTP 요청을 차단하고 호스트 이름을 자동으로 변환합니다.
'FiddlerScript'같은 표준으로 준비된 기능을 사용하면 하고 싶은 일을 할 수 있지만, 변환된'유효/무효'를 간단하게 전환하고 싶어 플러그인을 개발한다.

새 프로젝트 작성


이번에 사용한 IDE는 "Visual Studio Community 2015"입니다.
다음 내용의 항목을 새로 만듭니다.
· Visual C# 라이브러리
・NET Framework 3.5
· Any CPU(Fiddler가 64비트인 경우)
그런 다음 추가 참조에서 Fiddler를 선택합니다.exe를 추가합니다.
또한 Fiddler 버전에는 2.6.2.0이 사용됩니다.

사용자 컨트롤 만들기


이 플러그인은 Fiddler에 탭으로 포함되어 있으므로 사용자 제어를 만듭니다.
제작된 화면은 다음과 같다.

기능의 유효/무효 확인란과 텍스트 상자에 수정 전과 수정 후의 요청 호스트 이름을 입력할 수 있습니다.
로그는 디버깅용으로 기능과는 무관합니다.
코드로는 확인란을 누를 때 표시 정도의 기술만 전환하므로 특별한 설명이 필요하지 않지만 Designer는 다음에 설명한 다른 범주에서 확인란, 텍스트 상자의 구성 요소에 액세스할 수 있도록 Designer에 있습니다.cs에 구성 요소의 Getter를 추가했습니다.

IAutoTamper 확장 범주 만들기


방금 인용된 Fiddler를 추가한 구성 요소는 IAutoTamper라는 인터페이스가 있습니다. 확장된 종류를 만들 것입니다.다음은 소스 코드입니다.
RequestHostEdit.cs
using System;
using System.Windows.Forms;
using Fiddler;

[assembly: Fiddler.RequiredVersion("2.6.2.0")]
namespace FiddlerExtend
{
    public class RequestHostEdit : IAutoTamper
    {
        private TabPage oPage;
        private RequestHostEditView oView;

        public void OnLoad()
        {
            this.oPage = new TabPage("ChangeHostName");
            this.oView = new RequestHostEditView();
            this.oPage.Controls.Add(this.oView);
            this.oView.Dock = DockStyle.Fill;
            FiddlerApplication.UI.tabsViews.TabPages.Add(this.oPage);

        }
        public void OnBeforeUnload() { }

        public void AutoTamperRequestBefore(Session oSession)
        {
            if (this.oView != null && this.oView.EnabledCheckBox.Checked)
            {
                this.oView.LogTextBox.Text = "START \r\n";
                this.oView.LogTextBox.Text += "【変更前】oSession.host : " + oSession.host + "\r\n";

                if (oSession.host == this.oView.BeforeRHostTextBox.Text)
                {
                    oSession.host = this.oView.AfterRHostTextBox.Text;
                    this.oView.LogTextBox.Text += "【変更後】oSession.host : " + oSession.host + "\r\n";
                }
                this.oView.LogTextBox.Text += "END \r\n";
            }
        }

        public void AutoTamperRequestAfter(Session oSession) { }
        public void AutoTamperResponseBefore(Session oSession) { }
        public void AutoTamperResponseAfter(Session oSession) { }
        public void OnBeforeReturningError(Session oSession) { }
    }
}

OnLoad 방법은 Fiddler가 시작된 후 UI에 접근할 수 있는 시점을 OnLoad 방법이라고 하기 때문에 이 방법 안에 탭(oPage)을 새로 만들고 이 탭에 방금 만든 사용자 제어(oview)를 추가했다.
또한 OnBeforeUnload 방법은 Fiddler 시작이 끝날 때 OnBeforeUnload 방법이라고 불린다.후처리가 필요하면 확장하면 됩니다.
Autotamper Request Before 방법은 사용자가 Fiddler의 Inspectors에서 요청을 편집하기 전에 AutoTamper Request After 방법이 요청을 편집한 후 실제 발송되기 전에 호출됩니다.
이번에는 무엇이든 좋습니다. 그래서 AutoTamper RequestBefore 방법에서 호스트 이름을 바꾸는 처리를 기술했습니다.또한 이 처리는 OnLoad가 완료되기 전에 호출될 수 있기 때문에 UI와 다른 스레드에서 백그라운드에서 실행되며 "if(this.oView:=null...)"의null 검사를 실시했습니다.
이 밖에 인터페이스의 문서는 Implement Fiddler Interfaces에서 확인할 수 있다.

빌드된 라이브러리를 Fiddler에 포함


구축된 DLL 파일을 Fiddler에 포함하려면 Fiddler의 설치 디렉토리에 있는 Scripts 디렉토리에 배치합니다.
Create Fiddler Extension Project에서 소개한 바와 같이 구축된 활동에서copy지령을 기술하는 것은 매우 쉽다.

완성


플러그인 개발이 끝났습니다.
Fiddler를 시작하면 요청한 호스트 이름을 자동으로 변환할 수 있는 탭이 추가됩니다.
"stubhost:8080"같은 서버가 없기 때문에 화면 예시에서 502 오류가 발생했습니다. 귀여워요.

참고 자료


Fiddler Documentation - Extend Fiddler with .NET Code

좋은 웹페이지 즐겨찾기