Obtenga la lista de contactos de iCloud en C #

Después de buscar sobre la API de iCloud, encontré algunos ejemplos en NodeJS y Python, pero desafortunadamente, no estoy familiarizado con ellos. Quiero saber cómo obtener la lista de contactos de iCloud en C #.

Ejemplo en python:https://github.com/mindcollapse/iCloud-API/blob/master/iCloud.py Ejemplo en NodeJS:https://www.snip2code.com/Snippet/65033/Request-Contact-List-From-iCloud

Intento analizar el código de inicio de sesión en C #:

        private void iCloudLogin()
        {
            string guiid = Guid.NewGuid().ToString("N");
            //string url = "https://p12-setup.icloud.com/setup/ws/1/login?clientBuildNumber=1P24&clientId=" + guiid;
            string url = "https://setup.icloud.com/setup/ws/1/login?clientBuildNumber=1P24&clientId=" + guiid;

            using (var client = new WebClient())
            {
                client.Headers.Set("Origin", "https://www.icloud.com");
                client.Headers.Set("Referer", "https://www.icloud.com");
                client.Headers.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36");

                var values = new NameValueCollection();
                values["apple_id"] = appleId;
                values["password"] = password;
                values["extended_login"] = "false";

                var response = client.UploadValues(url, values);
            }
        }

Recibo 400: Solicitud incorrecta con el código anterior, por favor ayuda a dar la dirección donde estoy equivocado, agradezco tu ayuda si hay un ejemplo de código.

Actualizar:

Ahora podría iniciar sesión y obtener mucha información, incluida la url de mi servidor de contacto, dsid, este es el enlace que utilicé:

https://p12-setup.icloud.com/setup/ws/1/login?clientBuildNumber=1P24&clientId=MyGuid

Después de eso, uso la siguiente URL para obtener la lista de contactos:

https://p35-contactsws.icloud.com/co/startup?clientBuildNumber=1P24&clientId=MyGuid&clientVersion=2.1&dsid=MyDSID&locale=en-EN&order=last%2Cfirst

https://p35-contactsws.icloud.com es mi servidor de contacto, en realidad eshttps://p35-contactsws.icloud.com:443, pero según el ejemplo al que me refiero, el puerto: 443 debe eliminarse.

Pero sigo teniendo 421: error del cliente

Respuestas a la pregunta(1)

Su respuesta a la pregunta