Skip to content

apis.cricut.com endpoint

Greg Stein edited this page Mar 24, 2021 · 13 revisions

The host apis.cricut.com is not listening on port 80. Only port 443. The client begins the conversation with HTTP/2.0; there does not appear to be any negotiation, but simply an assumption of 2.0.

The hostname is an AWS Elastic Load Balancing endpoint. Thus, it has multiple IP addresses:

$ dig apis.cricut.com
[..snip..]
;; ANSWER SECTION:
apis.cricut.com.        2391    IN      CNAME   pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com.
pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com. 45 IN A 44.241.91.67
pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com. 45 IN A 44.240.145.119
pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com. 45 IN A 52.35.53.108
pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com. 45 IN A 50.112.215.151
pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com. 45 IN A 52.42.218.221
pyrope-a-apis-pub-alb-1932967943.us-west-2.elb.amazonaws.com. 45 IN A 52.26.149.225

IIS provisioning

IIS appears to be servicing certain endpoints:

$ curl -v https://apis.cricut.com/materials/MachineFamilies
[..snip..]
> GET /materials/MachineFamilies HTTP/2
> Host: apis.cricut.com
> User-Agent: curl/7.58.0
> Accept: */*
> 

< HTTP/2 200 
< date: Sat, 20 Mar 2021 05:47:28 GMT
< content-type: application/json; charset=utf-8
< content-length: 14914
< server: Microsoft-IIS/10.0
< x-stackifyid: V2|[..snip..]
< x-powered-by: ASP.NET

nginx provisioning

nginx appears to be servicing certain endpoints:

https://apis.cricut.com/v4/Lookups/GetAppSessionData?appName=Gliese
HTTP/2 200 
date: Sat, 20 Mar 2021 06:43:20 GMT
content-type: application/json; charset=utf-8
content-length: 1026
cache-control: no-cache
pragma: no-cache
expires: -1
set-cookie: SessionID-Prod=074e2c8e-4789-eb11-aac5-0289e077fa8f; expires=Sat, 03 Apr 2021 06:43:20 GMT; domain=.cricut.com; path=/
set-cookie: SelectedCountryID=312; domain=.cricut.com; path=/
set-cookie: Country-Code=US; domain=.cricut.com; path=/
server: nginx
x-powered-by: PHP/5.4.45
access-control-allow-credentials: true
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS, HEAD
access-control-expose-headers: X-Content-Length
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept

Known request endpoints

From a traffic capture ("session 2"), we know about these endpoints:

http://static.cricut.com/android/subscription/ca/en/xxxhdpi/ca_background.png
http://static.cricut.com/ios/blocklistedbuilds
http://static.cricut.com/ios/minimumrequiredbuild
http://static.cricut.com/ios/whatsnew/4.3.0-1%403x.jpg

https://staticcontent.cricut.com/maintenance/data.json

https://apis.cricut.com/canvas/Canvases/put
https://apis.cricut.com/content/Images/PushUserImagesToSearch
https://apis.cricut.com/images/v1/images/categories/headers
https://apis.cricut.com/images/v1/images/filterTypes
https://apis.cricut.com/materials/MachineFamilies
https://apis.cricut.com/materials/Machines/registered
https://apis.cricut.com/pens/Pens
https://apis.cricut.com/profiles/v1/Profiles/cricutId/9214428
https://apis.cricut.com/projects/CanvasMigrationQueue
https://apis.cricut.com/projects/v1/Projects/search
https://apis.cricut.com/projects/v1/projects/favorites/605128e2f5859d5cb5358d83
https://apis.cricut.com/tags/v1/Categories
https://apis.cricut.com/v4/Entitlements/GetImageSetGroupExpirations
https://apis.cricut.com/v4/Lookups/GetAppSessionData
https://apis.cricut.com/v4/ShoppingCart/Quote
https://apis.cricut.com/v4/Subscription/UserCricutAccessStatus
https://apis.cricut.com/v4/Users/GetLoggedInUser
https://apis.cricut.com/v4/Users/GetUserPreferencesAsync
https://apis.cricut.com/v4/Users/IsUserLoggedIn
https://apis.cricut.com/v4/Users/Login
https://apis.cricut.com/v4/Users/SaveUserPreferencesAsync

The static sites all return 200 OK for the observed requests, and are served directly from Amazon S3

The apis endpoint has a mix of availability to unauthenticated requests, and requiring authentication.

The v4 endpoints are served by nginx and PHP/5...

The content paths appear to be served by nginx and PHP/7...

The rest are served by IIS.


Dumb/simple probing

for i in `cat links-capture`; do echo $i ; curl -s -I -X GET $i ; done

Clone this wiki locally