Платная помощь! FM/BAS - плохо

Moved Заказать скрипт
  • FM плохой? Я создал идеальный инструмент в BAS, но учетные записи блокируются в FM/BAS. Мультилогин работает.

    Нужна помощь!

  • @00ch8 said in Платная помощь! FM/BAS - плохо:

    FM плохой? Я создал идеальный инструмент в BAS, но учетные записи блокируются в FM/BAS. Мультилогин работает.

    Нужна помощь!

    С каким вебсайтом работаешь? Используешь ли мобильные отпечатки в BAS или только настольные компьютеры, как и в Multilogin?

  • @sergerdn said in Платная помощь! FM/BAS - плохо:

    @00ch8 said in Платная помощь! FM/BAS - плохо:

    FM плохой? Я создал идеальный инструмент в BAS, но учетные записи блокируются в FM/BAS. Мультилогин работает.

    Нужна помощь!

    С каким вебсайтом работаешь? Используешь ли мобильные отпечатки в BAS или только настольные компьютеры, как и в Multilogin?

    Это лишние вопросы..

    Последний апдейт по браузеру был 14 февраля 2022 в версии 24.7.1, с тех пор прошло больше года и ничего существенного исправлено не было, отсюда и низкий результат.

  • @FastSpace said in Платная помощь! FM/BAS - плохо:

    Это лишние вопросы..

    Не согласен, так как я может быть знаю конкретный ресурс, о котором идет речь и, может быть знаю, его подводные камни. Про мобильные отпечатки я спросил, потому что я всегда считаю очень плохой идеей их использовать в BAS. Это мое личное отношение, основанное на моем личном опыте.

    @FastSpace said in Платная помощь! FM/BAS - плохо:

    Последний апдейт по браузеру был 14 февраля 2022 в версии 24.7.1, с тех пор прошло больше года и ничего существенного исправлено не было, отсюда и низкий результат.

    Не уверен, что дело ровно в этом, так как всегда есть шанс, что плохому танцору сам знаешь что мешает. Вероятно, если есть какие-то ошибки в BAS, их можно на своей стороне снизить их влияние.

    С другой стороны да, пора уже и обновить встроенный браузер в BAS, в любом случае совсем уж старый он.

  • @sergerdn причём тут танцор, там заголовки неправильные уходят даже :) это такая основа что жесть

  • @FastSpace said in Платная помощь! FM/BAS - плохо:

    @sergerdn причём тут танцор, там заголовки неправильные уходят даже :) это такая основа что жесть

    Дай, пожалуйста, один конкретный пример конкретного заголовка. Какой есть заголовок, какой должен быть и при какой конкретной ситуации все должно происходить.

  • @FastSpace это не проблема движка, эта проблема в том что они в Фингер криво кладутся.

  • @sergerdn said in Платная помощь! FM/BAS - плохо:

    @FastSpace said in Платная помощь! FM/BAS - плохо:

    @sergerdn причём тут танцор, там заголовки неправильные уходят даже :) это такая основа что жесть

    Дай, пожалуйста, один конкретный пример конкретного заголовка. Какой есть заголовок, какой должен быть и при какой конкретной ситуации все должно происходить.

    Вот пожалуйста.
    Заголовок RTT (что это такое гуглим), браузер сам адекватно подстраивает этот заголовок под твоё интернет соединение, а BAS нет, он забирает то что удалось взялось у юзера, не учитывая специфики что твоё прокси не равно интернет соединению юзера. Плюс для всех сайтов этот заголовок одинаковен... xD

  • @FastSpace кстати интересная штука, я вот тоже думал, влияют ли данные с отпечатка на скорость соединения, или просто данные.
    Ну то есть данные в отпечатки 3g и будем ползти на три Джи? Жалуется у меня периодически знакомый, мол через бас ползет прокси, а через мульти логин отлично та же прокся работает...

  • @FastSpace said in Платная помощь! FM/BAS - плохо:

    @sergerdn said in Платная помощь! FM/BAS - плохо:

    @FastSpace said in Платная помощь! FM/BAS - плохо:

    @sergerdn причём тут танцор, там заголовки неправильные уходят даже :) это такая основа что жесть

    Дай, пожалуйста, один конкретный пример конкретного заголовка. Какой есть заголовок, какой должен быть и при какой конкретной ситуации все должно происходить.

    Вот пожалуйста.
    Заголовок RTT (что это такое гуглим), браузер сам адекватно подстраивает этот заголовок под твоё интернет соединение, а BAS нет, он забирает то что удалось взялось у юзера, не учитывая специфики что твоё прокси не равно интернет соединению юзера. Плюс для всех сайтов этот заголовок одинаковен... xD

    Дай конкретную инструкцию. Например, я должен открыть конкретный сайт, обновить страницу, попить кофе, обновить страницу опять и увидеть конкретный заголовок или конкретные варианты заголовка.

  • @Bigma said in Платная помощь! FM/BAS - плохо:

    @FastSpace кстати интересная штука, я вот тоже думал, влияют ли данные с отпечатка на скорость соединения, или просто данные.
    Ну то есть данные в отпечатки 3g и будем ползти на три Джи? Жалуется у меня периодически знакомый, мол через бас ползет прокси, а через мульти логин отлично та же прокся работает...

    Думаю нет, в бас за проксирование отвечает своё решение.
    У меня тоже прокси в BAS хуже работает, даже того же дильфина, но в BAS шас выручает квик, протокол топчик. В дильфине его нет

    Дай конкретную инструкцию. Например, я должен открыть конкретный сайт, обновить страницу, попить кофе, обновить страницу опять и увидеть конкретный заголовок или конкретные варианты заголовка.

    Зачем? Что это изменит?
    Десктоп в BAS ничем не лучше мобилы, если у одного сотня утечек, у другого поменьше раза в 2 это не меняет общую ситуацию ни коим образом

  • @FastSpace я почему подумал, в инструментах разработчика можно ограничить скорость соединения поставив 3g, главное, чтоб бас не делал тоже самое 😁 надо как то это проверить. Поймать отпечаток с 3g и замерить скорость без прокси и сравнить с обычным хромом...

    Screen Shot 2023-03-09 at 20.37.14.png

    Screen Shot 2023-03-09 at 20.39.14.png

  • @Bigma said in Платная помощь! FM/BAS - плохо:

    @FastSpace я почему подумал, в инструментах разработчика можно ограничить скорость соединения поставив 3g, главное, чтоб бас не делал тоже самое 😁 надо как то это проверить. Поймать отпечаток с 3g и замерить скорость без прокси и сравнить с обычным хромом...

    Знаю я про эту фичу, то что ты видишь там на сайтах детекторах это всего лишь вывеска - заглушка, врятли хромимум у BAS вмешивается в работу прокси (за прокси отвечает своё решение) таким образом, хотя проверить стоит.

  • @FastSpace это не прокси, это механизм задержки соединения, ну как то так.

  • @Bigma said in Платная помощь! FM/BAS - плохо:

    @FastSpace это не прокси, это механизм задержки соединения, ну как то так.

    Я знаю, если самому эти настройки выставить, то прокси будет работать с той скоростью которую ты указал, а если просто параметр из отпечатка, то врятли

  • @FastSpace said in Платная помощь! FM/BAS - плохо:

    Зачем? Что это изменит?

    Наверное, потому что тебя попросили. Так как ты не дал подробных инструкций, я додумал логику.

    Это третий скрипт, который я написал в жизни на javascript и puppeteer, что может говорить, что некоторые вещи могут быть не сложными, даже для не очень опытных кодеров. Времени у меня ушло на исследование вопроса и написание скрипта меньше часа.

    Можно реализовать установку любых заголовков в любое время. Вероятно, можно реализовать подобное и в BAS. Но надо знать его очень хорошо, а у меня его ограниченное знание.

    Вероятно, в скрипте могут быть ошибки, так как у меня ограниченный опыт с javascript.

    Иногда все таки дело в танцоре, а не инструменте.

    screenshot.png

    /*
    This code sets up a Puppeteer browser instance with a specific profile directory and fingerprint.
    It then launches a new page and intercepts the requests made by that page, modifying specified headers if they exist.
    It navigates to a URL and takes a screenshot of the full page before closing the browser.
     */
    
    require("dotenv").config();
    const {plugin} = require("puppeteer-with-fingerprints");
    const fs = require("fs").promises;
    const path = require("path");
    
    async function interceptRequests(page, headers) {
        // Enable request interception for the given page
        await page.setRequestInterception(true);
    
        // Listen for incoming requests on the page
        page.on("request", iRequest => {
            // Get the headers of the incoming request
            const requestHeaders = iRequest.headers();
            let headerIntercepted = false;
    
            // Check if any of the specified headers are present in the request headers
            for (const [headerName, headerValue] of Object.entries(headers)) {
                if (requestHeaders[headerName]) {
                    // If a header is present, modify its value and log the change
                    console.log(`Header intercepted from "${headerName}: ${requestHeaders[headerName]}" to "${headerName}: ${headerValue}" for URL: ${iRequest.url()}`);
                    requestHeaders[headerName] = headerValue;
                    headerIntercepted = true;
                }
            }
    
            // Continue the request with the modified headers if any headers were intercepted
            if (headerIntercepted) {
                iRequest.continue({headers: requestHeaders});
            } else {
                iRequest.continue();
            }
        });
    }
    
    
    async function runAll(profileDirectory, fpKey) {
        // Check if the profile directory exists, and create it if it doesn't
        try {
            await fs.access(profileDirectory);
        } catch {
            await fs.mkdir(profileDirectory, {recursive: false});
        }
    
        // Check if the fingerprint file already exists:
        const fingerprintFilePath = path.join(profileDirectory, "fingerprint.json");
        let fingerprint;
        if (await fs.access(fingerprintFilePath).then(() => true).catch(() => false)) {
            // Read the fingerprint from the file:
            const fingerprintData = await fs.readFile(fingerprintFilePath, "utf-8");
            fingerprint = JSON.parse(fingerprintData);
        } else {
            // Fetch a fingerprint from the server:
            fingerprint = await plugin.fetch(fpKey, {
                tags: ["Microsoft Windows", "Chrome"],
                minBrowserVersion: "110"
            });
    
            // Write the fingerprint to a file in the profile directory:
            await fs.writeFile(fingerprintFilePath, JSON.stringify(fingerprint));
        }
    
        // Apply fingerprint:
        plugin.useFingerprint(fingerprint);
    
        // Launch a new browser instance with the specified profile directory:
        const browser = await plugin.launch({
            args: [`--user-data-dir=${profileDirectory}`], headless: false,
        });
    
        // Create a new page in the browser:
        const page = await browser.newPage();
    
        // Intercept requests and modify the headers if present:
        await interceptRequests(page, {
            "downlink": "downlink_any_value",
            "rrt": "rrt_any_value",
            "device-memory": "device-memory_any_value"
        });
    
        // Navigate to the specified URL:
        await page.goto("https://browserleaks.com/client-hints");
    
        // Wait for the page to finish loading:
        page.waitForNavigation()
            .then(() => {
                // Do something after the navigation is successful
            })
            .catch(() => {
                // Handle navigation error
            });
    
        // Take a screenshot of the page:
        await page.screenshot({path: path.join(path.dirname(__filename), "screenshot.png"), fullPage: true});
    
        // Close the browser:
        await browser.close();
    }
    
    // Run the function with the specified profile directory and fingerprint key:
    (async () => {
        const profileDirectory = path.join(path.dirname(__filename), ".profile-http-headers");
        const fpKey = process.env.FINGERPRINT_KEY ?? "";
        console.log(`running with profile: ${profileDirectory}`);
        await runAll(profileDirectory, fpKey);
    })();
    

    Logs:

    $ node example_http_headers.js        
                                                                                                                                                                                          
    running with profile: D:\Projects\WebStorm\others\puppeteer-with-fingerprints_test1\.profile-http-headers 
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/client-hints 
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/client-hints 
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/css/style.css?v=57762431 
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/css/style.css?v=57762431    
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/js/jquery.min.js?v=33792034               
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/js/jquery.min.js?v=33792034
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/js/default.js?v=57762431
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/js/default.js?v=57762431
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/js/client-hints.js?v=57762431
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/js/client-hints.js?v=57762431
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/img/logo_hand.svg?v=33792034
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/img/logo_hand.svg?v=33792034
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/img/logo.png?v=33792034
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/img/logo.png?v=33792034
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/client-hints/iframe
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/client-hints/iframe
    Header intercepted from "downlink: 10" to "downlink: downlink_any_value" for URL: https://browserleaks.com/manifest.json?v=33792034
    Header intercepted from "device-memory: 8" to "device-memory: device-memory_any_value" for URL: https://browserleaks.com/manifest.json?v=33792034
    

    package.json:

    {
      "name": "puppeteer-with-fingerprints_test1",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "dotenv": "^16.0.3",
        "puppeteer": "^19.7.3",
        "puppeteer-with-fingerprints": "github:CheshireCaat/puppeteer-with-fingerprints"
      },
      "devDependencies": {
        "eslint": "^8.35.0"
      }
    }
    
  • @sergerdn мощный костыль ты конечно накидал, но можно проще опять же :) То, про что Фаст говорил, скорее всего относится к стандартным заголовкам, которые можно посмотреть например в инструментах разработчика - и оппа сюрприз, для хрома - они будут отличаться от бассовских - но надо прям очень внимательно сравнивать. И все это хозяйство можно изменить другим способом.