> 웹 프론트엔드 > JS 튜토리얼 > Chrome 확장 프로그램 내에서 HTTP 응답 본문을 어떻게 캡처합니까?

Chrome 확장 프로그램 내에서 HTTP 응답 본문을 어떻게 캡처합니까?

Mary-Kate Olsen
풀어 주다: 2024-10-25 03:42:02
원래의
330명이 탐색했습니다.

How do I capture HTTP response bodies within a Chrome extension?

Chrome 확장 프로그램에서 HTTP 응답 본문을 캡처하는 방법

소개:

Chrome 확장 프로그램에서 , HTTP 요청에 대한 정보를 얻는 것은 네트워크 트래픽 분석이나 응답 수정과 같은 많은 작업에 필수적입니다. 요청 본문에 액세스하는 것은 간단하지만 응답 본문을 검색하는 것은 더 큰 문제를 야기합니다.

HTTP 응답 본문 가져오기:

처음에는 Chrome 확장 프로그램에서 직접 응답 본문에 액세스하는 것이 거의 불가능했습니다. 불가능한. 그러나 이제 해결책은 Chrome DevTools 프로토콜의 Network.getResponseBody API를 활용하는 것입니다.

Network.getResponseBody API 사용:

Network.getResponseBody API를 사용하여 응답 본문을 캡처하려면 다음 단계를 따르세요.

  1. 디버깅 활성화: chrome.debugger.attach()를 사용하여 Chrome 디버거를 현재 탭에 연결하고 Network.enable() 명령을 활성화합니다.
  2. 응답 이벤트 수신: 응답이 수신될 때 트리거되는 Network.responseReceived 이벤트를 구독합니다.
  3. 응답 본문 가져오기: 이벤트가 수신되면 응답의 requestId와 함께 Network.getResponseBody 명령을 보내 해당 본문을 검색합니다.

코드 예:

<code class="javascript">chrome.tabs.query(
  { currentWindow: true, active: true },
  function (tabArray) {
    let currentTab = tabArray[0];
    chrome.debugger.attach(
      { tabId: currentTab.id },
      "1.0",
      onAttach.bind(null, currentTab.id)
    );
  }
);

function onAttach(tabId) {
  chrome.debugger.sendCommand({ tabId: tabId }, "Network.enable");
  chrome.debugger.onEvent.addListener(allEventHandler);
}

function allEventHandler(debuggeeId, message, params) {
  if (currentTab.id != debuggeeId.tabId) {
    return;
  }
  if (message == "Network.responseReceived") {
    chrome.debugger.sendCommand(
      { tabId: debuggeeId.tabId },
      "Network.getResponseBody",
      { requestId: params.requestId },
      function (response) {
        // Access the response body in 'response.body'
        // Close the debugger (optional)
        chrome.debugger.detach(debuggeeId);
      }
    );
  }
}</code>
로그인 후 복사

참고:

이 API를 포함한 디버거 기능은 백그라운드 스크립트에서만 사용할 수 있습니다. 페이지 컨텍스트 내에서 실행되는 콘텐츠 스크립트에서는 이 기술을 사용할 수 없습니다.

위 내용은 Chrome 확장 프로그램 내에서 HTTP 응답 본문을 어떻게 캡처합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