dovecoteescapee / ByeDPIAndroid

App to bypass censorship on Android
https://ntc.party/c/community-software/byedpi
GNU General Public License v3.0
3k stars 130 forks source link

Различается поведение с консольной версией #83

Open vladiscripts opened 3 months ago

vladiscripts commented 3 months ago

Describe the bug / Описание ошибки

Не открывается https://flibusta.is. Тогда как с приложением заработали rutracker и др. сайты, банящиеся по DPI.

На ПК с Linux и установленным ByeDPI flibusta.is открывается с опцией "disorder", запускаю: ciadpi --disorder 1.

Приложение как-то переназначает дефолтные настройки ByeDPI?

DNS не влияет. На ПК работает с дефолтным DNS провайдера. Не помогает смена DNS на 8.8.8.

To Reproduce / Как воспроизвести

Expected behavior / Ожидаемое поведение

Сайт должен грузиться.

Screenshots / Скриншоты

08-12 05:16:54.249  2011  2011 I MainActivity: Updating status: Halted, VPN
08-12 05:16:54.283  2011  2011 I InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
08-12 05:16:54.859  2011  2011 I ServiceManager: Starting VPN
08-12 05:16:54.869  2011  2011 I ByeDpiVpnService: Starting
08-12 05:16:54.873  2011  2011 I ByeDpiVpnService: Starting proxy
08-12 05:16:54.891  2011  2011 I ByeDpiVpnService: Proxy started
08-12 05:16:54.891  2011  2011 I ByeDpiVpnService: Starting tun2socks
08-12 05:16:55.045  2011  2011 I ByeDpiVpnService: Tun2Socks started
08-12 05:16:55.045  2011  2313 I GoLog   : time="2024-08-12T02:16:55Z" level=info msg="[STACK] fd://86 <-> socks5://127.0.0.1:1080"
08-12 05:16:55.084  2011  2011 I MainActivity: Updating status: Running, VPN
08-12 05:16:55.085  2011  2011 I MainActivity: Updating status: Running, VPN
08-12 05:16:55.304  2011  2066 I GoLog   : time="2024-08-12T02:16:55Z" level=info msg="[UDP] 10.10.10.10:28607 <-> 8.8.8.8:53"
08-12 05:16:55.346  2011  2313 I GoLog   : time="2024-08-12T02:16:55Z" level=info msg="[TCP] 10.10.10.10:46357 <-> 142.250.150.188:5228"
08-12 05:16:55.346  2011  2053 E proxy   : tcpi_notsent_bytes not provided
08-12 05:16:56.271  2011  2313 I GoLog   : time="2024-08-12T02:16:56Z" level=info msg="[UDP] 10.10.10.10:14936 <-> 8.8.8.8:53"
08-12 05:16:56.313  2011  2314 I GoLog   : time="2024-08-12T02:16:56Z" level=info msg="[TCP] 10.10.10.10:57534 <-> 95.163.52.23:443"
08-12 05:16:59.075  2011  2313 I GoLog   : time="2024-08-12T02:16:59Z" level=info msg="[UDP] 10.10.10.10:11506 <-> 8.8.8.8:53"
08-12 05:16:59.081  2011  2067 I GoLog   : time="2024-08-12T02:16:59Z" level=info msg="[UDP] 10.10.10.10:13566 <-> 8.8.8.8:53"
08-12 05:16:59.113  2011  2313 I GoLog   : time="2024-08-12T02:16:59Z" level=info msg="[TCP] 10.10.10.10:47381 <-> 8.8.8.8:443"
08-12 05:16:59.389  2011  2312 I GoLog   : time="2024-08-12T02:16:59Z" level=info msg="[TCP] 10.10.10.10:32981 <-> 64.233.162.99:443"
08-12 05:17:00.062  2011  2067 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[TCP] 10.10.10.10:32971 <-> 179.43.150.83:80"
08-12 05:17:00.143  2011  2078 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[UDP] 10.10.10.10:15682 <-> 8.8.8.8:53"
08-12 05:17:00.147  2011  2067 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[UDP] 10.10.10.10:31976 <-> 8.8.8.8:53"
08-12 05:17:00.186  2011  2070 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[TCP] 10.10.10.10:32973 <-> 179.43.150.83:80"
08-12 05:17:00.207  2011  2067 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[UDP] 10.10.10.10:44666 <-> 8.8.8.8:443"
08-12 05:17:00.229  2011  2070 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[TCP] 10.10.10.10:47392 <-> 8.8.8.8:443"
08-12 05:17:00.262  2011  2070 I GoLog   : time="2024-08-12T02:17:00Z" level=info msg="[UDP] 10.10.10.10:39779 <-> 142.250.150.190:443"
08-12 05:17:00.289  2011  2053 I chatty  : uid=10326(u0_a326) DefaultDispatch identical 2 lines
08-12 05:17:04.561  2011  2011 I MainActivity: Updating status: Running, VPN
08-12 05:17:04.614  2011  2011 I InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus

Environment / Окружение

Smartphone / Смартфон:

Additional context / Дополнительная информация

Ростелеком

Before you submit / Прежде чем отправить

vladiscripts commented 3 months ago

Лог запуска ByeDPI на ПК с заходом на сайт ciadpi --disorder 1 --debug 1:

new conn: fd=12, addr=179.43.150.83:443
host: flibusta.is (197)
split: pos=0-1 (1), m: DESYNC_DISORDER
send: pos=1-2024

Не знаю как в этом приложении сделать лог соединений.

zimbabwe303 commented 3 months ago

