Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3))

Moved Other
  • @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    Недостатки использование CycleTLS:

    А ещё он не все сигнатуры умеет менять, но это вроде лучшее что есть в паблике

  • @UserTrue, добавлю в недостатки, но дотошно не знаю. Полагаю, некоторые версии Firefox не способен подделывать из-за вечно всплывающего "GREASE" от Google Chrome.

  • Дело доброе дело хорошее, уже много раз поднимали этот вопрос. Я за .

  • @SecDeveloper он не все расширения ssl поддерживает, точно не поддерживает 41, и есть ещё другие проблемы там есть в issue.

  • @SecDeveloper BAS нужен любой шас модуль. Острый дефицит модулей ....

  • @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    "global.cookieStore[номер_потока]", но хотелось бы избежать глобальные переменные (пока в раздумьях).

    В реалиях бас это нормально, более того если не использовать глобал для хранения своих функций, то при более чем 255 потоках если не ошибаюсь, нода в бас будет падать по таймауту даже при попытке вывести простой лог. Потому лично я костылю синглтоны в глобал... Раньше спасло то что модули в ноде кэшируются, но потом разработчик зачем добавил удаление кэша и пришлось городить костыли с глобал.

  • Про ошибку с потоками в Node.js и global читал. К счастью пока функций у меня не много и в случае чего переписать на "global" не составит труда. Пока главный вопрос: где хранить cookie потоков. Пока нацелился на глобальные переменные.

    Если есть решения получше CycleTSL + Node.js. Буду рад выслушать и попытаться доработать. В ином случае продолжу текущую реализацию.

    Еще очень интересно услышать про "libcurl-impersonate-win" и параметры, которые мне не удалось передать.

  • @SecDeveloper Кстати если нода по какой-то причине упадет по таймауту, может даже в чужом модуле или коде , то все куки слетят как и все другие состояния.

  • @UserTrue, это да)) все переменные же в ноде. Но неужели она так часто отлетает?
    Как дикий костыль - хранить cookie в файлах?

  • @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    @UserTrue, это да)) все переменные же в ноде. Но неужели она так часто отлетает?

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

  • @UserTrue, Как правило, cookie сохраняют в конце скрипта. Если в коде пользователя появляется ошибка, то в таком случае он и с обычным HTTP-клиентом не сохранит cookie.

    Насчет других состояний (конфиг и настройки). В текущей реализации для каждого запроса создается копия дефолтных настроек и только потом изменяется. Я пока не реализовал глобальную установку конфига и настроек для потока (возомжно, Вы говорите об их сбросе?). Большинство действий обернуто в

    try{ ... } catch (e)
    

    И целенаправленно положить ноду будет ну очень сложно. А то что при дотошных манипуляциях с настройками 1 потока можно положить все сразу - это понятно. Мне нужно как сумашедшему обрабатывать любые возможные неккоректные значения. Но возможно я неправильно понял?

  • @UserTrue said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    "global.cookieStore[номер_потока]", но хотелось бы избежать глобальные переменные (пока в раздумьях).

    В реалиях бас это нормально, более того если не использовать глобал для хранения своих функций, то при более чем 255 потоках если не ошибаюсь, нода в бас будет падать по таймауту даже при попытке вывести простой лог. Потому лично я костылю синглтоны в глобал... Раньше спасло то что модули в ноде кэшируются, но потом разработчик зачем добавил удаление кэша и пришлось городить костыли с глобал.

    Получается в Node.js переменные и функции экспортированные через "module.exports" и подключаемые через "require" в многопотоке создают собственные копии и нагружают память этой кучей? Я правильно понимаю?

  • @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    @UserTrue, Как правило, cookie сохраняют в конце скрипта. Если в коде пользователя появляется ошибка, то в таком случае он и с обычным HTTP-клиентом не сохранит cookie.

    Речь не только сохранение в файл, но и их наличии в процессе работы. В любой момент после падения процесса ноды их может не стать.

    @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    И целенаправленно положить ноду будет ну очень сложно. А то что при дотошных манипуляциях с настройками 1 потока можно положить все сразу - это понятно. Мне нужно как сумашедшему обрабатывать любые возможные неккоректные значения. Но возможно я неправильно понял?

    Процесс ноды общий для всего клиентского кода, его использует не только ваш модуль. И если он упадет в чужом модуле или коде то у вас все тоже улетит. А ещё в режиме записи достаточно просто открыть экшен ноды и процесс насколько я понимаю перезапускается. В общем вы не можете полагаться на его постоянство

  • @SecDeveloper said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):

    Получается в Node.js переменные и функции экспортированные через "module.exports" и подключаемые через "require" в многопотоке создают собственные копии и нагружают память этой кучей? Я правильно понимаю?

    Вроде бы нет, но по какой-то магической причине через глобал работает и 500 потоков, а без него максимум 255 или около того. Я не изучал причину этого

  • @SecDeveloper делал ранее себе такой модуль но

    1. cycletls юзает голанг, либо уже компиленый го файл
    2. как уже было отмечено, нужно и саму либу допилить, добавить multipart, фиксануть мелочи с подделкой ja3
  • @SecDeveloper я собирал и некоторый другой перечить решений, могу дать линк на пост

  • @Q_Q, был бы благодарен. Интересно посмотреть.
    А пока что я пытаюсь понять, как управлять dll в BAS и подглядываю синтаксис C++. Явно не мой стек. Мб все-таки получится сделать чистое решение все с тем же многострадальным libcurl-impersonate, судя по тому, что решение с нодой ну не самое элегантное. Ноду я могу и сейчас успешно использовать, но собирать это в модуль для пользователей = разрабатывать костыль. Еще и в ноде костылить в глобал), а там после и все падать у пользователей может...

  • Так как любые состояния в Node.js ненадежны (могут слететь от действий пользователей в Node.js и от неожиданных ошибок в модуле), я принял решение не публиковать модуль. Проведенные тесты и сохранение состояний в глобальные переменные Node.js/файлы/переменные BAS меня не устраивают. Явно не подходит для стабильного массового использования. Это заранее полукостыль в реалиях BAS, хоть и по скорости производительный.

    Кому это необходимо, можно с пониманием реализовать это самому в личных скриптах или, как уже упоминалось, использовать curl-impersonate с небольшими проблемами с производительностью (из-за нагрузки при запуске cmd).


    Приношу извинения тем, кто "возможно" ждал модуль (если такие вообще были).

  • Автору респект за подобные труды

  • 100% да