Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

first connection thru http / https #56

Open
james007blond opened this issue Aug 9, 2024 · 13 comments
Open

first connection thru http / https #56

james007blond opened this issue Aug 9, 2024 · 13 comments

Comments

@james007blond
Copy link

Может я кривосмотрящий, но тогда с легкостью можно закрыть данный реквест.

Если браузере или smarttube указать socks 5 и ... ничего не делать, просто вбив или попробовав указать youtube.com, то сначала оба лезут по умолчанию на 80, а не на 443 и получается следующее

new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=5
new event: fd: 5, evt: EV_REQUEST, mod_iter: 107
new event: fd: 5, evt: EV_REQUEST, mod_iter: 107
new conn: fd=6, addr=64.233.165.198:80
new event: fd: 6, evt: EV_CONNECT, mod_iter: 109
new event: fd: 5, evt: EV_DESYNC, mod_iter: 107
desync params index: 0
host: www.youtube.com (22)
modify HTTP: n=313
split: pos=0-3 (3), m: DESYNC_SPLIT
split: pos=3-312 (309), m: DESYNC_FAKE
send: pos=312-313

new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=15
new event: fd: 15, evt: EV_REQUEST, mod_iter: 112
new event: fd: 15, evt: EV_REQUEST, mod_iter: 112
new conn: fd=16, addr=173.194.221.198:443
new event: fd: 16, evt: EV_CONNECT, mod_iter: 114
new event: fd: 15, evt: EV_DESYNC, mod_iter: 112
desync params index: 0
host: www.youtube.com (92)
split: pos=0-3 (3), m: DESYNC_SPLIT
split: pos=3-176 (173), m: DESYNC_FAKE
send: pos=176-177

Но стоит ручками указать https:// .... и тут же пошло все по трубам ютюба )))


host: www.youtube.com (92)
split: pos=0-3 (3), m: DESYNC_SPLIT
split: pos=3-176 (173), m: DESYNC_FAKE
send: pos=176-177
new event: fd: 7, evt: EV_DESYNC, mod_iter: 159
close: fds=7,8
new event: fd: 5, evt: EV_DESYNC, mod_iter: 107
close: fds=5,6
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=5
new event: fd: 5, evt: EV_REQUEST, mod_iter: 172
new event: fd: 5, evt: EV_REQUEST, mod_iter: 172
new conn: fd=6, addr=64.233.165.93:443
new event: fd: 6, evt: EV_CONNECT, mod_iter: 174
new event: fd: 5, evt: EV_DESYNC, mod_iter: 172
desync params index: 0
host: youtube.com (101)
split: pos=0-3 (3), m: DESYNC_SPLIT
split: pos=3-516 (513), m: DESYNC_FAKE
send: pos=516-517
new event: fd: 6, evt: EV_PRE_TUNNEL, mod_iter: 174
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 174
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 172
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 172
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 174
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 172
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 174
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 174
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 174
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 174
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 172
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=7
new event: fd: 7, evt: EV_REQUEST, mod_iter: 188
new event: fd: 7, evt: EV_REQUEST, mod_iter: 188
new conn: fd=8, addr=64.233.165.198:443
new event: fd: 8, evt: EV_CONNECT, mod_iter: 190
new event: fd: 7, evt: EV_DESYNC, mod_iter: 188
desync params index: 0
host: www.youtube.com (101)
split: pos=0-3 (3), m: DESYNC_SPLIT
split: pos=3-621 (618), m: DESYNC_FAKE
send: pos=621-622
new event: fd: 8, evt: EV_PRE_TUNNEL, mod_iter: 190
new event: fd: 7, evt: EV_TUNNEL, mod_iter: 188
new event: fd: 7, evt: EV_TUNNEL, mod_iter: 188
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 190
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 190

Есть ли какая либо возможность подставлять изменять автоматом приходящие http на https в самом бинарнике, а не руками потому, что в браузере да, не развалюсь, но вот тот же smarttube заставить делать иначе не получается, а такое у самой прокси похоже потому, что при http - > new conn: fd=6, addr=64.233.165.198:80 ... и отсюда, похоже, редирект на new conn: fd=16, addr=173.194.221.198:443 .... а в таком случае у многих, кто не далек от темы "не будет работать"

@hufrea
Copy link
Owner

hufrea commented Aug 9, 2024

Есть ли какая либо возможность подставлять изменять автоматом приходящие http на https в самом бинарнике

Нету.

@james007blond
Copy link
Author

Нету.

Плохо, но это же возможно реализовать? Ведь так?
Если не сложно, ткни носом в исходники где именно проходит проверка заголовка.
Согласно логике - есть же возможность проверять из файла список этих url's на сответствие - я о директиве "hosts" и потом уже

