从IClo​​ud API获取联系人列表

Imt*_*med 6 c# httpwebrequest icloud

通过使用以下URL请求ICloud API并登录

string url = "https://setup.icloud.com/setup/ws/1/login?clientBuildNumber=1P24&clientId=" + RANDOM_GUID;
Run Code Online (Sandbox Code Playgroud)

从上面的url响应获取服务器url和dsid.使用以下代码进一步请求联系人列表

var localUrl2 = "https://p66-contactsws.icloud.com/co/startup?clientBuildNumber=1P24&clientId=" + RANDOM_GUID + "&clientVersion=2.1&dsid=" + dsid + "&locale=en-EN&order=last%2Cfirst";
var webRequest2 = (HttpWebRequest)WebRequest.Create(localUrl2);
webRequest2.Method = "GET";
webRequest2.Headers.Set("Origin", "https://www.icloud.com");
// get the X-APPLE-WEBAUTH-TOKEN and X-APPLE-WEBAUTH-USER from  webResponse.Headers.SetCookie
webRequest2.Headers.Set("X-APPLE-WEBAUTH-TOKEN",  XXXXXXX);
webRequest2.Headers.Set("X-APPLE-WEBAUTH-USER",  XXXXXXXX);

WebResponse webResponse2 = webRequest2.GetResponse();
Run Code Online (Sandbox Code Playgroud)

仍然有例外

远程服务器返回错误:(421)错误请求.

请告诉我上面的代码有什么问题.

Jam*_*mes 2

正如评论中提到的,Apple 已将您尝试到达的终点离线,因此出现 421 错误。您可以在此处研究实现此目的的另一种方法。