Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Парсинг динамического сайта на python?

Лучший ответ:
Обычные graphql запросы. viewId всегда одинаковый судя по всему
endCursor возвращается при каждом запросе

import requests

data = [{"operationName":"EventExhibitorList","variables":{"viewId":"RXZlbnRWaWV3XzE1MjUyMA==","search":"","selectedFilters":[{"mustEventFiltersIn":[]}]},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"ee232939a5b943c0d87a4877655179bc2e5c73472ff99814119deddb34e0a3b6"}}}]

response = requests.post('https://api.swapcard.com/graphql', json=data).json()
# парсим нужные данные тут

end_cursor = response[0]['data']['view']['exhibitors']['pageInfo'].get('endCursor')

while end_cursor:
    data = [{"operationName":"EventExhibitorList","variables":{"viewId":"RXZlbnRWaWV3XzE1MjUyMA==","search":"","selectedFilters":[{"mustEventFiltersIn":[]}],"endCursor":end_cursor},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"ee232939a5b943c0d87a4877655179bc2e5c73472ff99814119deddb34e0a3b6"}}}]
    
    response = requests.post('https://api.swapcard.com/graphql', json=data).json()

    # тут парсим нужные данные

    end_cursor = response[0]['data']['view']['exhibitors']['pageInfo'].get('endCursor')

Худший ответ:
Посмотри там же конкретную структуру запроса (что за поля передаются, их значения). Потом сформируй такой же запрос, скажем через requests и отправляй. Также нужно будет понять, как парсить ответ - это json, или это кусок html, или ещё что?
Детали зависят от конкретного сайта, так что конкретный код - это уже фриланс. 

Только имей ввиду, сайты могут не любить, когда их активно парсят. Варианты могут быть:

Проверка кук - просто загрузи сначала главную страницу в той же сессии requests, чтобы куки были.
Специальный сеансовый ключ для запросов - выясни, как он загружается, и сделай этот запрос перед началом работы.
Ограничение числа запросов с одного хоста - используй прокси, а лучше ограничь скорость работы скрипта.
Проверка клиента - поставь правильный User-Agent, можешь даже скопировать заголовки запроса.
Вопрос: Почему сервер под невысокой загрузкой медленно отвечает и ping растет до 80мс?

Лучший ответ:
Почему сервер под невысокой загрузкой медленно отвечает и ping растет до 80мс?В общем то на первый взгляд ситуация кажется нормальной. При такой заметной нагрузке пинг неизбежно должен вырасти.
Одно дело когда нет нагрузки - послал запрос, и сразу получил ответ, а под нагрузкой - послал запрос, этот запрос постоял в очереди, и вернулся с заметной задержкой. Очередь дело неприятное. Что в супермаркете, что в сети.Интернет канал потребляется в среднем на 200мбит а локальный канал 250мбит то есть только 20-25% нагрузки и такие проблемы.Тут все не так просто с нагрузкой в 25%.
Вот представьте - есть участок автодороги, с пропускной способностью 100тыс автомобилей в сутки. Это значит что он может без проблем и пробок комфортно пропустить не более 100тыс машин в сутки.
В реальности за сутки по нему проезжает в среднем около 25тыс автомобилей - нагрузка 25%. Все отлично.
Как вы думаете есть ли пробки на данном участке?
Конечно же есть! И очень большие.
Все просто - за сутки он может пропустить 100тыс машин, за час - 100/24=4,1тыс машин.
Утром в час пик этот участок пытаются проехать 10тыс машин, что более чем вдвое превышает его пропускную способность,  и образуется длинная пробка, в которой люди стоят целый час.
Вечером та же ситуация, те же 10тыс машин пытаются проехать его за час.
А в остальные 22 часа по этому участку свободно и комфортно проезжают еще 5тыс машин.
В итоге имеем среднюю загрузку трассы на 25% и дикие пробки и явную перегрузку пропускной способности.
То же самое в сети - вы смотрите среднюю нагрузку за секунду. Она равна 25% вроде все красиво.
На самом деле - у вас там огромные очереди в сотни миллисекунд чередуются с абсолютно пустым каналом.
Вывод -  по гигабитному каналу можно прогнать до 1гигабита, без повышения пинга (стояния в очередях) только в случае абсолютно равномерной нагрузки на канал.
А поскольку нагрузка равномерной бывает крайне редко - пинг будет расти при любой заметной нагрузке, потому что будут очереди.

