WebOne - прокси для работы старых браузеров в Web 2.0

Все, что не подходит под определение "старого софта и железа", обсуждается здесь
Аватара пользователя
misha_weba
Advanced Member
Сообщения: 332
Зарегистрирован: 14.04.2017,11:32
Откуда: СПб
Контактная информация:

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение misha_weba » 09.02.2023,11:43

потестил на ВМ-сборке, апдейт с помощью /opt/update-webone.sh работает.

По HTTP всё прекрасно проксируется.
При запросе с явным указанием протокола https:// из старого браузера получаем ошибку с текстом Bad Request (Invalid url: http://<URL>:8080<URL>:443)

Немного из дампа траффика для диагностики:

Код: Выделить всё

CONNECT yandex.ru:443 HTTP/1.0
User-Agent: Opera/9.64 (Windows 98; U; ru) Presto/2.1.1
Host: yandex.ru:443

HTTP/1.1 400 Bad Request
Content-Type: text/html
Server: Microsoft-NetCore/2.0
Date: Thu, 09 Feb 2023 09:32:24 GMT
Content-Length: 70
Connection: close
Keep-Alive: true

<h1>Bad Request (Invalid url: http://yandex.ru:8080yandex.ru:443)</h1>
Два вопроса:
- Это баг или метод CONNECT недопилен ? // да, понимаю, что запара, но в древнем инете https всё-таки существовал =)
- есть ли опция подмены заголовка Server ? Я попробовал с помощью AddResponseHeader=Server: AntiQ-WebOne-0150 в секции [Server], но это не сработало. Или это только в заданных правилах [Edit:] можно так делать ?

Непонятно, что за "Microsoft-NetCore/2.0". Исходный сайт такой заголовок точно не отдаёт.
7700K/32G/30T+/1070; C633/384M/20G/GF4/3.5"+5.25"; 80386/2M/256M/GD610/3.5";

Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5527
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ATauenis » 09.02.2023,13:06

Эта ошибка возникает если указать WebOne для всех протоколов. Пока запилена поддержка только HTTP Proxy, и больше ничего. Штатный PAC скрипт так и работает - проверяет чтобы протокол был "http:", и направляет трафик через прокси. Остальное он шлёт в DIRECT (напрямки).

Ну, а само сообщение об ошибке делается самим .NET Runtime. Точней, на виндах оно делается системным драйвером HTTP.SYS, на линях не знаю, что обрабатывает входящие HTTP подключения. Судя по тому, что Server: Microsoft-NetCore/2.0, а не Microsoft-HTTPAPI/2.0, то скорей всего обработчик вшит в сам дотнет. Эта фигня видит, что метод CONNECT, и сразу шлёт куда подальше. На виндах этот запрос всё же проходит в WebOne, и дальше выдаётся уже проксивское сообщение "The proxy does not know the CONNECT method.". Upd: не-а, что-то поменяли, и в Windows тоже лезет системное "HTTP Error 400. The request URL is invalid.". До прокси ничего не доходит, никаких обращений даже. Всё HttpListener/HTTP.SYS в неуправляемом коде глушит.
misha_weba писал(а): 09.02.2023,11:43 есть ли опция подмены заголовка Server
Виндовый обработчик точно настраивается через реестр (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\). Про его аналог на *nix сходу не гуглится ничего.
misha_weba писал(а): 09.02.2023,11:43 Я попробовал с помощью AddResponseHeader=Server: AntiQ-WebOne-0150 в секции [Server], но это не сработало. Или это только в заданных правилах [Edit:] можно так делать ?
Только в Edit'ах работает. И (по крайней мере на Windows) всегда будет дописываться Microsoft-HTTPAPI/2.0 в конец, это багофича системного обработчика. Народ даже на IIS на такое нарывается иногда.
misha_weba писал(а): 09.02.2023,11:43 метод CONNECT недопилен ? // да, понимаю, что запара, но в древнем инете https всё-таки существовал =)
Да, метод CONNECT очень сложно реализовать, пока не хватает навыков и времени. Это ж по сути уже ближе к SOCKS режиму, когда организовывается дуплексное TCP+TLS соединение. Т.е. надо не только принять внутри прокси запрос, но ещё и установить "мост" между сокетами, и поднять фейковый HTTPS сервер, делающий сертификат нужного образца на нужный домен (как в ProxHttpsProxyMII).

В какой-то обозримой перспективе есть идея переписать обработчик HTTP запросов, т.е. выкинуть этот HTTPAPI, и работать напрямую с TCP сокетами. Но пока обдумываю как это буду делать. Первая попытка запилить это была в первых версиях WebOne (до 0.8.0). Тогда вышло кривовато. :) Но если решу задачу, сразу удастся убить 3 зайцев - запилить основу под CONNECT, поддержку CERN режима (т.н. FTP/GOPHER/WAIS Proxy), и ещё устранить 400 ошибку в самых первых версиях WinMosaic (которые да, после WebOne 0.8.0 сломались).
Последний раз редактировалось ATauenis 09.02.2023,22:29, всего редактировалось 1 раз.

