Потестил. Насчет тормозов не скажу, т.к. сам думал над этим и ниче не придумал.
Но вот мне что интересно. Почему через баш и через командную строку такие разные результаты, аж в 2 раза, при том что команда для курла вроде та же?
Не знаю, может cygwin под виндой медленно работает.
Я попытался максимально повторить в курле запрос браузера, но тспу на курл все равно не реагирует. Я даже урл использовал не только googlevideo.com, а весь длинный со всеми параметрами, Если не получится увидеть в курле тормоза, то и тестировать им тоже не выйдет. Может как-нибудь сделать, чтобы хром притворился курлом и его тоже блочить не будут ?
Я бы не сказал что ТСПУ не реагирует в моем случае. У меня всё сводится к 2 вариантам: либо курл показывает что всё окей, либо соединение полностью стопорится.
Единственное исключение - это сервера моего провайдера. Они до ТСПУ стоят, и с ними там странная история. Я тут уже много про это писал, но по сути, там проблема не на канале между мной и ими, а между ними и внешней сетью. Через курл это не увидеть, а вот через ytdlp - можно.
Выглядит это так: берешь какой-то супер-непопулярный зарубежный видос, начинаешь его качать. Yt-dlp присасывается к ближайшему серверу (т.е. провайдерскому). Скачка идет как черепаха. Потом останавливаешь на 50%, например. Удаляешь всё что накачалось и начинаешь заново. И - о, чудо! - до 50% скачивается за секунды, а потом опять начинает ползти как черепаха.
То есть отдача уже закэшированного там идет быстро. Но сам сервер не может нормально получить данные извне.
Хз, чем это вызвано. Перегрузка канала? Козни РКН?
Из-за этого мне пришлось в браузере заблочить провайдерские сервера через ublock. Они дикие таймауты при перемотках вызывали.
С чего вы решили, что сервер вам должен 200 отправлять? На этом сервере сайта нет. 404 это нормально это тоже ответ сервера, 200 не обязательно. Попробуйте через браузер зайти на корректный урл, например, https://rr1---sn-n8v7znz7.googlevideo.com
увидите не 200, а ERR_CONNECTION_RESET или Status: 000 в тесте. Т.е. сервер не ответил, а он и не обязан был отвечать.
На запрос http://rr1---sn-n8v7znz7.googlevideo.com
придет Status: 404
Это зависит от настроек сервера на что он отвечает, а на что нет.
Нужно пробовать. Цель полностью повторить запрос браузера в тесте. У меня не получилось подобрать такие параметры запроса, на которые тспу выдавал бы задержки идентичные браузеру. Вставлять нужно такой минимальный урл, на который поведение сервера будет таким же как и в браузере. Т.е. если в браузере запросы красные, то в тесте Status: 000. Если в браузере висит Pending и запросы приходят, но с задержками по 5-10 секунд, то такие же задержки должны быть в тесте. В скрипте нужно не только полный урл указывать, но и заголовки, пэйлоад конкретно ваши вставлять, может что-то еще, потому, что мы не знаем на что тригернет тспу.
На данный момент курл показывает только ситуации когда сервер совсем ничего не отвечает, а замедление не показывает никак. Видимо нужно открывать Wireshark и более тщательно подделывать запрос браузера в скрипте.
А нельзя в таком случае как-нибудь подвязать chromedriver? Вместо того, чтобы по кускам собирать запрос для курла, может сам браузер проще анализировать/модифицировать?
Открыл инкогнито вкладку хром. Дождался пока сервер моего провайдера начнет тормозить в браузере. Скопировал из браузера в скрипт полностью урл, всю длинную строчку с параметрами до конца, не ограничиваясь googlevideo.com, все заголовки. Сейчас тот же запрос выдает Status: 403 вместо 200. Видимо, на сервере есть таймер срока действия параметров. Я же говорю, я пытался полностью повторить запрос браузера.
Насколько я знаю, там дело в параметре n=, который является ключом безопасности. Ютуб расчитывает его на ходу по алгоритму, который находится в base.js. Если ключ неправильный - данные не отдаются. Это их политика борьбы со сторонними ютуб-приложениями, качалками и т.д.
Однако, там вроде есть какая-то дыра, связанная с андроидом (с приложением ютуба?) Поэтому тот же yt-dlp или парсер из PotPlayer, притворяются андроидом, лезут в ютубовский base.js, рассчитывают ключ n= и скачивают видос подставляя найденное значение.
Я не понимаю что вы спрашиваете. Я копировал всю строчку Request URL из браузера прямо в скрипт.
Кстати, хорошая идея! Можно прям из yt-dlp запрос скопировать, yt-dlp же также тормозит из-за тспу. И прикрутить к нему перебор всех стратегий обхода из блокчека. Будет всего лишь один скрипт, запустил его, и он без всяких подборов параметров сам установил рабочую стратегию обхода.
Но я ничего не рассчитывал, просто скопировал из браузера и мне 200 пришло. Хотя, может, самого видео контента в ответе и не было, я не проверял.