Худший ответ:
1. Маршруты смотрите: судя по всему пинг идёт ещё туда, куда не должен был совсем идти (мультикаст-шторм или подобное).
2. Попеременно поотключайте интерфейсы на сетевухе и проследите: будут ли изменения.
3. Пробуйте заменить адаптер на нормальный.
Вопрос: Не получется вывести сколько одинаковых символов содержит строка?

Лучший ответ:
Что за странная манера писать на гибриде C и C++?

Пишите на плюсах - используйте std::string.
cin >> считывает до первого пробела, читайте через std::getline()

Худший ответ:
Без пробелов

Конец ввода это комбинация клавиш Ctrl + D в Linux и Ctrl + Z в Windows

#include <iostream>
#include <map>

using namespace std;

int main()
{
  map<char, int> table;
  char c = 0;

  while(cin >> c) table[c]++;

  for(auto [ch, cnt] : table)
  {
    cout << "symbol: '" << ch << "' count: " << cnt << "\n";
  }
}

С пробелами
#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
  map<char, int> table;
  string s;
  getline(cin, s);

  for(char c : s) table[c]++;

  for(auto [ch, cnt] : table)
  {
    cout << "symbol: '" << ch << "' count: " << cnt << "\n";
  }
}


С выводом русских букв еще разобраться надо.
Вопрос: Где взять нормальный сервер для VPN?

Лучший ответ:
В РФ куча провайдеров предоставляет VPS-ки. Берем VPS, ставим на нее бубунту (раз знаем), подымаем strongswan/openvpn/еще-что-нибудь - профит!

Худший ответ:
Посмотрите  вам самый дешевый подойдет
https://firstvds.ru/products/vds_vps_hosting#__vir...
Вопрос: Как получить информацию об ОС в локальной сети?

Лучший ответ:
хех, прям вот так они тебе енто и сказали.
8 лучших инструментов сканеров IP для управления сетью и далее изучать.

Худший ответ:
10-Strike.
Российская.
Платная.
Вопрос: Не работает HDD после неправильного питания?

Лучший ответ:
Это просто перемычки, должны прозваниваться тестером как короткое замыкание.
Рекомендую проверить стабилитрон(или диод) и стабилизатор питания (чёрные штуки выше ваших отмеченных)

Худший ответ:
Деталь с ноликом это перемычка - предохранитель. Мультиметром должна прозваниваться в режиме прозвонки или показывать нулевое сопротивление в режиме измерения сопротивления. 
Скорей всего замена этого нулевого резистора ничем не поможет, т.к. на плате сдохло что-то ещё, возможно что и основной контроллер тоже.
Вопрос: Как сбросить на заводские настройки Iphone 5s если забыл пароль от apple id?

Лучший ответ:
Никак, на то он и iPhone.

Худший ответ:
теоретически можно через сервисный центр если есть чек\коробка
Вопрос: Как учить Java Core?

Лучший ответ:
Я учу с августа месяца(так бы закончил уже давно, но у меня диплом в спинку дышит по основной специальности)  по такой схеме:  
Я взял темы курса на Юдеми и смотрю, что мог пропустить.

Беру тему и ищу ее в книге Шилдта, читаю, разбираюсь. После этого ищу практику\наглядные примеры более менее свежие на ютубе(могу порекомендовать канал Алишева, очень хорошо объясняет и затрагивает многие нюансы) и еще иногда смотрю список вопросов для собеседований на джунчика и разбираю эти темы. Такой подход мне позволяет не терять интерес ввиду цикличной смены подачи информации и многогранному рассмотрению темы. Желаю успехов!!

Худший ответ:
Все важные изменения в Java начались с Java 8. Другие версии, лишь дополняют или улучшают текущий фукнкционал. Так что читайте книгу дальше)
Вопрос: Если приложение использует Https запросы, мне нужно указывать, что это является шифрованием в App Store Connect?

Лучший ответ:
В App Store Connect просят указать, использует ли приложение шифрование, которое не входит в список исключений (для этого списка не требуется предоставлять документацию).

Подробное описание правил и процессов есть в документации.

А здесь можно найти таблицу с видами шифрования и целями использования. Для обычных HTTPS-соединений дополнительная информация не требуется.

Худший ответ:
Я указываю, что не использует шифрование.
Вопрос: Как отделить компьютеры от общей локальной сети без смены ip адресов на устройстве микротик?

