📋 Короткий ответ: Порядок между --hostlist и --payload не важен

Но порядок --payload относительно --lua-desync — важен!


🔍 Как это работает

--hostlist — фильтр профиля

  • Применяется ко всему профилю в целом
  • Проверяется при входе соединения в профиль
  • Позиция внутри профиля не важна

--payload — фильтр для --lua-desync

  • Применяется к последующим --lua-desync функциям
  • Действует до следующего --payload или до конца профиля
  • Порядок относительно --lua-desync важен!

Эквивалентные варианты (все работают одинаково):

# Вариант 1: hostlist первый
--hostlist=list.txt --payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls
 
# Вариант 2: payload первый
--payload=tls_client_hello --hostlist=list.txt --lua-desync=fake:blob=fake_default_tls
 
# Вариант 3: hostlist в конце
--payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls --hostlist=list.txt

Все три варианта работают одинаково!


⚠️ Что ВАЖНО: порядок --payload и --lua-desync

# ✅ ПРАВИЛЬНО: payload ПЕРЕД lua-desync
--payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls
 
# ❌ НЕПРАВИЛЬНО: payload ПОСЛЕ lua-desync (не влияет на эту функцию!)
--lua-desync=fake:blob=fake_default_tls --payload=tls_client_hello

📊 Область действия фильтров

--filter-tcp=80,443                    # Фильтр профиля (весь профиль)
--filter-l7=http,tls                   # Фильтр профиля (весь профиль)
--hostlist=youtube.txt                 # Фильтр профиля (весь профиль)
--payload=http_req                     # Фильтр lua-desync (до следующего --payload)
--lua-desync=fake:blob=fake_default_http  # Применяется фильтр http_req
--lua-desync=multisplit:pos=method+2      # Применяется фильтр http_req
--payload=tls_client_hello             # Новый фильтр (отменяет предыдущий)
--lua-desync=fake:blob=fake_default_tls   # Применяется фильтр tls_client_hello
--new                                  # Конец профиля

💡 Рекомендуемый стиль (для читабельности)

# Сначала фильтры профиля
--filter-tcp=443
--filter-l7=tls
--hostlist=mylist.txt
 
# Потом payload + lua-desync группами
--payload=tls_client_hello
--lua-desync=fake:blob=fake_default_tls:tcp_md5
--lua-desync=multisplit:pos=1,midsld
 
--new

Это не обязательно, но легче читать и поддерживать.


📝 Итог

ПараметрОбласть действияПорядок важен?
--filter-tcp/udpВесь профильНет
--filter-l7Весь профильНет
--hostlistВесь профильНет
--ipsetВесь профильНет
--payloadДо следующего --payloadДа, перед --lua-desync
--out-rangeДо следующего --out-rangeДа, перед --lua-desync
--in-rangeДо следующего --in-rangeДа, перед --lua-desync
--lua-desyncКонкретный вызовДа (последовательность вызовов)