2013-01-16 31 views
33

Tôi đang sử dụng Charles Proxy để ghi lại phản hồi từ API cho mục đích thử nghiệm.Có thể viết lại mã trạng thái bằng Charles Proxy không?

Nếu tôi đặt điểm ngắt, tôi được phép viết lại hoàn toàn phản hồi thô như tôi muốn.

Tuy nhiên, nếu tôi muốn tự động hoá nó thông qua công cụ "Viết lại", tôi đang gặp khó khăn, có vẻ như bạn không thể sửa đổi các mã trạng thái:

Rewrite Rule panel

Bạn có biết nếu tôi thiếu một cái gì đó?

+1

Tôi chỉ tự hỏi điều tương tự. Tôi cần chính xác tính năng này ngay bây giờ, vì vậy tôi đã gửi một yêu cầu hỗ trợ cho tác giả của Charles Proxy. Tôi sẽ báo cáo lại nếu tôi biết cách để làm điều này. –

Trả lời

65

Bản cập nhật: Phiên bản 3.8 của Charles Proxy vừa được phát hành, với khả năng viết lại trạng thái. Từ release notes: Công cụ

  • Rewrite: cho phép viết lại về tình trạng phản ứng

UI viết lại của phiên bản này thêm một mới "Trạng thái trả lời" loại quy tắc:

enter image description here

+0

Hoạt động hoàn hảo. Cảm ơn – Janusz

+23

Trong phiên bản Charles của tôi (3.10.1), tôi phải nhập cả mã trạng thái và tin nhắn để viết lại để hoạt động. Ví dụ ở trên để làm việc tôi phải thay thế "500" bằng "500 Lỗi". – emidander

8

Đây không phải là câu trả lời trực tiếp cho câu hỏi của bạn, nhưng như đã nêu trong nhận xét của tôi ở trên, tôi đã ở trong tình huống tương tự và tôi đã tìm được giải pháp sử dụng một công cụ khác phù hợp với tôi.

Thay vì Charles, tôi chạy mitmproxy, cụ thể mitmdump, với Python này ngắn rewriting script:

#!/usr/bin/env python 

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

    flow.response.status_code = 404 

Để móc nó vào proxy, tôi chạy mitmdump như thế này:

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

và nó hoạt động tốt.

Tôi đang trên OS X và tôi cấu hình web proxy giao diện mạng để 127.0.0.1 port 8080.

3

cuối cùng Edit: Câu trả lời của Marc Liyanage là đúng nhất cho câu hỏi này ngay bây giờ.

Không, bạn không, tôi không nghĩ rằng có thể viết lại mã trạng thái.

tôi không thể thêm này như một bình luận (người dùng mới) nhưng có một cách giải quyết là:

  1. Tạo tài nguyên trên một máy chủ sẽ trả lại mã bạn cần, hoặc tìm những người mà làm.
  2. Sử dụng tính năng Bản đồ từ xa, ánh xạ tới tài nguyên trả về mã.

Tôi đã thử sử dụng Bản đồ cục bộ, điều này hoàn hảo cho điều này, nhưng Charles bổ sung 200 mã trạng thái OK cho tất cả các tệp được trả về.

Chỉnh sửa: Ngoài ra, bạn có thể sử dụng các điểm ngắt trên các phản hồi riêng lẻ và sửa đổi mã.

+1

Câu trả lời của Marc Liyanage là câu trả lời đúng cho các phiên bản mới của Charles (3.8+). – alejandromp

7

Sử dụng Charles 3.8 +, bạn có thể viết lại mã trạng thái.

Trong công cụ viết lại, hãy chọn "Loại: trạng thái phản hồi". Trong trường đối sánh và thay thế các trường, lưu ý rằng Charles mong đợi trạng thái đến và viết lại để khớp với định dạng "\d{3} .*". Điều này có nghĩa là trạng thái viết lại của bạn phải có phần thông báo ngoài mã trạng thái số.

Ví dụ:

giá trị trận đấu:. 201 *

Thay thế giá trị: 502 Bad Cổng

Bỏ thông báo từ thay thế giá trị sẽ cho kết quả không viết lại về tình trạng hàng. Bạn có thể xem các thông báo đầu ra của công cụ viết lại của Charles trong phần Ghi chú của bản tóm tắt của từng cuộc gọi.

Các vấn đề liên quan