Лучший ответ:
Поменяйте адреса всем кроме компьютеров (с) Ваш кэп

Худший ответ:
Если между устройствами и шлюзом нет свитчей и т. п. - ограничения можно настроить прямо на вашем микротике. В противном случае можно, не меняя адресов, уменьшить маску подсети - чтобы пакеты принудительно ехали через микротик - но это костыль.
Вопрос: Как в коде в стиле «clean architecture» использовать транзакции?

Лучший ответ:
Нужно понимать, что orderRepository и paymentRepository — это абстракции, а фактически данные могут храниться как в одной базе, так и в совершенно разных. Например, orderRepository находится на сервере S1 в базе Redis, а paymentRepository — на серверах S2, S3, S4 в базе PostgreSQL. Поэтому, классические транзакции здесь неприменимы. Этим можно пренебречь в большинстве случаев и не переусложнять систему, а можно пойти "правильным" путём и использовать распределённые транзакции, например, саги https://microservices.io/patterns/data/saga.html

Худший ответ:
Нужно понимать, что orderRepository и paymentRepository — это абстракции, а фактически данные могут храниться как в одной базе, так и в совершенно разных. Например, orderRepository находится на сервере S1 в базе Redis, а paymentRepository — на серверах S2, S3, S4 в базе PostgreSQL. Поэтому, классические транзакции здесь неприменимы. Этим можно пренебречь в большинстве случаев и не переусложнять систему, а можно пойти "правильным" путём и использовать распределённые транзакции, например, саги https://microservices.io/patterns/data/saga.html
Вопрос: Почему не могу открыть настройки Роутера?

Лучший ответ:
возможно произошёл скачек напряжения и перестал работать интернет (также теперь не работает морозилка на кухне).Обычно в таком случае умирает не роутер, а только адаптер питания. И он мог не полностью умереть, но "подгореть" (выдаёт недостаточное или нестабильное напряжение) и в результате роутер создаёт только видимость работы. Посмотрите этикетку на адаптере питания, там указано номинальное выходное напряжение и максимальный выходной ток. Рекомендую поискать другой адаптер питания с таким же напряжением и таким же или бОльшим током, и попробовать с ним включить роутер.

Худший ответ:
Алгоритм:
1.Проверить целостность пачкорда, которым подключаете роутер по лан кабелю к вашему ноутбуку.
2. Попробовать сбросить кэш, открыть в инкогнито, открыть в другом браузере, попробовать другой ноут.
3. Отключить брандмуэр или антивирус (бывает режет), особенно какой нибудь дерьмовый аваст.
Вопрос: Ребят, ЧТО ЭТО? Скинули файлы backend приложения, как восстановить его?

Лучший ответ:
docker-compose up -d
Из папки проекта - и вперед...
Ну и README.md почитать не лишним было бы...

Худший ответ:
Это файлы какого-то фреймворка.
Вопрос: Где в России заняться исследованиями микроядерной архитектуры операционных систем?

Лучший ответ:
За пределами России. В России творится мракобесие и такое чувство, что учёных начнут скоро снова сжигать на кострах.

Худший ответ:
В Саровском микроядерном центре.
Только туда не всех берут.
Вопрос: Как обработать массивы?

Лучший ответ:
const al   = "АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЫЬЭЮЯ "; // Алфавит
let key1 = "ПЕРВЫЙ"; // первый ключ
let key2 = "БУКВА"; // второй ключ
let open_str = "ЭТО СТРОКА ОТКРЫТОГО ИСХОДНОГО ТЕКСТА"; // кодируемый текст

// т.к. в алфавите нет букв Й и Ъ, то производим соответствующую замену:
key1 = key1.replace("Й","И").replace("Ъ","Ь");
key2 = key2.replace("Й","И").replace("Ъ","Ь");
open_str = open_str.replace("Й","И").replace("Ъ","Ь");

// кодируем текст
let encoded_str = ([...open_str]).map( (e,i) => al[(al.indexOf(e) + al.indexOf(key1[i%key1.length]) + al.indexOf(key2[i%key2.length])) % 32] ).join("");

