|
48 | 48 | # calcbytes = f.read() |
49 | 49 |
|
50 | 50 | def response(flow: http.HTTPFlow) -> None: |
51 | | - flow.response.replace(resp_before, resp_after) |
| 51 | + try: |
| 52 | + # Older mitmproxy version |
| 53 | + flow.response.replace(resp_before, resp_after) |
| 54 | + except AttributeError: |
| 55 | + # Newer mitmproxy version |
| 56 | + # https://stackoverflow.com/questions/64111152/issue-converting-older-mitmproxy-scripts-to-work-on-5-2-error-on-replace-and-c |
| 57 | + if flow.response.content: |
| 58 | + try: |
| 59 | + # Try binary replacement first |
| 60 | + flow.response.content = flow.response.content.replace(resp_before, resp_after) |
| 61 | + except TypeError: |
| 62 | + # Then fall back to text replacement |
| 63 | + flow.response.text = flow.response.text.replace(resp_before, resp_after) |
52 | 64 |
|
53 | 65 | def request(flow: http.HTTPFlow) -> None: |
54 | | - flow.request.replace(req_before, req_after) |
| 66 | + try: |
| 67 | + # Older mitmproxy version |
| 68 | + flow.request.replace(req_before, req_after) |
| 69 | + except AttributeError: |
| 70 | + # Newer mitmproxy version |
| 71 | + if flow.request.content: |
| 72 | + try: |
| 73 | + # Try binary replacement first |
| 74 | + flow.request.content = flow.request.content.replace(req_before, req_after) |
| 75 | + except TypeError: |
| 76 | + # Then fall back to text replacement |
| 77 | + flow.request.text = flow.request.text.replace(req_before, req_after) |
55 | 78 | #flow.request.headers['User-Agent'] = 'Custom User-Agent' |
56 | 79 |
|
57 | 80 | ## Below is an example that will answer any question for a URI that ends in '.exe' |
|
0 commit comments