@FastSpace said in У кого как с регистрацией Google?:
Когда ты регаешь гугл через BAS. Гугл знает о тебе всё.
"Ничего он ни о ком не знает, если нужным образом готовить BAS" (с)
Про ошибку с потоками в Node.js и global читал. К счастью пока функций у меня не много и в случае чего переписать на "global" не составит труда. Пока главный вопрос: где хранить cookie потоков. Пока нацелился на глобальные переменные.
Если есть решения получше CycleTSL + Node.js. Буду рад выслушать и попытаться доработать. В ином случае продолжу текущую реализацию.
Еще очень интересно услышать про "libcurl-impersonate-win" и параметры, которые мне не удалось передать.
@SecDeveloper Кстати если нода по какой-то причине упадет по таймауту, может даже в чужом модуле или коде , то все куки слетят как и все другие состояния.
@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 делал ранее себе такой модуль но
@SecDeveloper я собирал и некоторый другой перечить решений, могу дать линк на пост
@Q_Q, был бы благодарен. Интересно посмотреть.
А пока что я пытаюсь понять, как управлять dll в BAS и подглядываю синтаксис C++. Явно не мой стек. Мб все-таки получится сделать чистое решение все с тем же многострадальным libcurl-impersonate, судя по тому, что решение с нодой ну не самое элегантное. Ноду я могу и сейчас успешно использовать, но собирать это в модуль для пользователей = разрабатывать костыль. Еще и в ноде костылить в глобал), а там после и все падать у пользователей может...
Так как любые состояния в Node.js ненадежны (могут слететь от действий пользователей в Node.js и от неожиданных ошибок в модуле), я принял решение не публиковать модуль. Проведенные тесты и сохранение состояний в глобальные переменные Node.js/файлы/переменные BAS меня не устраивают. Явно не подходит для стабильного массового использования. Это заранее полукостыль в реалиях BAS, хоть и по скорости производительный.
Кому это необходимо, можно с пониманием реализовать это самому в личных скриптах или, как уже упоминалось, использовать curl-impersonate с небольшими проблемами с производительностью (из-за нагрузки при запуске cmd).
Буду использовать, могу помочь в реализации
@SecDeveloper в общем-то сделать такие же экшены http клиента как в басе, где под капотом команды через libcurl-impersonate будут, не вижу проблемы. Не смотрел исходник баса, но думаю там тоже самое все - обычная обвязка над курлом также через отправку команд. Так что не особо то и костыль выходит.
Я тоже собирал его по той же ссылке на гитхабе. Закинул его вместо дефолтного басовского, никаких косяков вроде нету. Я, правда, не запускал его отдельно через консоль, пока не было необходимости ja3 где-то подменять...
@thepappo said in Нужен ли такой модуль? (Кратко: запросы с подменой TLS (JA3)):
Не смотрел исходник баса, но думаю там тоже самое все - обычная обвязка над курлом также через отправку команд. Так что не особо то и костыль выходит.
там libcurl, а просто curl.exe который будет жрать ресурсы в многопотоке и возможны другие баги.
скачал архив https://github.com/depler/curl-impersonate-win/releases, скоприровал libcurl.dll по пути \Roaming\BrowserAutomationStudio\apps\25.3.8 ( с бекапом ;d ) и кароче работает, оригинальный клиент), сайт ozon.ru с клаудом проходит с кодом 200 сразу.
@Int64, это, конечно, хорошо, но попробуйте теперь сменить отпечаток на другие известные сигнатуры. Некоторые из параметров нет возможности редактировать. Как только стандартный отпечаток libcurl-impersonate попадет в спам базы, то придется подставлять другие. Было бы очень неприятно с этим столкнуться, когда отпечаток использует множество пользователей в скриптах на продажу.
Как решение - коверкать этот стандартный отпечаток на непонятно что, но это как в канвас добавлять шум, т.е. не самое лучшее решение.
P.s. Хоть сейчас и пропускает неизвестные отпечатки, в ближайшем будущем это может измениться. И полагаться на костыль можно, но, я думаю, не так надежно, как например с Node.js с отпечатками реальных браузеров. Именно поэтому я и задавал вопрос на GitHub в репозитории Curl-impersonate насчет изменения некоторых параметров. В стандартной обертке BAS просто нет некоторых функций, которые их меняют. Сейчас редко занимаюсь скриптами и не думаю, что когда-нибудь снова буду погружаться в эту тему.
P.s.s. А модуль в таком виде какой есть публиковать нет смысла, потому что там просто простыня кода, которая понятна в основном мне. Пример на GitHub выглядит намного лучше.