Вы можете просто использовать запросы. Если вы наблюдаете за своей сетью, вы можете видеть, что она выполняет запросы POST с выбранной полезной нагрузкой. Вот как бы я это сделал:
from requests import Session
BASE_URL = 'https://zerodha.com/margin-calculator/SPAN'
payload = {'action': 'calculate',
'exchange[]': 'NFO',
'product[]': 'FUT',
'scrip[]': 'DHFL19AUG',
'option_type[]': 'CE',
'strike_price[]':120,
'qty[]': 4000,
'trade[]': 'sell'
}
session = Session()
res = session.post(BASE_URL, data=payload)
data = res.json()
print(data)
Я получил URL и полезную нагрузку из сети наблюдений. Это то, что вы получите в виде данных в формате json.
Результаты в Chrome и Python
Просто посмотрите, как chrome или firefox отправляют и получают данные. И перепроектировать ваши запросы.