ProxymanApp / atlantis

Capture HTTP/HTTPS, and Websocket from iOS app without proxy.
https://proxyman.io
Apache License 2.0
1.27k stars 95 forks source link

Send request to Proxyman on start of request #71

Open djbe opened 3 years ago

djbe commented 3 years ago

Based on https://github.com/ProxymanApp/atlantis/issues/28#issuecomment-840056741:

Right now, Atlantis only sends a message to Proxyman when a requests finishes (success or failure). But, since TrafficPackage have an ID (here), nothing should stop us from sending the info before the start of a call, and then when a call finishes, send the updated package and have Proxyman update the call/row as needed.

Note that this is how Bagel works, which Atlantis is (kinda) based on:

Right now, if we modify Atlantis to send the traffic package at the start (inside injectorSessionDidCallResume), the call will appear twice in Proxyman: one "active" incomplete call, and one "completed" call with all the data (see screenshot).

Screen Shot 2021-05-12 at 21 54 22

Todo:

NghiaTranUIT commented 3 years ago

I'm afraid it's too difficult to change the logic from Atlantis and Proxyman, which is live on the Production.

I would highly recommend that you might update your Kotlin code to send a message to Proxyman in a single package (when you have a Request and a Response)

djbe commented 3 years ago

Note that for #28, we've indeed changed the logic for now to only send it once. I made a separate issue for this, as it could be an improvement in general, especially for long lived network operations.

While it would indeed require changes to Proxyman itself, it wouldn't be the first time Proxyman or Atlantis require a new (or minimum) version of each other? See for example the latest Atlantis 1.9.0 version, which requires Proxyman 2.24 or higher, because of the addition of websocket logging.