Аватара пользователя
misha_weba
Advanced Member
Сообщения: 332
Зарегистрирован: 14.04.2017,11:32
Откуда: СПб
Контактная информация:

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение misha_weba » 09.02.2023,15:21

понял, спасибо.

Реестр курить точно не буду (в текущих версиях виндовс этот реестр может весить больше, чем вся ВМ с WebOne), просто увидел в конфиге работу с заголовками (UserAgent + типы) и заинтересовался. IIS у меня ассоциируется с очень дремучим и нехорошим легаси.

Работа напрямую с TCP-сокетами потребует реализации и/или подключения кода с реализацией протоколов HTTP/TLS/QUIC, которые тоже не сахар.

Я довольно давно писал на связке питон + твистед довольно хитро*опый мультипротокольный сервер, но эта была та ещё боль в отладке даже несмотря на обширное обилие готовых модулей для работы с сетевыми протоколами.

Если чего найду интересное - напишу.
7700K/32G/30T+/1070; C633/384M/20G/GF4/3.5"+5.25"; 80386/2M/256M/GD610/3.5";

Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5527
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ATauenis » 15.02.2023,21:14

Выпущена версия 0.15.1.
  • Исправлены ошибки 80200011, 80244008, 80072f76 при работе LegacyUpdate.net или Windows Server Update Services.
  • По умолчанию исправление ошибки "80244008: Unknown error" отключенo. Чтобы разрешить нормальную работу Legacy Update, можно установить опцию AllowHttpCompression=no в секции [Server] конфигурации WebOne. Это исправление может замедлить работу прокси, поэтому по умолчанию оно не используется.
  • Примечание: работа Windows Update через прокси настраивается через Командную строку, proxycfg /p proxyhost:8080.
  • Автоматическое обновление систем Windows 2000/XP через Legacy Update и прокси теперь работает корректно. Win2008/Vista/7, возможно, тоже - не проверял. :)
  • Исправлены text-transform CSS-декларации для Firefox <15.0.
  • Исправлены некоторые CSS3-декларации для Firefox <15.0.
  • Исправлена ошибка "Idle process youtube-dl killed" на некоторых длинных видео YouTube.
  • Добавлена поддержка выкачки метаданных YouTube-видео через WebOne+Youtube-DL. Можно дописать dump-json=yes параметр к URL страницы http://proxy/!webvideo/ для скачки метаданных вместо сконвертированного видео.
  • Удалены старые скрипты yt.bat и yt.sh (страницы /!webvideo/ и /!player/ достаточно развились, и не используют эти скрипты для своей работы).
Страница загрузки: https://github.com/atauenis/webone/releases/tag/v0.15.1

Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5527
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ATauenis » 14.03.2023,14:40