console.log(encoded_str);PS:
к строке по сути можно обращаться как к массиву -  str[index]
про .map смотрим здесь - https://developer.mozilla.org/en-US/docs/Web/JavaS...
если вам надо прям вот на МАССИВАХ, то просто сделайте соответствующие переменные "массивами"
строку в массив можно разбить так str.split("") или [...str]
по скрипту
al - строка / массив букв алфавита
al.indexOf(char)  - получаем индекс буквы в алфавите
по выбору символа из ключа - т.к. ключ у нас заитерирован, то берем остаток от деления индекса кодируемого символа на длину ключа , это и будет символ из ключа - key1[i%key1.length], далее получаем его код по алфавиту - al.indexOf(key1[i%key1.length])
и у вас много ошибок в таблице, например в третьей строке - конечный символ не И, а З
и т.д.snippet

Худший ответ:
Как я понял:
Есть алфавит с соответствиями кодов: 0 - А, 1- Б, 2 - В, 3 - Г, и т.д.[Код символа из алфавита] = ([код буквы сообщения] + [код буквы ключа1] + [код буквы ключа2]) mod 32mod - это остаток от деления суммы на 32 (также "mod", иногда обозначают знаком процента: "%" ).
Складываем числа, делим, получаем остаток, смотрим букву на основании алфавита.
Вопрос: Зачем в nextjs в Link делать a?

Лучший ответ:
Не писать тег а в комментах отмечено как Deprecated https://github.com/vercel/next.js/blob/feb10f45c10...
, лучше писать как в документации

Худший ответ:
Нет, не обязательно.
Но если тебе придется стилизовать ссылку, то стилизовать Link не получился, поэтому ты будешь использовать что-то вроде
const StyledLink = styled.a`
color: #f00;
`

<Link href={} passHref><StyledLink>My Link</StyledLink></Link>
Не забывай про атрибут passHref в случае, если нужно прокинуть href стилизованной ссылке
Вопрос: Linux команды 0=/home/user/ что значит в начале «0=» эти 2 символа?

Лучший ответ:
— А давайте подарим Путину зажигалку! 
— Он не курит! 
— А давайте подарим ему пиджак в ананасах, штаны такие зеленые и … 
— И ты не кури!

Худший ответ:
Разобрался всем спасибо это вот так работает:/
spisok=1 значит 1=/home/user/Desktop/list1.txt
spisok=2 значит 2=/home/user/Desktop/list2.txt
Вопрос: Оцените пожалуйста верстку. Можно ли с такими навыками брать заказы на фрилансе?

Лучший ответ:
Лично мне, как пользователю - сайт понравился. Он хорошо оптимизирован для мобильных устройств. Но есть один минус. Некоторый текст нечитабельный. На этом всё. Удачи :)

Худший ответ:
Если коротко, то нет.

Если развернуто:

а) Отступы где? :)
б) Пока не сможете верстать такое - https://www.bertani.net/, на фрилансе вы не конкурент, только если за бесплатную работу
Вопрос: Нужно сделать программу покороче. Как?

Лучший ответ:
нужно в 24 строки уложиться
Замените тело функции invert на

return ''.join('0' if n == '1' else '1' for n in d)
Получится ровно 24.

Тело второй функции тоже сократим до одной строки:

return '1' if n == 1 else ((s := dracon(n - 1)) + '1' + invert(s)[::-1])
Сами функции теперь ничего не мешает переписать в виде лямбд.

Наконец, заметим, что две строки перед циклом, который перебирает dr, идентичны одной из веток условного оператора внутри цикла - так что удалим их, а цикл пусть сделает ещё одну итерацию, для этого в начале dr должно оказаться что-то, отличное от '1'.

Достаточно коротко получилось?invert = lambda d: ''.join('0' if n == '1' else '1' for n in d)
dracon = lambda n: '1' if n == 1 else ((s := dracon(n - 1)) + '1' + invert(s)[::-1])

dr = '0' + dracon(int(input()))
print(dr)

import turtle as t
tt = t.Turtle()

for n in dr:
  if n == '1':
    tt.right(90)
    tt.forward(4)
  else:
    tt.left(90)
    tt.forward(4)

input()
Тут конечно надо отметить, что на данный момент далеко не везде используется python версии 3.8+, так что приведённый код может у вас и не взлететь, по причине наличия в нём assignment expression (оператор :=).


Худший ответ:
def invert(d):
    res = ""
    for i in d:
        if i == "1":res += "0"
        else:res += "1"
    return res
def dracon(n):
    if n == 1:return "1"
    s2 = invert(dracon(n - 1))[::-1]
    return dracon(n - 1)+"1"+s2
