Отправка запросов
Отправляй HTTP-запросы через прокси — импорт/экспорт cURL, заголовки, куки и тело
Скрипт получает 403 или HTML, который не совпадает с тем, что ты видишь в браузере, и надо понять почему. Отправь ровно тот же запрос отсюда — со своими заголовками, куками и прокси — и посмотри сырой ответ, цепочку редиректов и имя анти-бот системы, которая ответила вместо сайта.
Добавь прокси в менеджере ниже
Как использовать
- 1Начни с запроса, который уже работает — Открой DevTools на странице, правый клик по запросу, Copy as cURL — и вставь на вкладку cURL. URL, метод, заголовки, куки и тело подставятся сами. Работают оба формата Chrome: bash и windows-вариант с кареткой. Заполнить поля руками тоже можно.
- 2Выбери, откуда уйдёт запрос — Используй встроенные прокси или добавь свои — HTTP, SOCKS4, SOCKS5, с авторизацией и без. Если сайт уже заблокировал один адрес, смена прокси часто и есть весь эксперимент.
- 3Отправь и прочитай ответ целиком — Код статуса, заголовки ответа, тело и вся цепочка 301/302. Если вместо сайта ответил Cloudflare, DataDome или PerimeterX — в результате будет его имя.
- 4Поменяй одно, отправь снова — User-Agent, одна кука, другой прокси — по одному изменению за раз. Разница между двумя ответами и есть ответ на вопрос, почему код блокируют, а браузер нет.
- 5Верни рабочий запрос в код — Вкладка cURL в любой момент собирает готовую команду из текущего состояния. Вставь её в Конвертер cURL и получи Python, Node, Go или PHP с теми же заголовками.
Примеры
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36GET https://example.com -> определено: DataDomeGET https://example.com (в теле нет блока с ценой)GET https://example.com/api/v1/items?page=2socks5://user:pass@host:1080curl 'https://example.com' -H 'cookie: session=...' -H 'accept-language: ru-RU'Cookie: session_id=abc123; consent=1; ab_group=bGET http://bit.ly/xxxx (Follow redirects: включено)Когда использовать
Самый частый вопрос при написании парсера — «почему мой код получает не то, что я вижу в браузере». Настоящих ответов три: страница собирает содержимое через JavaScript, сайт отдаёт разное в зависимости от User-Agent или кук, либо вместо сайта ответила анти-бот система. Один запрос отсюда показывает, какой из трёх вариантов твой. Имя анти-бот системы — то, чего почти нигде больше не получить. Когда запрос перехватывает Cloudflare, DataDome или PerimeterX, ты обычно видишь безликий 403 без объяснений. Здесь в результате будет имя, и от него зависит следующий шаг: одну проходишь с User-Agent и сессионной кукой, другая смотрит на TLS-отпечаток, и подбор заголовков там бесполезен. Запросы уходят через прокси — встроенный или твой, — а не с твоего адреса. Дело не только в анонимности: половина проблем в парсинге живёт именно в прокси, и проверять запрос имеет смысл через тот же адрес, с которого пойдёт рабочий код. Чего инструмент не делает: он не выполняет JavaScript. Если содержимое появляется только после работы скриптов страницы, в сыром ответе его не будет, и никакая комбинация заголовков этого не изменит — нужен Playwright, Puppeteer или облачный браузер. Это тоже ответ, и получить его за один запрос лучше, чем после дня работы над парсером. Когда ответ на руках, следующий шаг — Тестер CSS-селекторов и Тестер XPath, чтобы вытащить из него данные.