host: www.youtube.com (92)
new conn: fd=7, addr=74.125.131.198:80
new conn: fd=8, addr=173.194.221.198:443

@ProMix0
Copy link

ProMix0 commented Aug 10, 2024

изменять автоматом приходящие http на https

Браузер ожидает работу по протоколу http. Если по пути протокол изменится на https, ничего хорошего не произойдёт

К тому же youtube при подключении по http редиректит подключение на https, что у вас и происходит в первом логе

Что именно не так?

@james007blond
Copy link
Author

james007blond commented Aug 10, 2024

Что именно не так?

Логика хождения пакетов в достаточной степени мне понятна чтобы делать логические умозаключения )
Задача такова для базовой настройки

/opt/byedpi/ciadpi -p 1081 --proto=http,udp,tls --hosts /hosts.dpi --disorder 3 --auto=none --debug 2

1) Веб браузер + socks5 (https only disabled)
2) SmartTube + socks5

И поясняю, что мне не нравится

  1. Идем на злополучный http://www.youtube.com/ а в логах ciadpi видим следующее
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=5
new event: fd: 5, evt: EV_REQUEST, mod_iter: 6
new event: fd: 5, evt: EV_REQUEST, mod_iter: 6
new conn: fd=6, addr=108.177.14.198:80
new event: fd: 6, evt: EV_CONNECT, mod_iter: 8
new event: fd: 5, evt: EV_DESYNC, mod_iter: 6
desync params index: 0
host: www.youtube.com (22)
split: pos=0-3 (3), m: DESYNC_DISORDER
send: pos=3-313
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=7
new event: fd: 7, evt: EV_REQUEST, mod_iter: 11
new event: fd: 7, evt: EV_REQUEST, mod_iter: 11
new conn: fd=8, addr=142.250.150.198:443
new event: fd: 8, evt: EV_CONNECT, mod_iter: 13
new event: fd: 7, evt: EV_DESYNC, mod_iter: 11
close: fds=7,8

И для пояснения между accept: fd=5,6 и accept: fd=7 ожидание редиректа от 108.177.14.198:80 около 20 секунд и да дальше хост редиректит на 142.250.150.198:443 ... те пакет то для браузера с редиректом приходит, только ciadpi не сообщает браузеру об этом никак и он, браузер так и висит в мучительном ожидании. Т.е - сама ciadpi , предположительно, этот момент некорректно отрабатывает или чето-то по настройкам не монимаю и этот моент как то можно обойти, но разраб ответом выше же сказал, что нет такой возможности )

Я почему просто так "настаиваю", smarttube, иного просто не знаю, единственное приложение с наличием вкладки настроек proxy без root и дополнительных приложений, требующих этот самый root и, самое забавное, при встроеном тесте в smarttube, после указания настроек proxy, ciadpi отрабатывает корректно

host:  www.youtube.com (92)
send: pos=0-176
new event: fd: 8, evt: EV_PRE_TUNNEL, mod_iter: 1092
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 1092
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 1088
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 1092
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 1088
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 1092
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 1092
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 1092
new event: fd: 8, evt: EV_TUNNEL, mod_iter: 1092
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 1088
recv: Connection reset by peer
close: fds=6,8

Но, в этом случае идет прямая указка при отправке пакетов на https, но дальше )))) Дальше старые песни о главном....ни видео ни корректно отрабатываемых соединений. Те, получается, что ciadpi работает только и исключительно с браузером и то только при явном указании (use https only)

@krlvm
Copy link

krlvm commented Aug 10, 2024

Браузер ожидает работу по протоколу http. Если по пути протокол изменится на https, ничего хорошего не произойдёт

Есть такой вариант - при получении HTTP-запроса не давать ему дальнейший ход, а отправлять на клиент редирект на HTTPS

@ProMix0
Copy link

ProMix0 commented Aug 10, 2024

те пакет то для браузера с редиректом приходит

Подампил я из интереса трафик, воспроизвёл ситуацию - и нет, ответ не приходит. Сервер не отвечает на фрагментированный http GET. И виноват в этом disorder, так как со split сервер отвечает

Иными словами, в вашем случае может помочь замена на split

единственное приложение с наличием вкладки настроек proxy без root и дополнительных приложений, требующих этот самый root

image
?

Или вам нужно именно отдельное приложение для youtube'а? Если да, то поделитесь, зачем, если не секрет?

@james007blond
Copy link
Author

Или вам нужно именно отдельное приложение для youtube'а? Если да, то поделитесь, зачем, если не секрет?
Сложная конфигурация сети - все просто. Как и всегда - одним можно(нужно) смотреть, а другие должны работать + отдельное приложение на Android TV. Когда я говорил про root и proxy имел ввиду именно андроид.

