Client-side replay does what it says on the tin: you provide a previously saved HTTP conversation, and mitmproxy replays the client requests one by one. Note that mitmproxy serializes the requests, waiting for a response from the server before starting the next request. This might differ from the recorded conversation, where requests may have been made concurrently. You may want to use client-side replay in conjunction with the __anticache__ option. This will modify requests to remove headers (e.g. if-modified-since) that might cause a server to reply with a 304-not-modified.