>  Q&A  >  본문

Chrome 확장 프로그램에서 HTTP 응답 수정

<p>HTTP 응답 본문을 수정할 수 있는 Chrome 확장 프로그램을 만드는 것이 가능합니까? </p> <p>Chrome 확장 API를 살펴본 결과 이 ​​기능을 구현하는 항목을 찾지 못했습니다. </p>
P粉038161873P粉038161873395일 전574

모든 응답(2)나는 대답할 것이다

  • P粉311464935

    P粉3114649352023-08-22 20:54:03

    이런 일을 하는 Devtools 확장 프로그램을 방금 출시했습니다. :)

    탬퍼라고 하며, mitmproxy를 기반으로 하며, 현재 탭에서 생성된 모든 요청을 보고 수정하며 다음 새로 고침 시 수정된 버전을 제공할 수 있습니다.

    이 버전은 상당히 초기 버전이지만 OS X 및 Windows와 호환되어야 합니다. 효과가 없다면 알려 주시기 바랍니다.

    여기에서 다운로드할 수 있습니다: http://dutzi.github.io/tamper/

    작동 방식

    아래 @Xan의 설명에 따르면 확장 프로그램은 mitmproxy를 확장하는 Python 스크립트와 기본 메시징을 통해 통신합니다.

    이 확장 프로그램은 chrome.devtools.network.onRequestFinished를 사용하여 모든 요청을 나열합니다.

    요청 중 하나에 도달하면 요청 개체의 getContent() 메서드를 사용하여 해당 응답을 다운로드한 다음 해당 응답을 로컬에 저장된 Python 스크립트로 보냅니다.

    그런 다음 call(对于OSX)或subprocess.Popen(Windows용)을 사용하여 편집기에서 파일을 엽니다.

    Python 스크립트는 mitmproxy를 사용하여 프록시를 통과하는 모든 통신을 수신하고 저장된 파일에 대한 요청을 감지하면 저장된 파일을 제공합니다.

    저는 Chrome의 프록시 API(구체적으로 chrome.proxy.settings.set())를 사용하여 PAC를 프록시 설정으로 설정했습니다. 이 PAC 파일은 모든 통신을 Python 스크립트의 프록시로 리디렉션합니다.

    mitmproxy의 가장 좋은 점은 HTTPS 통신도 수정할 수 있다는 것입니다. 그래서 여러분도 활용하실 수 있어요 :)

    회신하다
    0
  • P粉561323975

    P粉5613239752023-08-22 18:26:03

    일반적으로 표준 Chrome 확장 API를 사용하여 HTTP 요청의 응답 본문을 변경할 수 없습니다.

    이 기능은 104058에서 요청됩니다: WebRequest API: 확장 프로그램이 응답 본문을 편집하도록 허용 . 업데이트 알림을 받으려면 이 질문을 북마크에 추가하세요.

    알려진 XMLHttpRequest의 응답 본문을 편집하려면 콘텐츠 스크립트 코드 XMLHttpRequest的响应体,请通过内容脚本注入代码,以覆盖默认的XMLHttpRequest构造函数,使用自定义(功能完整的)构造函数在触发真实事件之前重写响应体。确保您的XMLHttpRequest对象与Chrome内置的XMLHttpRequest를 삽입하여 기본 XMLHttpRequest 생성자를 재정의하고 사용자 정의(기능 완료) 생성자를 사용합니다. 이 함수는 실제 이벤트를 트리거하기 전에 응답 본문을 다시 작성합니다. XMLHttpRequest 개체가 Chrome에 내장된 XMLHttpRequest 개체와 완벽하게 호환되는지 확인하세요. 그렇지 않으면 AJAX가 많은 웹사이트에서 문제가 발생합니다.

    다른 경우에는 chrome.webRequestchrome.webRequestchrome.declarativeWebRequest API将请求重定向到data:-URI。与XHR方法不同,您将无法获取原始请求的内容。实际上,请求永远不会到达服务器,因为重定向只能在实际请求发送之前完成。如果您重定向main_frame请求,用户将看到data: 또는 < 코드를 사용할 수 있습니다. >chrome.declarativeWebRequest

    API는 요청을 data:-URI로 리디렉션합니다. XHR 접근 방식과 달리 원래 요청의 콘텐츠를 가져올 수 없습니다. 실제로 리디렉션은 실제 요청이 전송되기 전에만 완료될 수 있으므로 요청은 서버에 도달하지 않습니다. main_frame 요청을 리디렉션하면 사용자에게 요청된 URL 대신 data:-URI가 표시됩니다. 🎜

    회신하다
    0
  • 취소회신하다