由于他们在前面介绍了GDPR / Advertisers页面,因此我试图从Tumblr API中获取数据并获得不同的结果。该页面应该显示一次并设置一个cookie。
使用cUrl:
curl -i -v -X GET "https://nochillmemes.tumblr.com/api/read/json?type=photo&num=50&start=1"
我得到正确的结果。
使用Rest.Net:
var Client = new RestClient("https://nochillmemes.tumblr.com");
var Request = new RestRequest("/api/read/json?filter=text&type=photo&num=50&start=1", Http.Method.GET);
var R = Client.Execute(Request);
返回GDPR页面,但是:
var Client = new RestClient("https://nochillmemes.tumblr.com");
var Request = new RestRequest("/api/read/json?filter=text&type=photo&num=50&start=1", Http.Method.GET);
Request.AddHeader("user-agent", "curl/7.54.0");
var R = Client.Execute(Request);
返回正确的数据!因此tumblr会根据用户代理返回不同的结果。
使用RestSharp:
var Client = new RestClient("https://nochillmemes.tumblr.com");
var Request = new RestRequest("/api/read/json?filter=text&type=photo&num=50&start=1", Method.GET);
var R = Client.Execute(Request);
返回GDPR页面,并且:
var Client = new RestClient("https://nochillmemes.tumblr.com");
var Request = new RestRequest("/api/read/json?filter=text&type=photo&num=50&start=1", Method.GET);
Request.AddHeader("user-agent", "curl/7.54.0");
var R = Client.Execute(Request);
仍返回GDPR页面...
因此,总而言之:
这可能是什么原因?
我试图了解正在发生的事情,因为我不想在不知道为什么的情况下依靠有效的方法:)
答案 0 :(得分:1)
问题在于您如何在RestSharp
中设置用户代理标头。
根据this github issue,而不是:
Request.AddHeader("user-agent", "curl/7.54.0");
您应该使用:
Request.UserAgent = "curl/7.54.0";