cURL vs RestSharp vs Rest.net 与 Tumblr 的行为不同

cURL vs RestSharp vs Rest.net behaving differently with Tumblr

我正在尝试从 Tumblr API 获取数据并得到不同的结果,因为他们在前面引入了 GDPR/Advertisers 页面。该页面应该出现一次并设置一个 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);

returns 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);

returns正确的数据!所以 tumblr returns 基于用户代理的不同结果。

使用 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);

returns 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);

仍然是 returns GDPR 页面...

所以,总结一下:

这可能是什么原因?

我正在尝试了解正在发生的事情,因为我不想在不知道为什么的情况下依赖某些有效的东西:)

问题在于您如何在 RestSharp 中设置用户代理 header。

根据 this github issue,而不是:

Request.AddHeader("user-agent", "curl/7.54.0");

你应该使用:

Client.UserAgent = "curl/7.54.0";