Тоже заметил, что поведение на Android кардинально отличается от поведения на Linux, при использовании той же самой строки параметров, даже в режиме proxy. Ещё оно очень сильно зависит от конкретного приложения: в одних не работает практически ничего (например в Firefox для Android, даже если настроить прокси в about:config), в других практически всё работает (например в Privacy Browser или Monocles при указании напрямую socks5://127.0.0.1:1080 в настройках), но всё же не при тех же самых параметрах, что на Linux.

dovecoteescapee commented 3 months ago

В целом, в зависимости от устройства одни и те же параметры могут иметь разную эффективность, потому в идеале сравнивать с ByeDPI запущенным на Android (например, в Termux или плагин для Nekobox). Однако, в приложении могут быть ошибки при разборе аргументов. Если обнаружите ещё различия поведения, сообщите конфигурацию и домен, чтобы я мог отловить ошибку

zimbabwe303 commented 3 months ago

Прежде всего, не ясно, почему есть существенная разница между VPN и Proxy режимом. В частности, в VPN режиме, при использовании Privacy Browser или Monocles, даже при такой простой строке параметров, как просто --split 1, попытка зайти на YouTube всегда заканчивается net::ERR_CONNECTION_RESET, однако в Proxy режиме заходит прекрасно и с более сложной строкой --disorder 1 --auto --fake -1 --tlsrec 1+s (т.е. как в Linux). В то же время, в VPN режиме, в Firefox или Mull --split 1 работает нормально, как и более сложный --split 1 --auto --fake 1 --tlsrec 1+s, однако замена --split 1 на --disorder 1 уже всё ломает, а замена --fake 1 на --fake -1 ломает частично (например, не даёт загрузиться некоторым картинкам на YouTube).

dovecoteescapee commented 3 months ago

Прежде всего, не ясно, почему есть существенная разница между VPN и Proxy режимом

Оба режима запускают один и тот же прокси (в VPN режиме вы тоже можете к нему подключиться другими клиентами). Различия вызваны разными реализациями прокси-клиентов.

Зависимость поведения от браузера тоже вполне нормальна. Эффективность методов может меняться от того, такие именно пакеты будут отправляться.

zimbabwe303 commented 3 months ago

Спасибо, понятно. Интересно, а существует ли техническая возможность для разных приложений автоматически использовать разные наборы параметров? Или хотя бы сделать какой-то быстрый переключатель рresets (не помню как это обычно назвают по-русски, шаблоны что-ли). Потому, что, как выходит, нет одного универсального набора параметров для всех приложений, при одном и том же методе DPI у провайдера.

dovecoteescapee commented 3 months ago

Интересно, а существует ли техническая возможность для разных приложений автоматически использовать разные наборы параметров?

Я не уверен, можно ли такое реализовать без рута

Или хотя бы сделать какой-то быстрый переключатель рresets

32

ropucyka commented 3 months ago

Хорошо что различное поведение отмечено как баг, а не как фича.

vladiscripts commented 3 months ago

в приложении могут быть ошибки при разборе аргументов. Если обнаружите ещё различия поведения, сообщите конфигурацию и домен, чтобы я мог отловить ошибку

Различия вызваны разными реализациями прокси-клиентов.

Возможно ли добавить логирование соединений? Чтобы понять в какой конфигурации приложение коннектится к сайтам. Без этого понимания невозмножна коррекция настройки.

Как вариант: если приложение вызывает ByeDPI, то добавлять к параметрам вызова опцию --debug 1, логируя ее вывод. Если это возможно.

dovecoteescapee commented 3 months ago

Возможно ли добавить логирование соединений?

Добавлю

Stepman123 commented 3 months ago

Просветите пожалуйста по поводу прокси режима. ByeDPI автоматически перенаправляет весь трафик на свой сокс5 или требуется отдельная программа для этого? Я пробовал в паре с ProxyDroid и без него, но ничего не работает.

dovecoteescapee commented 3 months ago

@Stepman123 Требуется отдельная прокси клиент.

Я пробовал в паре с ProxyDroid и без него, но ничего не работает.

Каким именно образом не работает? ProxyDroid на том же устройстве? Добавили ли вы ByeDPI в исключения в ProxyDroid?

Stepman123 commented 3 months ago

Каким именно образом не работает? ProxyDroid на том же устройстве? Добавили ли вы ByeDPI в исключения в ProxyDroid?

Не работает интернет в браузере, и приложениях. Даже заначек подключения WiFi переходит в состояние "без доступа к интернету" если его переподключить после запуска ProxyDroid c ByeDPI.

ProxyDroid на том же устройстве.

В исключения не добавил. Там эта опция вызавает падение ProxyDroid (программа очень древняя) по этому используется для всех программ.

Не знаю, что можно ипользовать для замены ProxyDroid?

ropucyka commented 3 months ago

Не знаю, что можно ипользовать для замены ProxyDroid?

Вообще-то Nekobox. У меня не получилось чтобы эта пара заработала.

dovecoteescapee commented 3 months ago

Не знаю, что можно ипользовать для замены ProxyDroid?

Любой клиент, поддерживающий split tunneling. Например, AdGuard, инструкция в Readme

Stepman123 commented 3 months ago

Вообще-то Nekobox. У меня не получилось чтобы эта пара заработала.

По моему это локальный прокси/VPN а надо программу которая приложения направляет на прокси.

dovecoteescapee commented 3 months ago

@Stepman123 Если вы хотите продолжить обсуждать эту тему, пожалуйста, переместитесь в раздел дискуссий