-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HELP WANTED – Endpoint for Ranked 2.0 & Operation: Solar Raid #91
Comments
https://tabstats.com/ has the data for season 28, so I dont know |
So does TRN. But yet the actual tracker on the Ubi site is broken. Empty arrays in the response and uncaught exception errors too. I will probably hop on the PC R6 and intercept the HTTP requests to see if there's anything new there... |
While I have been trying to discover new endpoints I found an awesome guide for intercepting Ubisoft Connect network activity. But it doesn't work for game client since it utilizes a separate network stack over Winsock2. To intercept game client requests you should unpin SSL cert. It's possible with some Cheat Engine magic which I found here https://www.unknowncheats.me/forum/3113434-post11501.html. I'm read-only on the forum, so I can't contact the author. |
Any updates? |
Ubisoft re-enabled unique builds to prevent cheat development, and as a side effect, also my API research. I'm waiting for community to resolve this. |
https://github.com/hmes98318/r6s-stats-api He updated to rank 2.0, somebody may have a look on it. I dont currently have time |
He is fetching r6.tracker.network, which have received API endpoints from Ubisoft. |
Is this resulting in you not being able to sniff HTTPS requests? I attempted to use the Postman HTTPS interception tool last night and normal HTTPS traffic was working fine in browser, but the Ubisoft Connect app didn't like it. We need to dedicate some time and resources to this as soon as possible. This is causing lots of downtime for my (and probably many of your guys) services and resulting in a loss of revenue. Please share this issue around with people who can help out. Thanks, and good luck. |
@Seems2Legit do you recall any methods you used way back in the beginning to find the endpoints you currently have coded? |
Again, you can't intercept game and Ubisoft Connect HTTPS queries with trivial mitm tools. Both use SSL pinning, but in various ways. For Ubisoft Connect you can dump keys from lsass.exe and decrypt packets in Wireshark. The game is using separate request library built with OpenSSL and Winsock. |
Would you be able to share any information you came / will come across here? I'm confident that we can come to a resolution if we all work together with little bits and pieces we find individually. |
This looks like an old ranked system running in parrallel with ranked 2.0. UPD: Confirmed. After 10th game I got Silver 3 with 2340 MMR. Just like the good old days. |
New /looking, not sure how new these actually are/ endpoints are under /v2. For example for profiles use
Response{
"platform_families_full_profiles": [
{
"board_ids_full_profiles": [
{
"board_id": "casual",
"full_profiles": [
{
"profile": {
"board_id": "casual",
"id": "REMOVED",
"max_rank": 0,
"max_rank_points": 0,
"platform_family": "pc",
"rank": 0,
"rank_points": 0,
"season_id": 28,
"top_rank_position": 0
},
"season_statistics": {
"deaths": 0,
"kills": 0,
"match_outcomes": {
"abandons": 0,
"losses": 0,
"wins": 0
}
}
}
]
},
{
"board_id": "event",
"full_profiles": [
{
"profile": {
"board_id": "event",
"id": "REMOVED",
"max_rank": 0,
"max_rank_points": 0,
"platform_family": "pc",
"rank": 0,
"rank_points": 0,
"season_id": 28,
"top_rank_position": 0
},
"season_statistics": {
"deaths": 0,
"kills": 0,
"match_outcomes": {
"abandons": 0,
"losses": 0,
"wins": 0
}
}
}
]
},
{
"board_id": "warmup",
"full_profiles": [
{
"profile": {
"board_id": "warmup",
"id": "REMOVED",
"max_rank": 0,
"max_rank_points": 0,
"platform_family": "pc",
"rank": 0,
"rank_points": 0,
"season_id": 28,
"top_rank_position": 0
},
"season_statistics": {
"deaths": 0,
"kills": 0,
"match_outcomes": {
"abandons": 0,
"losses": 0,
"wins": 0
}
}
}
]
},
{
"board_id": "ranked",
"full_profiles": [
{
"profile": {
"board_id": "ranked",
"id": "REMOVED",
"max_rank": 1,
"max_rank_points": 1080,
"platform_family": "pc",
"rank": 1,
"rank_points": 1080,
"season_id": 28,
"top_rank_position": 0
},
"season_statistics": {
"deaths": 3,
"kills": 1,
"match_outcomes": {
"abandons": 0,
"losses": 0,
"wins": 1
}
}
}
]
}
],
"platform_family": "pc"
}
]
} Another one for profiles would be this needs Response{
"archived_profiles": [],
"full_profile": {
"profile": {
"board_id": "ranked",
"id": "REMOVED",
"max_rank": 1,
"max_rank_points": 1080,
"platform_family": "pc",
"rank": 1,
"rank_points": 1080,
"season_id": 28,
"top_rank_position": 0
},
"season_statistics": {
"deaths": 3,
"kills": 1,
"match_outcomes": {
"abandons": 0,
"losses": 0,
"wins": 1
}
}
},
"last_ranked_game_information": {
"has_abandoned": false,
"rank_points_update": {
"demotion_shield_rank_points_saved": 0,
"rank_points_after": 1080,
"rank_points_before": 1000
},
"team_score": 1
}
} EDIT: Headers used
Not all of the above are required. |
Did it update after 10 matches or after a time period? |
Using your headers and parameters. |
I got this as well @SwiftCODA, if you re-authenticate but use the pc client app-id ( As for some other things I noticed, the |
Used the new appId, getting a good response now. However, on multiple profileIds, the data returned is basically zeroed out, all default stuff, even though TRN shows that the players have rank points, kills, etc. |
Need platform_family too. But you're right, it doesn't call for any profile_ids. Just returns data for the profile_id associated with the ticket. |
|
Still unsure of above... Help is appreciated. All responses I'm getting with the new spaceId path give me zeroed-out information, or "default" data. For example: |
@SwiftCODA I've tried using the same headers you have and I can get some proper stats back. I also did a check on the profile id you're using and also found it comes back blank. Does the id belong to a console account? I wouldn't be surprised if |
I recall the profileId I used above being one belonging to a random leaderboard champion player, not sure which platform. You can see the profileId and userId are only the same when the account is a uplay/pc account. When using the new Here, I use the However, if you visit either:
|
{
"level": 32,
"xp": 7671
} |
@floxay You are an absolute g. ❤️💪 |
Closing #91 with the following new information for developers:
A big thank you to all contributors in this thread! Good luck with your projects, everyone. |
The XHR requests on the Ubisoft stats tracker website are making requests for all 28 seasons, and returning data for all except 28, the current one. Does anyone know of a new endpoint for seasonal ranked stats with skill / rank value / hidden mmr and whatever else they added in the Ranked 2.0 update?
Information:
Ubisoft Web Stats XHR/Fetch Requests:
player_skill_records
:method
:GET
host
:public-ubiservices.ubi.com
path
:/v1/spaces/05bfb3f7-6c21-4c42-be1f-97a33fb5cf66/sandboxes/OSBOR_PS4_LNCH_A/r6karma/player_skill_records
parameters
:board_ids
:pvp_ranked
season_ids
:-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28
(-1 would be the current season, -2 would be the one before it, -28 would be Season 1.region_ids
:ncsa
profile_ids
:13a81b0c-1107-4449-8adb-9ae06c09d28a
(Random leaderboard player on PSN who has data for season 28)headers
:Authorization
:ubi_v1 t={MY_TOKEN}
User-Agent
:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15
Ubi-AppId
:{MY_UBI_APP_ID}
Ubi-SessionId
:{MY_UBI_SESSION_ID}
Connection
:keep-alive
response
:(An array of object like this one. The
-1
season corresponds to this object)It appears the server is seeing a request for stats for the season which was 27 seasons ago (
-28
), and saying "hmm... we don't have stats for a season this far back", which makes sense, considering that-1
returns season 27, and not 28.This proves that the
player_skill_records
endpoint's data source does not contain information for season 28.The other request made:
players
:method
:GET
host
:public-ubiservices.ubi.com
path
:/v1/spaces/05bfb3f7-6c21-4c42-be1f-97a33fb5cf66/sandboxes/OSBOR_PS4_LNCH_A/r6karma/players
parameters
:board_id
:pvp_ranked
season_id
:-1
(Should return the current season, 28)region_id
:ncsa
profile_ids
:13a81b0c-1107-4449-8adb-9ae06c09d28a
headers
:Authorization
:ubi_v1 t={MY_TOKEN}
User-Agent
:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15
Ubi-AppId
:{MY_UBI_APP_ID}
Ubi-SessionId
:{MY_UBI_SESSION_ID}
Connection
:keep-alive
response
:Notice the "season" value is
27
, even though we passed in-1
to fetch the current season,28
.This proves that the
players
endpoint's data source does not contain information for season 28.EDIT:
The original endpoints we were using before Neon Dawn for seasonal data do not work for season 28 either.
The text was updated successfully, but these errors were encountered: