cURL против RestSharp и Rest.net ведут себя по-разному с Tumblr - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь получить данные из API Tumblr и получить другие результаты, поскольку они представили страницу 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);

возвращает страницу 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...

Итак, в итоге:

  • cURL дает мне результаты API
  • Rest.Net дает мне результаты API, только если он претендует на то, чтобы быть cURL
  • Restsharp всегда дает мне страницу GDPR

Что может быть причиной этого?

Я пытаюсь понять, что происходит, потому что я нехочу положиться на то, что работает, не зная почему:)

1 Ответ

0 голосов
/ 19 сентября 2018

Проблема заключается в том, как вы устанавливаете заголовок пользовательского агента в RestSharp.

В соответствии с этой проблемой github , а не:

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

вамиследует использовать:

Request.UserAgent = "curl/7.54.0";
...