Пустая Data post запроса

SlipDez

Client
Регистрация
18.07.2018
Сообщения
375
Благодарностей
70
Баллы
28
Задача: Есть много ссылок на сайте в определенное время обновляется таймер необходимо узнать время обновления. Для этого пытаюсь Get/Post запросом спарсить Fetch/xhr. Чтобы получить данные сайта нужно авторизоваться через bearer token

Сложности: при попытке спарсить данные постоянно выдает пустую дату, раньше была ошибка 444 видимо был неккоректно указан токен входа. Сейчас просто пустая дата, перерыл 100500 тем на форуме, пробовал и гет и пост запросом и стандартными методами и через C# результат один и тот же.

Ниже прилагаю скрины (какие данные необходимо спарсить, гет запрос, пост запрос такой же, тип выводимых данных менял не помогает)

Код C#

Код C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string url = "https://backend-farm.plantvsundead.com/farms/61165735d3e71b001b34f632";
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 | System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
// GET запрос
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = userAgent;
request.Headers.Add("Accept-Language", "en-US,en;q=0.5");
request.Headers.Add("Bearer Token", "тут токен ");
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse) request.GetResponse();

using (var read = new StreamReader(response.GetResponseStream())){
string data = read.ReadToEnd();
return data;
}

и результат один и тот же {"status":1,"data":{}} - пустая дата не json. При переходе по ссылке тоже самое выводит а в Fetch совсем другие данные.


Код который работает на питоне

Код на питоне:
import requests

url = 'https://backend-farm.plantvsundead.com/farms/other/0xee5de8fe961b9d2599a1eea298db87be8768889d?limit=10&offset=30'

headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0",
            "Accept": "*/*",
            "Accept-Language": "en-US,en;q=0.5",
            "Connection": "keep-alive",
            "Authorization": "Bearer Token: ТОКЕН

response = requests.get(url, headers=headers)

print(response.text)

Можно сказать что это обычная браузерная игра. Ладу дать не могу. Помощи буду очень рад
 

Вложения

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
131
Баллы
33
Попробуй изменить заголовки на
Код:
request.UserAgent = userAgent;
request.Accept = "*/*";
request.Headers.Add("Accept-Language", "en-US,en;q=0.5");
request.Headers.Add("Authorization", "Bearer Token: ТОКЕН");
 
  • Спасибо
Реакции: SlipDez

SlipDez

Client
Регистрация
18.07.2018
Сообщения
375
Благодарностей
70
Баллы
28
Попробуй изменить заголовки на
Код:
request.UserAgent = userAgent;
request.Accept = "*/*";
request.Headers.Add("Accept-Language", "en-US,en;q=0.5");
request.Headers.Add("Authorization", "Bearer Token: ТОКЕН");
Огромное спасибо получилось)
 

SlipDez

Client
Регистрация
18.07.2018
Сообщения
375
Благодарностей
70
Баллы
28
Возможно раньше сталкивались с такой задачей как можно понять в какое время обновляется таймер на сайте раньше обновлялся
Harvest Time а теперь как-будто рандомно. Возможно подскажите где стоит смотреть

81520
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Попробуй изменить заголовки на
Код:
request.Accept = "*/*";
Accept может так серьезно влиять на результат?
Надо бы и у себя парочку запросов перепроверить, может из-за него и бросает на клауд...
 

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
131
Баллы
33
Accept может так серьезно влиять на результат?
Надо бы и у себя парочку запросов перепроверить, может из-за него и бросает на клауд...
Проблема была в том, что он неправильно указывал авторизацию по токену.
Accept может влиять, все зависит от настроек сайта.
Встречал сайт, на котором не проходили запросы из-за другого кол-ва черточек(в разделителе) в POST мультипарт запросе.

Возможно раньше сталкивались с такой задачей как можно понять в какое время обновляется таймер на сайте раньше обновлялся
Harvest Time а теперь как-будто рандомно. Возможно подскажите где стоит смотреть

Посмотреть вложение 81520
Если работаешь через прокси, то может из-за страны прокси(разный часовой пояс).
 

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3
Здравствуйте, подскажите пожалуйста, как в этом коде
C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string url = "https://backend-farm.plantvsundead.com/farms/61165735d3e71b001b34f632";
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 | System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
// GET запрос
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = userAgent;
request.Headers.Add("Accept-Language", "en-US,en;q=0.5");
request.Headers.Add("Bearer Token", "тут токен ");
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse) request.GetResponse();

using (var read = new StreamReader(response.GetResponseStream())){
string data = read.ReadToEnd();
return data;
}
указать свой заранее сохранённый профиль? Т.е. со всеми определёнными в нём куками и заголовками

и я правильно понимаю, что данный код имитирует запрос по последним стандартам защиты из браузера, т.е. для сайта это будет http 2.0 запрос? Спасибо
 

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3
Здравствуйте, подскажите пожалуйста, как в этом коде
C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string url = "https://backend-farm.plantvsundead.com/farms/61165735d3e71b001b34f632";
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 | System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
// GET запрос
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = userAgent;
request.Headers.Add("Accept-Language", "en-US,en;q=0.5");
request.Headers.Add("Bearer Token", "тут токен ");
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse) request.GetResponse();

using (var read = new StreamReader(response.GetResponseStream())){
string data = read.ReadToEnd();
return data;
}
указать свой заранее сохранённый профиль? Т.е. со всеми определёнными в нём куками и заголовками

и я правильно понимаю, что данный код имитирует запрос по последним стандартам защиты из браузера, т.е. для сайта это будет http 2.0 запрос? Спасибо
Извините, я погуглил пару дней и понял, что этот вопрос полностью идиотский )

Новый вопрос - у кого есть опыт подключения сторонних .dll для реализации post/get через http/2 - отзовитесь пожалуйста! Очень нужен совет ) А именно - как это сделать (хотя бы в общих словах) и какие dll лучше брать? Спасибо
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)