HTTP Client - cURL Impersonate [HTTP/2, TLS 1.3, BROWSER_PRESETS, WEBSOCKET]

Делитесь модулями
  • v3.0.0:

    Модуль стал условно бесплатным. Активации требует только 1 action - Настройки. Без лицензии будет работать без настроек ( и без поддержки WebSocket)

    Теперь модуль не пишет ни какие сообщения в BAS лог, я отказался от привязки к окну BAS, так как это создает проблемы. Был вылет при запуске скрипта, если он завершался быстро, возможно если был не пустой ресурс. Версия модуля теперь отдается в ответе action Настройки.

    Исправлен баг: user.js пресеты рандомно могли не появиться в списке общих пресетов impersonations BAS .

    • некоторые не особо важные улучшения стабильности.
  • This post is deleted!
  • Топик обновлен.
    v3.0.1:
    Исправлена ошибка:
    [cUrl Impersonate] getsockname() failed with errno 10022: Invalid arguments

  • v3.0.2:

    1. Исправлен вылет в скомпилированном скрипте, а именно при перезапуске (клик по этой кнопке) - если в папке модуля находилась legacy.dll
    2. BAS теперь не вылетает если нет moduledll.dll в папке модуля. Пишет ошибку. (beta):
      [cUrl Impersonate] Module is corrupted. Please verify that moduledll.dll exists in the module directory (it may have been removed by your antivirus).

    V3.0.3:

    1. fix краша в новой версии бас 29.2.0
    2. исправлен баг: в DELETE/PATCH и т.д запросах с телом запроса не добавлялся заголовок content-length, из за чего запрос был ошибочным.

    V3.0.4 (current):

    1. Версия браузера для имитации ( поле ) поддерживает тип expression.
    2. Кастомные настройки теперь принимают только json, как в файле пресетов. + поддержка JS
    3. Установить заголовок ( экшн ) также поддерживает JS через *** #code ***
  • This post is deleted!
  • image.png

  • @Vitalii Исполняемый код модуля зашифрован. Возможны ложные срабатывания антивируса. Если вы переживаете, советую вам написать модуль лично.

  • v3.0.5:

    1. Исправлен вылет в сочетании запросов POST-DELETE + GET.
    2. Исправлена установка заголовков через шаблон, были проблемы с \r\n
    3. Новый функционал: авто url encode, !, !! - префиксы перед url. 2 префикса, - 2 типа: encodeURIComponent(), URLSearchParams.toString() - тоже самое как encodeURIComponent(), только пробелы как + вместо %20
    4. При ошибке теперь сохраняется код ответа, контент и тд( если включено)
    5. POST экшн всегда добавляет заголовок Content-Length, Content-Type может быть пустым, не добавится. Если нужно отправить POST без Content-Length, используйте экшн GET. Это касается всех остальных методов.
    6. Добавлен отдельный checkbox для GET/POST экшенов - Set fail() on error. В настройках такой же checkbox работает глобально для всех экшенов модуля.
    7. Также исправлены экшены "была ли ошибка", "получить текст ошибки"
    8. Новый функционал: Выполнить JS после запроса, в GET/POST экшенах. Воображайте пользу :)
    9. Новый функционал: Сохранение настроек по дефолту для GET/POST экшенов. - checkbox перед кнопкой "OK". Требуется перезапуск BAS. (Beta)
    10. Немного сжал дизайн GET/POST.
    11. Авторизация модуля теперь отдельно от запуска /записи - выполняется при первом вызове экшена "Настройки". Подвисаний не будет.

    V3.0.6:

    1. Новый функционал: Чекбокс для GET/POST экшена - Использовать cookies из памяти. ( для текущего запроса ) если выключено: куки не используются, новые не сохраняются .
    2. Изменен js callback для GET/POST экшена. Теперь их 2 - BeforeRequest, AfterRequest. Это логично.
  • Перезалил. Исправлена ошибка: Can't find variable: INSTALLATION_DIR_ в скомпилированном скрипте.
    опечатка вышла, а в режиме записи себя не проявляла, не заметил.

  • v3.0.7:

    1. Новая технология сохранения состояния по умолчанию всех параметров для всех экшенов модуля. С защитой от перезаписи, например обновой. Настройки сохраняются в папке curlImpersonate\settings\ - не удаляйте это папку при обновлении модуля.
    2. Новая функция: impersonate.wasProxy()
      • Отключайте запросы если не установлены прокси. Подсказка: OnBeforeRequest function + сохранение настроек по дефолту.
    3. Новая логика получения ответа с экшенов get/post. Теперь учитывается: ContentAsJson, ContentNotEmpty - при ошибках и повторах.
    4. Обновлен libcurl-x64.dll - nghttp2 до последний версии.
  • v3.0.8:

    1. Новая галочка: UseProxy в Get/Post
    2. Фикс base64 encoding ответа Get/Post

    v3.0.9:

    1. Новая callback функция для повторов при ошибке, для смены прокси: Функция будет вызываться пока кол-во повторов меньше максимального. Отправка запросов в callback функции запрещена в целях стабильности, остальное можно.
  • v4.0.0:

    1. fix callback фунции при ошибке. ( Requests are not allowed in callback ) Нет запретов на вызовы / сохраняется ответы сервера ДО вызова callback.
    2. Новая опция: Use http/2 (Если сервер поддерживает), если выключено - http1/1
    3. Код кубика "Прокси" перенес в engine.js чтобы не засирал код скрипта. и т.д - куча мелких правок.

    v4.0.1:

    1. fix HEAD
    2. Новая галочка перезаписывать ли куки в экшене "Загрузить куки"
    3. Исправлено: поле Cookies fast update command в "Загрузить куки" может принимать переменную-массив с параметрами.
    4. новая плюшка: При получении Error in the HTTP2 framing layer - повтор запроса внутри модуля (3попытки)

    v4.0.2:

    • Обновлена логика WebSocket:
    1. wsSend больше не возвращает ошибок. Контроль статуса выполняется через wsRecv.

    2. wsRecv: при ошибке требуется заново установить WebSocket-соединение.
      Если WS_FRAME_READY == false, значит за время таймаута данные не были получены, и при необходимости нужно повторно отправить фрейм на сервер. (с соединением все ок)

  • v4.0.3:

    1. "Использовать cookies из памяти" - если выключена то теперь не игнорирует кастомные заголовки cookie.
    2. Функция BeforeRequest в callback принимает переменную с запросом. можно через js выставить параметры, хоть юрл поменять, запретить редиректы и т.д.

    v4.0.4:

    • Возможность установки кастомной ошибки запроса в JS Callback (AfterRequest) - логика повтора запроса будет работать, если настроена.
  • Смастерил локальный веб-сервер, предоставляющий API для выполнения исходящих HTTP-запросов с использованием имперсонации TLS/JA3 отпечатков. Может пригодится кому.
    main.py impersonate_api.exe Документация.md

  • v4.0.5:

    • new curl 8.15.0
    • new impersonate 1.2.5
    1. “Use http/2” в GET/POST изменен на “Use http1/1”
    2. Пресеты:
      -Новый параметр: tls_no_padding
      -Новые параметры httpversion: + support - "2n", "2o" // read _faq.txt
      -Новые параметры ciphers: + support - TLS_EMPTY_RENEGOTIATION_INFO_SCSV

    v4.0.6:

    1. Новый параметр в настройках: Уровень логирования ошибок
    2. Позиция content-type/length имеет приоритет в кастомных заголовках, если есть.
    3. появился/возвращен экшен "Статус ответа"
    4. Префикс [cUrl Impersonate, 4/4] теперь показывает кол-во попыток если он установлен.
    5. все функции объекта impersonate можно вызывать как синхронно, так и асинхронно.
      5.1 Обновлены JS callback Before/AfterRequest новым функционалом.
  • Добрый день, есть возможность свой libcurl.dll использовать в модуле?

  • @Ferdo2 нет, это бессмысленно, смысл названия модуля будет потерян. не понимаю зачем)

  • У меня что с BAS версией libcurl.dll, что с этим не проходит проверка антикапчи на одном сервисе. При этом с этим все работает отлично - https://transfiles.ru/tsmbn . Поэтому и спрашиваю, есть ли возможность замены на свой libcurl

  • @Ferdo2 напиши мне в тг. Скинь демо проект

  • @Ferdo2 said in HTTP Client - cURL Impersonate [HTTP/2, TLS 1.3, BROWSER_PRESETS, WEBSOCKET]:

    что с этим не проходит проверка антикапчи на одном сервисе

    Этот модуль заточен под мобильные/десктоп браузеры. Скорее всего вы его не настроили модуль.