Скорее всего requests детектят по фингерпринту. pyOpenSSL + cryptography меняют TLS-стек:
pip install pyOpenSSL cryptography idna certifi urllib3[secure] requests[security]
import urllib3.contrib.pyopenssl # активирует pyOpenSSL для urllib3
urllib3.contrib.pyopenssl.inject_into_urllib3()
import requests
url = "https://www.wildberries.ru/webapi/product/339182812/data?subject=104&kind=1&brand=311487279&lang=ru"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"Accept": "*/*",
"Referer": "https://www.wildberries.ru/catalog/339182812/detail.aspx",
"X-Requested-With": "XMLHttpRequest",
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text)
>>>200
>>>{"resultState":0,"value":{"data":{"brandAndSubjectUrl":"/brands/311...
З.Ы. можно вообще без headers, потому что дело не в них.