define command for GDB that clings to a breakpoint at [NSURLConnection start] and dumps the NSURLConnection fields of interest to me to the NSURLConnection just before calling this start . Such a simple, in general, focus allows you to see what exactly the program sends to the server before it is “what exactly” is encrypted for further transmission via HTTPs.api.twitter.com/1.1/jot/client_event api.twitter.com/1.1/jot/client_event . These requests went to the server for almost any reason. I started the client - the request went. I clicked the “Sign in” button (I have not logged in yet, just pressed the button) - the request went. I got out the login screen, the "Username" field received focus - the request went. I rolled the client - the request went ... Of course, I was surprised and helpful to understand. api.twitter.com/1.1/jot/client_event api.twitter.com/1.1/jot/client_event looked like this (for obvious reasons, I blurred some of the fields):
URL: https://api.twitter.com/1.1/jot/client_event
Method: POST
Headers:
X-Twitter-API-Version: 5
Authorization: OAuth ... la la la la, regular OAuth authorization, signed with a secret key (without quotes)
"GgDYlkSvaPxGxC4X8liwpUoqKwwr3lCADbz8A7ADU & fgFuHBbtKUk1ykYzwEKaYeNg28H0XEvztfVQCEu8GA"
X-Twitter-Client: Twitter-iPhone
X-Twitter-Client-Version: 5.13.1
Geolocation: my coordinates, damn it (but if you turn off the Location Service - this field disappears from the requests)
Accept-Language: en
X-Twitter-Client-DeviceID: my device ID
X-Client-UUID: a unique UUID (generated once when the client is first started, does not change further)
User-Agent: Twitter-iPhone / 5.13.1 here is the version of iOS (Apple; iPhone3,1 ;;;;; 1)
Body (of course, URL-encoded):
lang = en & log = <cite> ... there’s an interesting JSON (see below) ... </ cite> & send_error_codes = 1 [
...
{
"event_name": event name
"ts": UNIX timestamp,
"format_version": 2,
"_category _": "client_event",
"client_version": "Twitter-iPhone \ 5.13.1 here is the version of iOS (Apple; iPhone3,1 ;;;;; 1)"
}
...
] [
{
"event_name": "iphone: login ::: impression",
"ts": 1385678390003,
"format_version": 2,
"_category _": "client_event",
"client_version": "Twitter-iPhone \ 5.13.1 iOS \ 6.1.3 (Apple; iPhone3,1 ;;;;; 1)"
}
] event_name , ts , format_version , _category_ and client_version are required. They were at each element of JSON'a, in each request. But besides them, there were additional fields. For example, when the “Username” field on the login screen received focus, the following JSON was left in the request: [
{
"_category _": "client_event",
"event_name": "iphone: ddg: digits_iphone_signup_1337 :: experiment",
"client_version": "Twitter-iPhone \ 5.13.1 iOS \ 6.1.3 (Apple; iPhone3,1 ;;;;; 1)",
"ts": 1385678389354,
"experiment_key": "digits_iphone_signup_1337",
"format_version": 2,
"version": 12,
"bucket": "uncheck_follows"
}
] experiment_key , version and bucket fields contain some additional information about what and how I'm doing. Well that would be clearer to the guys on Twitter. What information this is and what these magical 12 and uncheck_follows I don’t know yet, but I might be going to explore this question more carefully.Geolocation header) where I do with their program. Right up to which button I clicked and when. Perhaps this is some necessary and useful experiment to collect my user experience, not for nothing that in some requests there is an experiment_key field.Source: https://habr.com/ru/post/204106/
All Articles