dr = dracon(int(input()))
print(dr)
import turtle as t
tt = t.Turtle()
tt.left(90)
tt.forward(4)
for i in dr:
    if i == "1":
        tt.right(90)
        tt.forward(4)
    else:
        tt.left(90)
        tt.forward(4)
input()
Если поднапрячь мозги, можно и ещё урезать, только главное не давать смотреть такой код слабонервным.
Вопрос: Разница подключения минусового провода на раму или на акб?

Лучший ответ:
Когда минусовой провод, какого-нибудь потребителя кидают на кузов, то получается электроны бегут по всему кузову и это создаёт доп. сопротивление?Не хотелось бы вдаваться в глубокую физику, но придётся. По кузову (точнее, по всем соединённым с ним металлическим частям) распределяется электрополе, забираясь во все уголки, а электроны выбирают путь достаточно своеобразно и не очень определённо. По дальним концам кузова они точно не "бегут", пока эти концы ничем проводящим не заканчиваются. Чтобы они побежали, цепь должна быть замкнута, т.е. представлять собою кольцо.
Раньше у датчиков был только 1 провод, а масса шла через двигатель и потом уже через косу на акб, я думаю это плохой способ, потому что если что то где-то сгниёт, то датчик может работать не коректно и его замена не поможет.Это действительно снижает надёжность, но конструкторы автомобилей должны учитывать не только надёжность. Использование массы как одного из проводов бортовой электросети делает эту сеть в несколько раз дешевле. А надёжность снижается лишь при плохом уходе хозяина за своим авто.
Лучше делать отдельные цепи + и -, как сейчас это делается.Я не автомобилист, и не в курсе, как это делается сейчас в автомобильной технике, но знаю, что неиспользование массы как одного из основных проводов бортовой сети практикуется в ракетной технике. У ракетчиков вопрос стоимости не главенствует, зато им очень важна надёжность. Кроме того, им важно контролировать целость проводки и надёжность изоляции, а отделение корпуса от сети даёт такую возможность весьма простыми средствами.

Худший ответ:
Существенной разницы нет, кроме удешевления производства комплектующих и сборки авто в целом.
А насчет плохой массы, так и на самом датчике минусовой провод может со временем окислиться.
Вопрос: Как совместить 2 модуля в питоне?

Лучший ответ:
Используй threading.

Худший ответ:
Пулинг бота запускай в отдельном "потоке" перед win1.mainloop()
Thread(target = bot.polling).start()
win1.mainloop()
Вопрос: Как начать изучать новое?

Лучший ответ:
Как начать изучать новое?Перестать задавать здесь вопросы и учить!)

Худший ответ:
Определиться в том что именно вам нужно изучать, составить план идти по этому плану
Вопрос: Ловлю BSoD, когда отсоединяю мышку от usb порта. Как это можно исправить?

Лучший ответ:
Драйвер VBoxMouse.sys "привязался" через реестр к сдантдартному драйверу мыши (msmouse.inf) также, как mouhid.sys. Поэтому просто при удалении VBoxMouse.sys мышь перестает работать вообще, т.к. перестает работать msmouse.inf. 

Поэтому надо "отвязать" VBoxMouse.sys от msmouse.inf в реестре через редактор реестра. Для этого необходимо найти в редакторе реестра сам драйвер msmouse.infДля этого надо в диспетчере устройств найти свою мышь, открыть вкладку события, найти строку class guid.Потом перейти в редакторе реестра к папке Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<то что написано в class guid>. Найти значение UpperFilters.B в окошке Value Data (у меня система на английском) убрать строчку VBoxMouse.Закрыть редактор реестра.Перезагрузить компьютер


Худший ответ:
этот драйвер удалите из system32, а впихните туда стандартные драйвера винды на мышь. скопируйте например с рабочей системы. мне кажется должно помочь
Вопрос: Как просмотреть локальный сайт на телефоне?

Лучший ответ:
Если сайт запущен локально, а не просто HTML страница в браузере, то можно узнать ip своего компьютера, а потом на телефоне написать айпи:порт. 
Пример: 192.168.0.103:3000

Худший ответ:
Решил вопрос при помощи github pages
Вопрос: Проект — замок с уникальным id, который открывается и закрывается удаленно после оплаты. Как лучше реализовать?

