Коротко о ситуации: Я ручками захожу на сайт, беру curl нужного запроса, использую заголовки, полученные из curl и спокойно получаю 25-30 пачек данных, но а мне же нужно пропарсить весь сайт, условно 24000 предметов. То есть это мне нужно собрать около тысячи рабочих заголовков, по которым будет производиться парсинг. Но вот проблема - юпин детектит парсер: Какие бы заголовки я не сделал, юпин не пропускает их от слова совсем. То есть даже нет никакого лимита, а сразу 429 с первого запроса. При этом сгенерированные заголовки проходят проверку на антидетект браузер от intoli.com/. Мои гипотезы: Сайт динамически меняет заголовки Сайт детектит, был ли я на нём, и только тогда даёт добро на получение информации. Что интересно, я получил заголовки и закрыл сайт, а далее, спустя 12 часов я мог использовать эти заголовки для парсинга. То есть возможно сессия живучая просто. Бан происходит не по IP, потому что я могу открыть инкогнито вкладку и там всё работает, и заголовки с инкогнито тоже рабочие соответственно. Мне кажется что сайт как-то пингует меня, возможно он смотрит, получил ли я какие-то данные или что-то другое, например отработала ли какая-то функция, и только тогда он разрешает набору заголовков получать данные. Подскажите, пожалуйста, как обойти детект) Могу созваониться, на демке показать.
Нужно обязательно уазать хидеры platform и uk. Platform всегда фиксированный, uk генерируется в wasm'е, а его я дебажить не готов import httpx import asyncio async def main(): client = httpx.AsyncClient() response = await client.post( "https://api.youpin898.com/api/homepage/pc/commodity/page", headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0", "Accept": "application/json", "uk": "5FN5XveCMWGtOedUegKwVGb9gcr55SiXam21R7NxBhzimOrNb9VzQQxYdqZsKPV1N", "platform": "pc", }, json={ "gameId": 730, "businessType": 30, "pageSize": 20 } ) print(response.text) print(response) if __name__ == "__main__": asyncio.run(main()) Python import httpx import asyncio async def main(): client = httpx.AsyncClient() response = await client.post( "https://api.youpin898.com/api/homepage/pc/commodity/page", headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0", "Accept": "application/json", "uk": "5FN5XveCMWGtOedUegKwVGb9gcr55SiXam21R7NxBhzimOrNb9VzQQxYdqZsKPV1N", "platform": "pc", }, json={ "gameId": 730, "businessType": 30, "pageSize": 20 } ) print(response.text) print(response) if __name__ == "__main__": asyncio.run(main())
я думаю сайт смотрит твой fingerprint и уникальный токен посмотри как он генерирует тебе токены когда ты просто клацаешь новые сессии если найдешь закономерность, сам сможешь их генерировать