Кажется, не работает или что-то не так делаю?
Запускаю с --tlsrec 3+sni
, https://www.fontanka.ru выдает ошибку сертификата
Запускаю с --split 2 --disorder 7
, https://www.fontanka.ru открывается без ошибок
Запускаю с --tlsrec 3+sni --auto=t,r,c,s,a --split 2 --disorder 7
https://www.fontanka.ru выдает ошибку сертификата. т.е. --auto=t,r,c,s,a
не срабатывает?
–split 2 --disorder 7 --auto=t,r,c,s,a -T 1 --tlsrec 3+sni https://www.fontanka.ru
Но --auto=t,r,c,s,a не всегда определяет, что сайт не открывается, --tlsrec 3+sni уже ломает сайт и продолжать на --split 2 --disorder 7 уже нет смысла.
Обратную бы логику добавить
-H, --hosts
Чтобы не применять определенную группу для определенных доменов, которые могут ломаться в ней.
Пока думаю, поднять несколько процессов на разных портах и заруливать нужное, но так больше телодвижений.
Конфилктовать не должны процессы на одном юните?
Equal. There shouldn’t be a flag there at all, thanks.
Можно же поменять порядок групп. --hosts ignore.txt --auto=none --tlsrec 1
Зачем ? Можно создать сколько угодно txt и в них сайты, каждый с разной фильтрацией - это кстати еще один огромный плюс данного приложения
Извиняюсь затупил… Действительно, усложнил в голове себе, очевидно же просто то что не работает, отдельным списком в начало и подбирать нужный метод.
я так понимаю вся неопределеность возникает на torst, все остальные тригеры, гарантированно дают результат 1\0 для продвижения дальше
torst : Вышло время ожидания или сервер сбросил подключение после первого запроса
redirect: HTTP Redirect с Location, домен которого не совпадает с исходящим
cl_err : HTTP ответ, код которого равен 40x, но не 429
sid_inv : session_id в TLS ServerHello и ClientHello не совпадают
alert : TLS Error Alert в ответе
Мне кажется все же имеет смысл делать исключение, чтобы пропустить конкретную группу одному домену, когда работает сотня других проходя через эту последовательность групп.
Без такой возможности потребуется указать все домены к конкретной группе. А чтобы через нее прогнать неизвестный домен, потребуется ее еще раз в каком-то месте указать, это раздует строку запуска.
Как минимум лишним для гибкости не будет.
-T указанный глобально в первичной группе влияет на --auto=torst в остальных?
Кто нибудь покажите пару примеров для опции --fake-data
А пробовали стандартный использовать и методом подбора проверить, как правильно указать его для этого параметра:
GET / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Возможно его можно целиком подделать в таком формате…
Возможно в hex надо.
Спойлер
К примеру в запрете есть такой файлик:
zapret/files/fake/http_iana_org.bin at master · bol-van/zapret · GitHub
и пачка других в raw. Можно через wireshark дернуть, вот пример.
1.bin (285 байтов)
Спасибо. Может знаете, вот такую ошибку FF “NS_ERROR_NET_INTERRUPT” как-нибудь обработать в buydpi можно?
В общем, выяснилось, что с --fake
ciadpi.exe падает лишь на 7-ке. На win10 все ОК.
upd На 7-ке не падает, если использовать --conn-ip
. Но при этом --fake
все равно не работает как на 10-ке, сайты не грузятся.
send_fake()
seems to be broken on android x86 7.1 (kernel 4.9.194), the second TCP packets with relative sequence number 1 is filled with the same data as the first one, although send_fake()
works on alpine linux 3.2 (kernel 3.18). confusing.
All android images I tested and results:
version | result |
---|---|
android x86 7.1, with kernel 4.9.194 | fail |
android x86 7.1, with kernel 4.19.175 | success |
android 10, with kernel 4.14.116, HONOR 9X | success |
13 GSI, with kernel 5.10.66-android12-9-00001-g83cbf18b7dcd-ab8546841 | success |
I tried another implementation, but no such luck.
//unix is "golang.org/x/sys/unix"
type MagicResult struct {
ReadFD int
WriteFD int
Length int64
}
func MagicWrite(fd int, buf []byte) (MagicResult, error) {
result := MagicResult{
ReadFD: -1,
WriteFD: -1,
Length: 0,
}
var pipeBuf [2]int
err := unix.Pipe2(pipeBuf[:], unix.O_NONBLOCK)
if err != nil {
return result, err
}
defer func() {
if err != nil {
unix.Close(pipeBuf[1])
unix.Close(pipeBuf[0])
}
}()
result.ReadFD = pipeBuf[0]
result.WriteFD = pipeBuf[1]
iov := [1]unix.Iovec{{
Base: &buf[0],
Len: uint64(len(buf)),
}}
t1, err := unix.Vmsplice(result.WriteFD, iov[:], unix.SPLICE_F_NONBLOCK)
result.Length=int64(t1)
if err != nil {
return result, err
}
result.Length, err = unix.Splice(result.ReadFD, nil, fd, nil, len(buf), unix.SPLICE_F_NONBLOCK)
return result, err
}
А есть ли у byedpi аналог такого параметра у zapret?
--dpi-desync-split-seqovl=<int>
использовать sequence overlap перед первым отсылаемым оригинальным tcp сегментом
--fake
на 7-ке работать не будет, TransmitFile поддерживается с Windows 8.1.
Нет.
Сhecked, also broken on Android 8.1 (Linux 4.4.9).
Понятно, спасибо!
вроде выше писали про работу IPv6
есть
ciadpi.exe -f -1 --hosts :googlevideo.com --auto=n -d 3 --port 9000
хотел проверить работу yt-dlp как через IPv6 так и без. но он (yt-dlp) при --force-ipv6 не работает через любые прокси что пробовал (socks5/http)
через ByeDPI == --conn-ip 192.168 или --conn-ip 2a00: работает
но у меня провайдер выдает IPv6 каждый раз разные
есть ли планы или уже какая то опция ?
- для указания --ipv4 --ipv6 без бинда на конкретный адрес ?
- пытаться подключится по IPv6 и если он не работает то переключатся на IPv4 ?
Dhcp Основной 2d10h1m20s 1d10h1m20s 2a00:62c0: ::2
Временный Основной 2d23h57m3s 9h54m28s 2a00:62c0: :e808
Публичный Основной 2d23h57m3s 1d23h57m3s 2a00:62c0: :aa29
p.s. не знаю баг не баг. не показывает ИП сервера. только :443
–debug 1 + IPv6
new conn: fd=412, addr=:443
host: www.youtube.com (127)
new conn: fd=436, addr=:443
host: manifest.googlevideo.com (127)
new conn: fd=428, addr=2a00:1450:400f:1::6:443
host: rr1---sn-5goeenez.googlevideo.com (127)
new conn: fd=332, addr=:443
host: redirector.googlevideo.com (220)