Alhimik
В особо изощрённых случаях проверяется даже порядок заголовков. 🤷🏻‍♂️
Stas
А что такое возможно ?
Stas
Даже порядок
Stas
Причем тут favicon ? он то тут каким боком ? один запрос fetch может быть корректным когда браузер с головой и не корректным когда без головы
Alhimik
Alhimik
Alhimik
Вот два запроса, один в headfull режиме, другой в headless.
Stas
JavaScript нет на сайте, я его отключаю
Alhimik
И это простой запрос на пустую страничку.
Alhimik
В headless не отправляются заголовки sec-ch-ua и sec-ch-ua-mobile и не делается запрос favicon. В более сложных случаях может быть ещё больше отличий. Так что делай дамп заголовков и сравнивай. Других вариантов не вижу. 🤷🏻‍♂️
Stas
Можешь посмотреть, я не понимаю что может быть не так..
Stas
?
Alhimik
Как сделать дамп ?
page.on("request", (req) => { console.log(`[request] ${req.url()}\n${JSON.stringify(req.headers())}\n\n`); }); page.on("response", (res) => { console.log(`[response] ${res.url()}\n${JSON.stringify(res.headers())}\n\n`); }); page.on("requestfailed", (req) => { console.log(`[requestfailed] ${req.url()}\n${JSON.stringify(req.headers())}\n\n`); });
Stas
Спасибо
Stas
good { "sec-ch-ua":"\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"92\"", "accept":"application/json", "referer":"https://exapmle.com/", "accept-language":"ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", "sec-ch-ua-mobile":"?0", "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4512.0 Safari/537.36" } bad { "sec-ch-ua":"", "accept":"application/json", "referer":"https://example.com/", "accept-language":"ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", "sec-ch-ua-mobile":"?0", "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/92.0.4512.0 Safari/537.36" }
Stas
Ааа стоп
Stas
Не заметил)
Alhimik
Не заметил)
Бывает. )
Alhimik
Ну и sec-ch-ua отличаются.
Stas
Ну это я заметил
Stas
Я могу теперь просто в postman загнать заголовки ?
Alhimik
Да у меня нет запроса к favicon но как это вообще связанно между собой ?
Это может никак не влиять, а может влиять. Я к тому что отличия есть, и сайт может за это зацепиться. Поэтому нужно минимизировать отличия и пробовать.
Stas
Stas
Вроде все правильно
Stas
Stas
Думаю тут проблема но не шарю что тут может быть не так
Stas
" Not A;Brand";v="99", "Chromium";v="92"
Stas
@shad0w64 может браузер подменять уже указанные заголовки headers ?
Stas
Получилось
Stas
😀
Stas
@shad0w64 слушай, а как может быть такое, я выяснил все заголовки которые необходимы, через puppeteer теперь все работает, но не работает обычным запросом node js
Stas
'headers': { 'user-agent': 'etc' }
Stas
Им достаточно чтоб не блочить
Stas
const https = require('https'); process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; const httpsAgent = new https.Agent({ rejectUnauthorized: false }); const options = { 'method': 'POST', 'hostname': 'web2.temp-mail.org', 'port': 443, 'path': '/mailbox', 'headers': { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36' }, httpsAgent }; const req = https.request(options, (res) => { console.log('statusCode:', res.statusCode); console.log('headers:', res.headers); res.on('data', (d) => { process.stdout.write(d); }); }); req.on('error', (e) => { console.error(e); }); req.end();
Alhimik
Им достаточно чтоб не блочить
Это через браузер? Ну он же другие заголовки сам посылает.
Stas
Это через node
Stas
Попробуй все заголовки передай.
Оно и без них работает
Stas
В браузере у меня все ок
Stas
Ну так
Stas
А там то почему должно быть иначе ?
Stas
Stas
Постману достаточно user-agent
Alhimik
Постману достаточно user-agent
А реальные отправляемые заголовки ты можешь посмотреть? Или он от себя ничего не добавляет? (Я не пользовался постманом.)
Stas
Есть подозрения что все дело в этом
Alhimik
Есть подозрения что все дело в этом
Вряд ли они из-за версии будут блокировать.
Stas
Вряд ли они из-за версии будут блокировать.
Я отключаю tls и все работает хотя бы в postman
Alhimik
Он от себя только убирает
Я вот даже на картинке вижу возле заголовков цифру 8. И снизу подпись что 7 заголовков скрыты.
Stas
В браузере я подчищаю все заголовки и работает
Alhimik
Попробуй сначала все передать. А потом уже убирай лишние, если нужно. Обычно user-agent недостаточно.
Stas
Stas
И все работает
Alhimik
В браузере я подчищаю все заголовки и работает
Покажи скрин консоли. Ты только некоторыми можешь управлять, не всеми.
Alhimik
Вкладку Network открой и посмотри на реальные заголовки. От того что ты их из кода не проставляешь, не значит что их нет.
Stas
Alhimik
Ну вот. Просто ПКМ по запросу и скопируй как node.js или что-то такое там будет.
Stas
Stas
Такие как записывать ?
Stas
И так и так ошибка
Stas
Alhimik
Такие как записывать ?
Это HTTP2, взять либу, которая умеет в него.
Stas
Ага
Stas
Пон
Stas
Ответ тот же
Alhimik
Ответ тот же
Смотри внимательней. Что-то не совпадает значит. Когда запрос будет правильный то и ответ соответственно вернётся корректный. Так как другого способа отличать у сервера нету в данном случае.
Stas
Да там что-то с tls
Alhimik
Да там что-то с tls
Какая ошибка?
Stas
Статус 403
Stas
Stas