Лучший ответ:
Проблема дизайна. Коробка обязана иметь локальный интерфейс, а не сайт. Это типичная ошибка "дизайнеров" всевозможных умных (а в результате, тупых) систем - предполагать, что у юзера с собой заряженный смартфон с работающим интернетом. Очень часто вместо этого вы получаете юзера:
-с севшим телефоном
-с телефоном без денег
-с нокией 3310
-ладно, у юзера заряженный айфон и деньги есть, но блин, как раз сегодня в районе вашей коробочки упал мобильный интернет, осталось только 2G, а ваш сайт - раздутое PWA на десяток мегабайт.

Очевидно, что в вашем случае возможно следующее - юзер, находясь дома, все оплатил, коробка открылась, но пока юзер до нее шел, его опередил хулиган Сидоров и все забрал.

Как я уже говорил в похожем треде - наиболее надежно в плане электроники (и дешево в долгосрочной перспективе) - специализированное решение, а не поделка из RPi с линуксом и прочим шарабаном.

Определяйтесь с тем, как ваше изделие будет получать интернет (Wi-fi, Ethernet, 3G) и основываясь на этом, проектируйте контроллер. Ну или используйте RPi, но это будет дороже.

В частности, такой девайс можно сделать вообще не требующим подключения ни к интернету, ни к сети 220V - ведь курьер, приносящий в него товары, может обновлять списки пинкодов к шкафчиками и приносить новые батареи.

Худший ответ:
А в чем проблема? Проплатите самую дешевую VDS, купите домен, настройте бесплатный SSL-сертификат, чтобы https был и безопасненько было. На VDS, чтобы не завязываться на одного единственного провайдера и легче было переносить сервер в случае чего, докер поставьте, сконфигурируйте докер-компоуз с контейнерами:
- nginx для статики и заворачивания SSL,
- БД (postgres или что вам там привычнее? Можно монгу)
- напишите на питончике или любом языке который знаете простейший веб-сервис с API, который будет отвечать коробочкам кому когда открываться и закрваться, статусы с них собирать, уровень заряда там и прочую телеметрию. Можно под это дела фрилансера нанять, если сами не умеете.
- можно отдельно поднять сайтик на этой же VDS и, если надо, какую-нибудь CMS готовую. Благодаря докеру все он у вас не будут толкатьс локтями и мешать друг другу своими зависимостями.

Не забыть по крону прописать обновление сертификата (у letsencrypt есть certbot специальный).

Если всё сделать правильно, то развёртывание сервера будет тривиальным, можно легко, быстро и бесшовно переезжать на другой хостинг.

Коробочки ваши будут с заданным интервалом слать телеметрию на API, забирать инфу о необходимости открыться/закрыться. Если момент открытия и закрытия нужно соблюдать до секунд или точнее, то можно поднимать веб-сокет соединение, но лучше синкануть время и говорить коробочке во сколько открываться и закрываться.
Вопрос: В чём разница локального адреса и localhost?

Лучший ответ:
Локальный адрес - любой адрес в локальной сети.
localhost имя которое резольвиться по умолчанию на адрес 127.0.0.1
127.0.0.1 это IP адрес петлевого интерфейса - при обращении на этот адрес пакет приходит на интерфейс компьютера с которого был отправлен.

В чём отличие локального ip адреса от localhost-а?А в чем отличие тойоты от лягушки?
Локальный IP адрес    это IP адрес.
Localhost  это доменное имя.

Можно ли как-то сделать переадресацию на localhost?Вполне. Только зачем.

Худший ответ:
У вас сервер не слушает localhost, поэтому страница и не открывается.
Или настроен "virtual host" - сайт привязан к доменному имени, а не к порту/адресу.
Переадресацию сделать можно, но не нужно, т.к. это не о том. Все это регулируется правкой конфига.
Кстати, вы не написали, что у вас в качестве сервера и ОС, поэтому в ответах только абстрактные рассуждения.
Вопрос: Как скачать видео с ютуба в максимальном качестве? Проверял с помощью программ, онлайн сервисов, у всех максимум это 720p Как решить эту проблему?

Лучший ответ:
Старый добрый консольный youtube-dl, ключ -F позволит увидеть список всех возможных вариаций по качеству видео/аудио. А ключ -f позволит скачать выбранное качество, хоть 8k качай. Стоит учитывать, видео и аудио у наиболее качественных вариантов идут отдельно друг от друга, при наличии в системе ffmpeg youtube-dl можно заставить так же автоматически их собирать в 1 файл

Худший ответ:
VideoDownloaderHD+ там есть готовый пресет - сразу же скачивается видео и аудиодорожка в максимально доступном качестве и собирается в mkv файл