Благодарю за тыканье носом ) Смена split немного уличшила ситуацию и теберь в браузере - да, все редиректиться должным образом, но ... smarttube даже начал что то прожевывать, но ...

new event: fd: 6, evt: EV_TUNNEL, mod_iter: 3
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 3
send: 6864 != 16384 (fd: 5)
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
pollout (fd=5)
send: 1688 != 16384 (fd: 5)
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
pollout (fd=5)
send: 936 != 16384 (fd: 5)
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
pollout (fd=5)
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 3
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 3

@ProMix0
Copy link

ProMix0 commented Aug 10, 2024

Судя по коду, подобные ситуации должны нормально обрабатываться. Как это проявляется для конечного пользователя?

Вообще вы можете попробовать снять дамп до bydpi и после, он может что-нибудь прояснить

@james007blond
Copy link
Author

james007blond commented Aug 10, 2024

Вообще вы можете попробовать снять дамп до bydpi и после, он может что-нибудь прояснить

We don’t support that file type. <- по этому аттач лог )
dockerhost.log

192.168.0.1 это android tv + smarttube за пределами хоста с docker
172.18.0.1 это docker docker

Просто tcpdump'ом логнул

@ProMix0
Copy link

ProMix0 commented Aug 10, 2024

Просто tcpdump'ом логнул

Жестоко конечно. Опция -w всегда предпочтительнее

Пока могу сказать только то, что в дампе я так и не нашёл фрагментации пакетов (скорее я не нашёл, нежели её нет, но не факт), и подозрительно большое количество некорректных чексумм (что может быть косяком tcpdump)

Ну и таки вы на самый интересный вопрос не ответили - как это проявляется у пользователя?

@james007blond
Copy link
Author

и подозрительно большое количество некорректных чексумм

Это потому, что сам docker на linux машине крутится, а в нее прокинут физический сетевой адаптер из основной системы и некогда мне было на тестовой машине gro offload на адаптере крутить, но это ни на что не влияет, те до применяемого DPI со стороны провайдера эта машина эти же функции исправно выполняла.

Ну и таки вы на самый интересный вопрос не ответили - как это проявляется у пользователя?

А у пользователя в браузере все исправно работает, а при использовании smarttube нет видео и ролики загружаются фрагментарно, не воспроизводятся, могут подгрузиться и тишина или подргужаются, и на буфферизации снова ресетятся при этом в логах bydpi это все сопровождается изрядным количеством нижеуказанных ошибок.

send: 2864 != 4096 (fd: 5)
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
pollout (fd=5)
send: 1688 != 4096 (fd: 5)
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
pollout (fd=5)
send: 936 != 4096 (fd: 5)
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
pollout (fd=5)
new event: fd: 6, evt: EV_TUNNEL, mod_iter: 3

При этом, ограничение длинны пакета в самой bydpi до, как в текущем примере, 4096 байт ни на что не влияют

@hufrea
Copy link
Owner

hufrea commented Aug 13, 2024

send: 2864 != 4096 (fd: 5)

Буфер сокета заполнен, это может значить, что клиент/сервер медленно читают данные или есть проблемы с сетью, ничего критичного.

А у пользователя в браузере все исправно работает, а при использовании smarttube нет видео и ролики загружаются

Это может быть связано с борьбой Google со сторонними загрузчиками.

@EvgenKo423
Copy link

Может я кривосмотрящий, но тогда с легкостью можно закрыть данный реквест.

Если браузере или smarttube указать socks 5 и ... ничего не делать, просто вбив или попробовав указать youtube.com, то сначала оба лезут по умолчанию на 80, а не на 443

Не знаю насчёт smarttube, но в случае с браузером это Гугл рукожоп...
В прошлых версиях браузера при вводе адреса Хром по умолчанию использовал HTTPS. Потом они добавили настройку "Всегда использовать безопасные соединения" (которая по умолчанию выключена) и с какой-то версии он стал использовать HTTP.
Т.е. мы продвигаем использование HTTPS, но при этом по умолчанию будем использовать HTTP, копец идиоты... Меня тоже этот косяк дико бесит...

В случае с браузером решение заключается в том, чтобы включить настройку "Всегда использовать безопасные соединения" в chrome://settings/security.
Но тогда могут не работать некоторые сайты, которые HTTPS не поддерживают или даже редиректят на HTTP!! (видел такое чудо), а Хром обратно на HTTPS... Например, OSzone.net, автор которого вроде далеко не дурак, но почему-то на HTTPS хостит свой блог, а форум OSzone.net на HTTP...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants