Реальная версия браузера с всеми мини патчами теперь в бранд находиться
Pixelscan определяет "Automation framework detected" и истинное разрешение экрана
-
Приветствую,
Использую FingerprintSwitcher для эмуляции мобильных устройств.
Pixelscan проверка не проходит, т.к. он определяет что используется среда для автоматизации, а так же истинное значение разрешения монитора в графе "Screen Resolution".
Возможно из-за этого у меня проблемы с другими сервисами в которых я планировал использовать BAS.
Есть ли способы решения проверки в Pixelscan?


-
@JohnnySins said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
Использую FingerprintSwitcher для эмуляции мобильных устройств.
В версии Chromium 129 BAS есть баг, связанный с малым разрешением экрана отпечатка(в том числе мобильные). Может быть это оно, я писал на форуме об этом с описанием как это можно исправить.
==>Клац <==
-
@sergerdn ага спасибо. Помогло. Осталось разобраться, почему Pixelscan палит автоматизацию.
Набросал такой код для node.js
const puppeteer = require('puppeteer-core'); console.log("WEBSOCKET_DEBUGGER_URL: " + [[WEBSOCKET_DEBUGGERURL]]); console.log("WIDTH:" + [[BROWSER_WIDTH]]); console.log("HEIGHT:" + [[BROWSER_HEIGHT]]); const browser = await puppeteer.connect({ browserWSEndpoint: [[WEBSOCKET_DEBUGGERURL]] }); let page = await getActivePage(browser, 30000); await page.setViewport({ width: [[BROWSER_WIDTH]], height: [[BROWSER_HEIGHT]], deviceScaleFactor: 1, }); await page.goto("https://pixelscan.net/"); browser.disconnect(); async function getActivePage(browser, timeout) { var start = new Date().getTime(); while(new Date().getTime() - start < timeout) { var pages = await browser.pages(); var arr = []; for (const p of pages) { if(await p.evaluate(() => { return document.visibilityState == 'visible' })) { arr.push(p); } } if(arr.length == 1) return arr[0]; } throw "Unable to get active page"; } -
Так... кажется, решилась проблема и с обнаружением "Automation framework detected".

-
@JohnnySins в общем, путем тестов сумел определить, что pixelscan выдает "Automation framework detected" когда в скрипте для скана отпечатка Fingerprint Scanner значение screenMediaQuery=false. Непосредственно же код отпечатка находится здесь, а код отвечающий за определение screenMediaQuery вот:
screenMediaQuery: () => { return window.matchMedia('(min-width: ' + (window.innerWidth - 1) + 'px)').matches; },На этом сайте используется этот самый сканер отпечатка, который показывает


Вообще, какой-то бред... в моем случае, чтобы
window.matchMedia('(min-width: ' + (window.innerWidth - 1) + 'px)').matchesвыдало значениеtrueнужно чтобыwindow.innerWidthбыл344. У меня же оно равняется значению488, которое я установил черезpuppeteer.page.setViewport.Кто-нибудь сталкивался с подобным?
-
@JohnnySins Тебе зачем нужно это исправить?
Если так переживаешь, что палят браузер, вот ознакомься https://community.bablosoft.com/topic/29230/некоторые-огрехи-в-эмуляции-andoroid
Не стоит сильно заморачиваться. Там такого более чем в 1000 мест, где браузер неправильно работает. -
@FastSpace said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
Тебе зачем нужно это исправить?

-
@JohnnySins Я к тому что, одной утечкой больше/меньше. Пофигу, когда их там более 1000.
-
@FastSpace какие твои предложения? Я весь во внимании.
-
@JohnnySins said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
@FastSpace какие твои предложения? Я весь во внимании.
Эмуль + VPN + ЯБ
-
@FastSpace said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
Эмуль + VPN + ЯБ
что еще за ЯБ ?
-
@JohnnySins said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
что еще за ЯБ ?
Антифрод-система "Ядро Яблока". Система, которая проверяет данные настолько тщательно, что мошенники даже не добираются до кожуры!(шутка).
Или другой вариант:
Антифрод-система "Ядро Яблока": если у вас есть червяк, мы его точно найдем!
-
@sergerdn твой код подтолкнул меня на мысль, что встроенный в BAS метод "Получить разрешение и положение курсора" выдает какую-то дичь, особенно после Применения отпечатка, а ведь именно его я использовал, для получения значения разрешения экрана.
В общем, сотворил такой вот костыль, который на удивление работает:


Полагаю, что проблема в BAS, который криво изменяет параметры viewport'а когда исполняет метод "Применить отпечаток".
-
@JohnnySins said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
@sergerdn твой код подтолкнул меня на мысль, что встроенный в BAS метод "Получить разрешение и положение курсора" выдает какую-то дичь, особенно после Применения отпечатка, а ведь именно его я использовал, для получения значения разрешения экрана.
Да, это обсуждалось в топике, где я описывал баг. Также я давал сайт и постил скриншот с него, где можно увидеть нужные параметры разрешения экрана, чтобы понять что происходит.
Вероятно, ты пропустил детали и пошел по не совсем по правильному пути.
-
@sergerdn в общем, есть трабла. Т.к. page.setViewport применяет изменения только для текущей активной вкладки. Для новых вкладок, например, тех что открываются при клике по ссылкам с атрибутом target="_blank" сей магия скрипта пропадает.
Есть ли какие-нибудь способы в BAS запретить открытие новых вкладок? Ну т.е. игнорировать атрибут target="_blank". Насколько знаю BAS юзает какой-то пропатченный Chromium.
PS. В CEF (Chromium Embedded Framework) такая штука делается довольно просто в событии OnBeforePopup в котором перехватывается URL и далее просто вызывается на главном фрейме(вкладке).
public class CustomLifeSpanHandler : ILifeSpanHandler { // Load new URL (when clicking a link with target=_blank) in the same frame public bool OnBeforePopup(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser) { browser.MainFrame.LoadUrl(targetUrl); newBrowser = null; return true; } public bool DoClose(IWebBrowser chromiumWebBrowser, IBrowser browser) { // throw new NotImplementedException(); return true; } public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser) { // throw new NotImplementedException(); } public void OnBeforeClose(IWebBrowser chromiumWebBrowser, IBrowser browser) { // throw new NotImplementedException(); } } -
M Moderator moved this topic from Поддержка on
-
UPD: Пока что сделал так, запихнув все это в "Выполнять при каждой загрузке страницы"
((window, open) => { window.open = (url) => { open.call(window, url, '_self'); }; })(window, window.open); -
@JohnnySins Знаете ли вы adbtc.top?
Когда я использую этот веб-сайт и нажимаю «Реклама», открывается новая страница, но веб-сайт не знает, что у меня открыта эта вкладка.
Знаете ли вы, как это исправить?
Я попробовал несколько способов, но они не сработали.
Благодарить. -
@JohnnySins good research mate
-
@JohnnySins said in Pixelscan определяет "Automation framework detected" и истинное разрешение экрана:
@sergerdn в общем, есть трабла. Т.к. page.setViewport применяет изменения только для текущей активной вкладки. Для новых вкладок, например, тех что открываются при клике по ссылкам с атрибутом target="_blank" сей магия скрипта пропадает.
Да, я знаю. Я надеюсь, что это баг все таки будет исправлен на стороне BAS и что-то патчить нужда пропадет.