Выпущена версия 0.15.2.
  • Улучшения поддержки браузеров:
  • Добавлена конвертация картинок SVG для Mozilla 1.x, Firefox <4.0, MSIE <9, Opera <10.0.
  • Добавлена конвертация картинок WebP для Opera <11.5, MS Internet Explorer (ранее ограничивалась только старыми Firefox).
  • Исправлено открытие стартовой страницы Mozilla/Mozilla Firefox по умолчанию (настоящая http://start.mozilla.org/ теперь осталась только на английском).
  • Исправлено скачивание XPI расширений Mozilla со страниц Forum.Mozilla-Russia.org.
  • Исправлено открытие страниц mozdev.org (вроде "Add search engine" в Firefox 1.0).
  • Исправлена кодировка для Netscape 1-3 в OS/2 Warp. Как ни странно, нетшкаф в 3 полуоси предпочитает 866 кодировку.
  • Исправлен неуместный запрос к Internet Archive при загрузке картинок в мобильную версию VK.
  • Обновления клиента Web-FTP:
  • Добавлена кликабельная строка пути.
  • Добавлена возможность сохранять каталоги FTP в закладках браузера.
  • Исправлена работа в многовкладочных браузерах. Все ссылки теперь абсолютные, а не относительные.
  • Добавлена поддержка предпросмотра разных файлов с FTP серверов в браузере. Теперь поддерживается не только .TXT.
  • -Общеизвестные типы файлов записаны в webone.conf.
  • -Другие типы можно дописать в секцию [MimeTypes] конфигурации.
  • Добавлена возможность отключить FTP клиент опцией EnableWebFtp в секции [Server] конфигурации.
  • Обновления ядра:
  • Улучшена стабильность сервиса systemd в Linux.
  • Исправлена загрузка конфигурационных файлов, если они лежат в нестандартных расположениях.
  • Добавлена возможность загрузки конфигурации в macOS из папки /Library/Application Support/WebOne/webone.conf (или ~/Library/Application Support/WebOne/webone.conf).
Страница загрузки: https://github.com/atauenis/webone/releases/tag/v0.15.2

Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5527
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ATauenis » 17.04.2023,22:18

Выпущена версия 0.15.3.
  • Исправлено падение в некоторых средах Linux, таких как screen в TinyCore.
  • Исправлена работа с ответами FTP серверов из нескольких строк. Клиент Web-FTP теперь работает с большинством известных серверов.
  • Добавлены патчи CSS3 для ранних браузеров на WebKit: Safari <6, Chrome <28, Android <5, iOS <6 (WebKit 536 и ранее).
  • Добавлены патчи CSS3 для Opera 9.6/10.xx/11.xx/12.00.
  • Добавлена поддержка автовыбора кодировок ISO 8859-1...8859-15 в зависимости от языка сервера (по аналогии с "Win"/"DOS"/"Mac", можно использовать "ISO" для автовыбора).
  • Добавлена поддержка перекодировки страниц под IBM WebExplorer (версия в русской OS/2 Warp 3 предпочитает страницы в ISO-8859-x).
  • Добавлены экспериментальные сборки для macOS на процессорах Apple M1/M2. В теории, должны работать напрямую, без Rosetta 2 (реального железа проверить на практике нет). Обычная Intel версия также присутствует.
Страница загрузки: https://github.com/atauenis/webone/releases/tag/v0.15.3

Аватара пользователя
ShER424
Advanced Member
Сообщения: 1824
Зарегистрирован: 18.02.2012,02:10
Откуда: MSK
Контактная информация:

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ShER424 » 29.04.2023,16:25

Здравия. Установил WebOne 0.15.3 на debian11.
Ничего дополнительно не настраивал.
У меня на сайте для MSIE осуществляется перекодировка страниц в CP1251

Код: Выделить всё

if (strpos($_SERVER["HTTP_USER_AGENT"], "MSIE") !== false) {
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "CP1251");
ob_start("ob_iconv_handler");
$char="Windows-1251";
}
Если открывать страницу через webone, вылезает такое:
webone.JPG
Где найти документацию по кодировке или чего настроить? (извините за беспокойство)

ЗЫ: апач и webone стоят на одной машине.
Вам ли, любящим баб да блюда, жизнь отдавать в угоду?!
Я лучше в баре блRдRм буду подавать ананасную воду!

Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5527
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ATauenis » 29.04.2023,17:12

Надо ставить "Windows-1251" вместо "CP1251". Или просто число 1251, в крайнем случае.
► Показать
Но за идею спасибо, возможно, есть где-то ещё криво настроенные сервера, указывающие некорректное web-имя кодировки. Раньше был баг с "iso8859-1" (его даже на Stack Overflow обсасывали, много софта падает с таким наименованием, без тире после "iso"), и сделал ему исправление не так давно. Вариант CP1251/Windows-1251 можно будет запилить ещё.

Аватара пользователя
ShER424
Advanced Member
Сообщения: 1824
Зарегистрирован: 18.02.2012,02:10
Откуда: MSK
Контактная информация:

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ShER424 » 29.04.2023,18:01

ATauenis, спасибо, работает "Windows-1251". Изменил тут: iconv_set_encoding("output_encoding", "Windows-1251");
Я не помню, почему именно "CP1251" я использовал. То ли от нелюбви к маздаю )), то ли тогда работало только "CP1251" (debian9), то ли я просто нашел такой мануал в интернетиках.
Вам ли, любящим баб да блюда, жизнь отдавать в угоду?!
Я лучше в баре блRдRм буду подавать ананасную воду!

baraduliy
Member
Сообщения: 182
Зарегистрирован: 23.12.2019,21:31
Откуда: СПБ

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение baraduliy » 01.05.2023,09:45

Здравствуйте, Windows 10. При запуске говорит:

"Architecture: x64
App host version: 6.0.16
.NET location: Not found

Learn about runtime installation:
https://aka.ms/dotnet/app-launch-failed

Download the .NET runtime:
https://aka.ms/dotnet-core-applaunch?mi ... ion=6.0.16"

Скачиваю по ссылке, устанавливаю. Далее при запуске webone опять такая же ошибка.

Аватара пользователя
ATauenis
Advanced Member
Сообщения: 5527
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

WebOne - прокси для работы старых браузеров в Web 2.0

Сообщение ATauenis » 01.05.2023,10:47

По ссылке почему-то качается ASP.NET Core 6.0 Runtime, с ним и не должно работать. Чего-то Microsoft напутал. Для WebOne надо .NET 6.0 Desktop Runtime: https://dotnet.microsoft.com/en-us/down ... -installer .
Либо можно использовать версию "WebOne.X.Y.Z.win-x86.full.self-contained.zip", она прекрасно запускается на ПК без .NET. Минус - довольно тяжёлая, т.к. содержит 90% от этого дотнета в себе.

Ответить