Мой парсер не забирает данные с сайта, не могу разобраться почему. Раньше все работало

Вот мой парсер. Его суть в том, что он парсит даты и цены стоимости актива указанного мой периода:

import json
import requests

url = 'https://investfunds.ru/etf/9705/'
date_from = '14.01.2021'
date_to = '02.04.2021'
payload = {
    'action': 'chartData',
    'data_key': 'close',
    'date_from': date_from,
    'date_to': date_to
}
r = requests.get(url, params=payload)
print(r.content)

Если раньше я получал какие-то хоть данные, то сейчас я получаю пустой список:

b'[]'

Не могу разобраться, что произошло и из-за чего все перестало работать.

Раньше на выходе получал:

b'{"name":"FinEx USA UCITS ETF (USD)","tooltip":{"valueDecimals":2,"xDateFormat":"%d.%m.%Y"},"data":[[1617224400000,5610],[1617310800000,5647],[1617570000000,5699]]}'

Ответы (1 шт):

Автор решения: Daniil Loban

Проведя небольшое исследование данного вопроса я пришел к выводу что на сайте реализовали защиту от доступа к данным. Прежде всего запросы с самого сайта получают в качестве ответа gif файлы размером 1x1 что само по себе подозрительно, но еще не достаточно для того чтобы подтвердить мои догадки.

Однако, изучив содержимое вставляемых тегов можно придти к выводу что информация передается именно таким образом. Ниже приведен cниппет для сравнения 2х изображений полученых при смене диапазона в графике катировок. Сами gif файлы при этом идентичны и внутри себя информации не содержат. Аттрибуты изображений включая событие клика (на пиксель! и записанное далеко не стандартным образом) так же не оставляют равнодушным. Но так как мое исследование было достаточно краким, не могу ничего утверждать на 100%. Получение изображений происходит именно в момент работы с графиком.

const a = '<img src="https://mc.yandex.ru/clmap/51681923?page-url=https%3A%2F%2Finvestfunds.ru%2Fetf%2F9705%2F&amp;pointer-click=rn%3A80775702%3Ax%3A61905%3Ay%3A26809%3At%3A1973%3Ap%3A%C2%9018%C2%8AAA2A4A1A11AA%3AX%3A1112%3AY%3A1072&amp;browser-info=gdpr%3A14%3Au%3A1623031693599940360%3Av%3A551%3Avf%3Alvg2sn1re60e0fel%3Arqnl%3A1%3Ati%3A0%3Ast%3A1623031891&amp;force-urlencoded=1" alt="https://mc.yandex.ru/clmap/51681923?page-url=https%3A%2F%2Finvestfunds.ru%2Fetf%2F9705%2F&amp;pointer-click=rn%3A80775702%3Ax%3A61905%3Ay%3A26809%3At%3A1973%3Ap%3A%C2%9018%C2%8AAA2A4A1A11AA%3AX%3A1112%3AY%3A1072&amp;browser-info=gdpr%3A14%3Au%3A1623031693599940360%3Av%3A551%3Avf%3Alvg2sn1re60e0fel%3Arqnl%3A1%3Ati%3A0%3Ast%3A1623031891&amp;force-urlencoded=1" class="transparent">'
const b = '<img src="https://mc.yandex.ru/clmap/51681923?page-url=https%3A%2F%2Finvestfunds.ru%2Fetf%2F9705%2F&amp;pointer-click=rn%3A89440648%3Ax%3A20540%3Ay%3A40959%3At%3A1810%3Ap%3A%C2%9D1%C2%9018%C2%8AAA2A4A1A11AA%3AX%3A388%3AY%3A1080&amp;browser-info=gdpr%3A14%3Au%3A1623031693599940360%3Av%3A551%3Avf%3Alvg2sn1re60e0fel%3Arqnl%3A1%3Ati%3A0%3Ast%3A1623031875&amp;force-urlencoded=1" alt="https://mc.yandex.ru/clmap/51681923?page-url=https%3A%2F%2Finvestfunds.ru%2Fetf%2F9705%2F&amp;pointer-click=rn%3A89440648%3Ax%3A20540%3Ay%3A40959%3At%3A1810%3Ap%3A%C2%9D1%C2%9018%C2%8AAA2A4A1A11AA%3AX%3A388%3AY%3A1080&amp;browser-info=gdpr%3A14%3Au%3A1623031693599940360%3Av%3A551%3Avf%3Alvg2sn1re60e0fel%3Arqnl%3A1%3Ati%3A0%3Ast%3A1623031875&amp;force-urlencoded=1" class="transparent">'

console.log(a === b)

что касается парсера:

import requests
url = "https://investfunds.ru/etf/697/"
payload='''payload = {
  'action': 'chartData',
  'data_key': 'close',
  'date_from': '01.04.2021',
  'date_to': '05.04.2021',
  }'''
response = requests.request("GET", url, data=payload)
print(response.content.decode('utf-8'))

так возвращается страница, но я не уверен что там есть нужные данные, хотя бы потому что на ней есть:

Показано 0 из 0, уточните запрос

Более 1000 записей, уточните запрос

→ Ссылка