programing

Charles Proxy로 상태 코드를 다시 작성할 수 있습니까?

yoursource 2021. 1. 17. 12:25
반응형

Charles Proxy로 상태 코드를 다시 작성할 수 있습니까?


Charles Proxy를 사용하여 테스트 목적으로 API의 응답을 다시 작성하고 있습니다.

중단 점을 설정하면 원하는대로 원시 응답을 완전히 다시 작성할 수 있습니다.

그러나 "다시 쓰기"도구를 통해 자동화하려는 경우 문제가 발생하고 상태 코드를 수정할 수없는 것 같습니다.

Rewrite Rule 패널

내가 뭔가를 놓치고 있는지 아십니까?


업데이트 : Charles Proxy 버전 3.8이 방금 릴리스되었으며 상태를 다시 작성할 수 있습니다. 로부터 릴리스 노트 :

  • 재 작성 도구 : 응답 상태 재 작성 허용

이 버전의 재 작성 UI는 새로운 "응답 상태"규칙 유형을 추가합니다.

여기에 이미지 설명 입력


Charles 3.8 이상을 사용하면 상태 코드를 다시 작성할 수 있습니다.

재 작성 도구에서 "유형 : 응답 상태"를 선택합니다. 일치 필드 및 바꾸기 필드에서 Charles는 수신 및 재 작성 상태가 형식과 일치 할 것으로 예상합니다 "\d{3} .*". 즉, 재 작성된 상태에는 숫자 상태 코드 외에 메시지 부분이 있어야합니다.

예를 들면 :

일치 값 : 201. *

값 바꾸기 : 502 잘못된 게이트웨이

replace 값에서 메시지를 생략하면 상태 표시 줄이 다시 작성되지 않습니다. 각 호출 요약의 메모 섹션에서 Charles의 재 작성 도구 출력 메시지를 볼 수 있습니다.


이것은 귀하의 질문에 대한 직접적인 대답은 아니지만 위의 의견에서 언급했듯이 동일한 상황에 있었고 저에게 잘 맞는 다른 도구를 사용하는 솔루션을 찾았습니다.

Instead of Charles, I run mitmproxy, specifically mitmdump, with this short Python rewriting script:

#!/usr/bin/env python

def response(context, flow):
    if '/somePath' not in flow.request.path:
        return

    flow.response.status_code = 404

To hook it into the proxy, I run mitmdump like this:

mitmdump -s /path/to/rewriting-script.py

and it works great.

I'm on OS X and I configured the network interface's web proxy to 127.0.0.1 port 8080.


Final Edit: Marc Liyanage's answer is the most correct for this question now.

No, you're not, I don't think it is possible to rewrite a status code.

I cannot add this as a comment (new user) but one workaround is:

  1. Create resources on a server that will return the codes you need, or find ones that do.
  2. Use the Map Remote feature, mapping to the resource that returns the code.

나는 이것을 위해 완벽한 Map Local을 사용해 보았지만 Charles는 반환 된 모든 파일에 자체 200 OK 상태 코드를 추가합니다.

편집 : 또한 개별 응답에 중단 점을 사용하고 코드를 수정할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/14360125/is-it-possible-to-rewrite-a-status-code-with-charles-proxy

반응형