Как понять, когда нужно обновить отпечаток?
-
Как я представляю схему начала работы с ботом:
- Допустим есть какой то сайт с регистрацией.
- Создаем локальный профиль в БАС для нового аккаунта
- Генерируем и применяем отпечаток
- Регистрируемся на сайте с этим аккаунтом и логинимся
- Далее каждый раз на старте треда, загружаем существующий локальный профиль, чтобы не логиниться каждый раз.
Мой вопрос:
Как мне кажется, будет подозрительно, если отпечаток будет статичным долгое время. Поэтому его надо время от времени обновлять. Но генерировать совершенно новый отпечаток тоже ведь подозрительно. В идеале должны меняться только некоторые параметры, типа версии браузера. Как можно достичь такого поведения?
-
@baghead С чего вы взяли что именно не обновляемый браузер в отпечатки будет критически подозрительным для сайта? За этим стоит какая нибудь статистика или может быть исследование?
По поводу того как обновлять браузер в отпечатке, это довольно просто, когда вы получаете отпечаток в переменную, и сохраняете её в текстовый файл в профиль, инфа о версии браузере и о юзер агенте в целом сохраняется в этом файле.
В принципе можно сделать скрипт который будет искать все файлы отпечатков в профилях, далее например с помощью регулярки находить в этих файлах версию браузера и заменять на ту которую вы укажите. Ну и потом когда отпечаток будет прочитан из файла и применён там будет обновлённый браузер.
-
@gr-al-ni Спасибо за ответ.
Нет, статистикой подкрепить не могу. Внес уточнение в свой пост, что это только мое предположение, что сеть ботов, сидящих со старых версий браузеров, и вообще со статичными отпечатками, будет выделяться. Я ошибаюсь?Да примерно такую схему обновления я представлял, но думал может есть более удобное решение, или над таковым ведется работа.
-
@gr-al-ni said in Как понять, когда нужно обновить отпечаток?:
далее например с помощью регулярки находить в этих файлах версию браузера и заменять на ту которую вы укажите.
Отпечаток хранится в json виде, парсить его проще методом JSON.parse(). Да и версия браузера находится в user-agent, который можно поменять через действие "установить заголовок".
@baghead said in Как понять, когда нужно обновить отпечаток?:
будет подозрительно, если отпечаток будет статичным долгое время
А лично вы, как часто меняете конфигурацию своего пк, или операционную систему, да хотя бы сам браузер, или плагины в нём со шрифтами? Отслеживать эти параметры будут скрипты сайта, сомневаюсь, что в защите будет нейронная сеть, которой покажется подозрительным статичный отпечаток за долгое время. А если на сайте именно сложная антибот система, то вычислять ботов будут по поведенческим параметрам, а не отпечатку.
-
@fox
Браузер стараюсь держать всегда последней версии. Но да, наверно я слишком заморачиваюсь.
-
А я задумался сделать скрипток, который бы при открытии в браузере формировал его фингерпринт, но покопавшись сегодня несколько часов в файле jfingerprint.json и сервисах, снимающих отпечаток, понял, что я с трудом понимают, что там происходит.
Может у кого есть какие-то идеи или наработки в этом направлении?
-
@yumilen said in Как понять, когда нужно обновить отпечаток?:
А я задумался сделать скрипток, который бы при открытии в браузере формировал его фингерпринт
А смысл? Есть же уже готовый сервис
-
Ну, как зачем?
Чтобы отпечаток бота был похож на отпечаток используемого браузера, через который также время от времени входишь в те же аккаунты...
-
@yumilen said in Как понять, когда нужно обновить отпечаток?:
Ну, как зачем?
Чтобы отпечаток бота был похож на отпечаток используемого браузера, через который также время от времени входишь в те же аккаунты...По моему будет проще просто сохранить отпечатки для каждого аккаунта. С точки зрения сайта будет не страшно переодически заходить с двух браузеров по очереди. А вот использовать отпечаток один для многих аккаунтов уже черевато, и не важно какой сервис используешь. Или у вас стоит множество браузеров каждый для своего аккаунта?
-
@Fox said in Как понять, когда нужно обновить отпечаток?:
Отпечаток хранится в json виде, парсить его проще методом JSON.parse(). Да и версия браузера находится в user-agent, который можно поменять через действие "установить заголовок".
Помогите пожалуйста разобраться с парсингом отпечатка.
Читаю содержимое отпечатка из профиля в переменную, затем выполняю следующее:[[FILE_CONTENT]] = JSON.parse([[FILE_CONTENT]]); [[FILE_CONTENT]] = [[FILE_CONTENT]].filter(element => {element.indexOf("User-Agent") >=0});
Выдает ошибку ещё на этапе конвертирования json в обьект.
-
@Daniel Отпечаток храниться в профиле и загружается из него автоматически. При загрузке профиля вы можете выбрать опцию "Всегда загружать отпечаток из профиля". Если вам всё же приспичило получить отпечаток именно в переменную, то, насколько я помню, после загрузки профиля отпечаток храниться в специальной переменной, к которой можно обратиться через действие "Выполнить код". Надо только слазить в код скрипта и посмотреть, как эта переменная называется. А вообще, странный какой-то тренд пошёл на задавание вопросов в топиках, которым уже по несколько лет
-
@DoctorKrolic said in Как понять, когда нужно обновить отпечаток?:
А вообще, странный какой-то тренд пошёл на задавание вопросов в топиках, которым уже по несколько лет
В данном топике я нашел частичный ответ на мой вопрос, потому продолжил его.
@DoctorKrolic said in Как понять, когда нужно обновить отпечаток?:
Если вам всё же приспичило получить отпечаток именно в переменную
Я проверяю версию браузера, который сохранен в профиле и если он устаревший, то обновляю его.
Сам отпечаток успешно читаю в переменную из файла fingerprint.json, проблема потом найти в нем нужное.
-
@Daniel Если вы читаете
fingerprint.json
, то отпечаток можно получить следующим образом:[[FINGERPRINT]] = JSON.parse([[FILE_CONTENT]]).fingerprint;
Если вам нужен user-agent, то:
[[USER_AGENT]] = JSON.parse([[FINGERPRINT]]).ua
На вашем месте я бы получил список тегов из отпечатка (они там тоже сохраняются), чтобы по ним получить новый, дабы на целевом сайте не происходило перекоса статистики посещений в сторону тех или иных браузеров:
[[TAGS]] = JSON.parse([[FINGERPRINT]]).tags
Данный код вернёт список, его нужно будет склеить в строку, разделённую запятыми, чтобы эту строку использовать в качестве тегов. Для этого есть действие в модуле "Строка", не помню, правда, как оно называется
-
@DoctorKrolic
Огромное спасибо за такой подробный ответ. Получил даже больше информации, чем спрашивал.
Все, что Вы написали работает и я уже успешно это применил у себя.