Файловый менеджер

scripts//prodvigenie_04_2026

/scripts//prodvigenie_04_2026
На уровень выше

12.php

<?php

$xhe_host = "127.0.0.1:7011";
// init
require("C:/Human Emulator Studio/Templates/init.php");
require_once("functions.php");
require_once("config.php");
$browser->close_all_tabs();
    // Чтение запросов из файла
$wordArray = file('text.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!empty($wordArray)) {
    $random_string = $wordArray[array_rand($wordArray)];
    echo $random_string;
} else {
    die("File is empty or could not be read.");
}

// Разбиваем строку по запятой
$words = explode(',', $random_string);
$findtext = trim($words[0]);
$sinonim = trim($words[1]);

$browser->navigate("https://yandex.ru/search/?lr=225");
$textarea->get_by_attribute("class","HeaderForm-Input mini-suggest__input beauty-scroll")->focus();
usleep(10000);
$keyboard->input($sinonim,10);
usleep(10000);
$keyboard->key(13);
usleep(10000);
  // Плавная прокрутка вместо резких PageDown/End
    for ($scrollStep = 0; $scrollStep < 8; $scrollStep++) {
        $keyboard->key(34); // Next (мягкая прокрутка)
        usleep(50000); // 50ms между шагами
    }
usleep(2000);
$textarea->get_by_attribute("class","HeaderForm-Input mini-suggest__input beauty-scroll")->focus();
$textarea->set_value_by_number(0, "");
sleep(2);
$keyboard->input($findtext,10);
$keyboard->key(13);
usleep(10000);
// Копировать активное окно.
$mouse->click_to_screen(554, 823); // копировать  активное окно    
usleep(1000);
$mouse->move_on_screen(554, 803);
sleep(2);
$pattern = extractDomainPattern();

// Сбор результатов
$sites = $webpage->get_body_inter_prefix_all($y_start, $y_end, true);
$sites = explode("<br>", $sites);

$full = [];
foreach ($sites as $site) {
    if (preg_match($pattern, $site, $matches)) {
        $full[] = removePrefixes(strtolower($matches[0]));
    }
}
$no_open = preg_split("/[\s,]+/", $no_site);
$final_result = array_values(array_unique(array_diff($full, $no_open)));

print_r($final_result);

$b->click_by_inner_text($final_result[0], false);
sleep(2);
$browser->wait( -1);
sleep(2);
$browser->close();
sleep(2);
$b->click_by_inner_text($final_result[1], false);
sleep(2);
$browser->wait( -1);
sleep(2);
$browser->close();
sleep(2);
if (in_array($pr_s, $full)) {
    echo "Функция нашла значение {$pr_s}<br>";
        $b->set_focus_by_inner_text($pr_s, false);sleep(2);
     $wy = $browser->get_vertical_scroll_pos() + 220;
   $browser->set_vertical_scroll_pos($wy);
    sleep(1);
 

}
$b->click_by_inner_text($pr_s, false);
$browser->set_wait_params(10, 2);

//+=================
// ------------------ ШАГ 1: Открыть сайт $prs  ------------------
$currentUrl = $webpage->get_url();
echo "Шаг 1: Открываем сайт ...\n";
echo "Сайт загружен. Текущий URL: " . $currentUrl . "\n\n";
       
          // Домен открытого сайта
$prs =   $webpage->get_domain($currentUrl);
// ------------------ ШАГ 2: Открыть 3 внутренние ссылки по 30 сек ------------------
echo "Шаг 2: Открываем 4 внутренние ссылки...\n";

// Получаем количество ссылок на сайте, содержащих "   $prs "
$links = $anchor->get_all_internal_inner_texts_and_hrefs(   $prs , false);
$links = explode("<br>", $links);

// Функция для преобразования массива в строки вида "ссылка|текст"
function convertArrayToLines($array) {
    $result = [];
    $count = count($array);
    
    // Проверяем, что массив содержит пары
    if ($count % 2 != 0) {
        echo "Предупреждение: Массив содержит нечетное количество элементов\n";
    }
    
    // Проходим по массиву парами (ссылка, текст)
    for ($i = 0; $i < $count - 1; $i += 2) {
        $link = trim($array[$i]);
        $text = isset($array[$i + 1]) ? trim($array[$i + 1]) : '';
        
        // Создаем строку только если текст не пустой и ссылка не пустая
        if (!empty($text) && !empty($link)) {
            $result[] = $link . '|' . $text;
        }
    }
    
    return $result;
}

// Создаем новый массив из строк
$newArray = convertArrayToLines($links);

// ------------------ УДАЛЕНИЕ ДУБЛИКАТОВ ------------------
echo "=== Удаление дубликатов ===\n";
$uniqueArray = array_unique($newArray);
$duplicatesCount = count($newArray) - count($uniqueArray);
echo "Найдено дубликатов: " . $duplicatesCount . "\n";
// ------------------ УДАЛЕНИЕ ТЕКУЩЕГО URL ИЗ МАССИВА ------------------
echo "=== Удаление текущего URL из списка ссылок ===\n";

echo "Текущий URL: " . $currentUrl . "\n";

$newArray = array_filter($newArray, function($item) use ($currentUrl) {
    $parts = explode('|', $item, 2);
    $link = $parts[0];
    // Удаляем ссылку, если она совпадает с текущим URL
    return $link !== $currentUrl;
});

// Переиндексация массива
$newArray = array_values($newArray);
echo "Удалена ссылка с текущим URL. Осталось ссылок: " . count($newArray) . "\n";
$newArray = array_values($uniqueArray); // Переиндексация массива

// ------------------ ПРОВЕРКА ДОМЕНОВ И ДОБАВЛЕНИЕ $prs  ------------------
echo "=== Проверка доменов ===\n";
$processedArray = [];
foreach ($newArray as $item) {
    // Разбиваем строку на ссылку и текст
    $parts = explode('|', $item, 2);
    $link = $parts[0];
    $text = isset($parts[1]) ? $parts[1] : '';
    
    // Проверяем домен
    echo "Получаем домен для ссылки: " . $link . " -> ";
    $domen_link = $webpage->get_domain($link);
    echo $domen_link . "\n";
    
    // Если домен пустой или ссылка начинается с /, добавляем $prs 
    if (empty($domen_link) || strpos($link, '/') === 0) {
        $oldLink = $link;
        // Добавляем https://$prs , если ссылка начинается с / или относительная
        if (strpos($link, '/') === 0) {
            $link = "https://".$prs  . $link;
        } elseif (strpos($link, 'http') !== 0) {
            $link = "https://".$prs ."/" . $link;
        }
        echo "  Исправлена ссылка: " . $oldLink . " -> " . $link . "\n";
    }
    
    // Добавляем обработанную ссылку в новый массив
    $processedArray[] = $link . '|' . $text;
}

$newArray = $processedArray;

// ------------------ ФИЛЬТРАЦИЯ: ТОЛЬКО ВНУТРЕННИЕ ССЫЛКИ ------------------
echo "=== Фильтрация: оставляем только ссылки ipgroup.by ===\n";
$filteredArray = array_filter($newArray, function($item) use ($prs) {
    $parts = explode('|', $item, 2);
    $link = $parts[0];
    return strpos($link, $prs) !== false;
});
$filteredCount = count($newArray) - count($filteredArray);
echo "Удалено внешних ссылок: " . $filteredCount . "\n";
$newArray = array_values($filteredArray);

// ------------------ ВЫВОД РЕЗУЛЬТАТА ------------------
echo "\n=== Итоговый список ссылок (всего: " . count($newArray) . ") ===\n";
foreach ($newArray as $index => $line) {
    $parts = explode('|', $line, 2);
    echo ($index + 1) . ". Ссылка: " . $parts[0] . "\n";
    echo "   Текст: " . (isset($parts[1]) ? $parts[1] : '') . "\n";
}

$linksOpened = 0;
$maxLinks = min(7, count($newArray)); // Открываем не более 3 ссылок

if ($maxLinks == 0) {
    echo "ОШИБКА: Не найдено ни одной внутренней ссылки для открытия!\n";
} else {
    // Открываем ссылки
    for ($i = 3; $i < $maxLinks; $i++) {
        // Разбиваем строку на ссылку и текст
        $parts = explode('|', $newArray[$i], 2);
        $link = $parts[0];
        $text = isset($parts[1]) ? $parts[1] : '';
        
        echo "\n--- Обработка ссылки " . ($i + 1) . " из " . $maxLinks . " ---\n";
        echo "Ссылка: " . $link . "\n";
        echo "Текст: " . $text . "\n";
        
        try {
            // Открываем новую вкладку
            $tabId = $browser->add_tab();
            echo "Открыта новая вкладка: " . $tabId . "\n";
            
            // Переходим по ссылке
            $browser->navigate($link);
            $browser->set_wait_params(10, 2);
            
            // Проверяем, загрузилась ли страница
            $currentUrl = $webpage->get_url();
            echo "Страница загружена. Текущий URL: " . $currentUrl . "\n";
            
            if (strpos($currentUrl, $prs ) === false) {
                echo "ПРЕДУПРЕЖДЕНИЕ: Страница загружена, но URL не содержит". $prs." \n";
            }
            
            echo "Ожидание 5 секунд...\n";
         $randomNumber = rand(33, 34);
 $randomNumber; // 33, 34 или 35
            sleep(2);
for ($dn = 0; $dn < 2; $dn++) {
$browser->set_vertical_scroll_pos($browser->get_vertical_scroll_pos() + 800);
    usleep(100000); // Задержка между кликами
}
$browser->set_vertical_scroll_pos($browser->get_vertical_scroll_pos() + 800);
            sleep(1);
$browser->set_vertical_scroll_pos($browser->get_vertical_scroll_pos() + 800);
                  usleep(100000);
$keyboard->key(38);
                  usleep(100000);
            $mouse->click_to_screen(546 , 840); // Копировать окно
                 usleep(100000);
           sleep(2);

                 
            // Закрываем вкладку
            echo "Закрываем вкладку...\n";
            $browser->close();
            
            $linksOpened++;
            echo "Ссылка " . ($i + 1) . " успешно обработана.\n";
            
        } catch (Exception $e) {
            echo "ОШИБКА при обработке ссылки " . ($i + 1) . ": " . $e->getMessage() . "\n";
            // Пытаемся закрыть вкладку в случае ошибки
            try {
                $browser->close();
            } catch (Exception $e2) {
                echo "Не удалось закрыть вкладку: " . $e2->getMessage() . "\n";
            }
        }
    }
}

echo "\nИтого открыто внутренних ссылок: " . $linksOpened . " из " . $maxLinks . "\n\n";

// ------------------ ШАГ 3: Открыть целевую ссылку ------------------
echo "Шаг 3: Ищем и открываем целевую ссылку...\n";

$targetTexts = ['контакты', 'регистрация', 'корзина', 'услуги', 'цены'];
$targetUrl = null;
$targetFound = false;

// Ищем ссылку по тексту
foreach ($targetTexts as $text) {
    try {
        $count = count($targetTexts);
        if ($count > 0) {
            $targetUrl = $anchor->get_by_inner_text($text, false, 0);
            $targetText = $text;
            echo "  Найдена ссылка с текстом: '" . $text . "' (найдено: " . $count . " шт.)\n";
            echo "  URL: " . $targetUrl . "\n";
            $targetFound = true;
            break;
        }
    } catch (Exception $e) {
        echo "  Ошибка при поиске по тексту '" . $text . "': " . $e->getMessage() . "\n";
    }
}

// Если не найдено по тексту, ищем по href
if (!$targetFound) {
    foreach ($targetTexts as $text) {
        try {
            $count = $anchor->get_count_by_href($text, false);
            if ($count > 0) {
                $targetUrl = $anchor->get_by_href($text, false, 0);
                $targetText = $text;
                echo "  Найдена ссылка по href, содержащему: '" . $text . "' (найдено: " . $count . " шт.)\n";
                echo "  URL: " . $targetUrl . "\n";
                $targetFound = true;
                break;
            }
        } catch (Exception $e) {
            echo "  Ошибка при поиске по href '" . $text . "': " . $e->getMessage() . "\n";
        }
    }
}

// Если ссылка найдена, переходим по ней
if ($targetFound && $targetUrl !== null && $targetUrl !== "") {
    echo "\n  Переходим по целевой ссылке: " . $targetUrl . "\n";
    
    try {
        // Проверяем, полный ли URL
        if (strpos($targetUrl, 'https') !== 0) {
            if (strpos($targetUrl, '/') === 0) {
                $targetUrl = "https://" . $prs . $targetUrl;
            } else {
                $targetUrl = "https://" . $prs . "/" . $targetUrl;
            }
            echo "  Исправлен URL: " . $targetUrl . "\n";
        }
        
        // Отправляем событие onclick
        $anchor->send_event_by_inner_text($targetText, true, "onclick");
        sleep(2);
        
        // Кликаем по ссылке
        $anchor->click_by_inner_text($targetText, true);
        $browser->set_wait_params(10, 2);
		            // Клик в указанные координаты
            $mouse->click_to_screen(546, 840);
            usleep(100000);
            
            sleep(2);

        echo "  Целевая страница загружена. Текущий URL: " . $webpage->get_url() . "\n";
    } catch (Exception $e) {
        echo "  ОШИБКА при переходе по целевой ссылке: " . $e->getMessage() . "\n";
    }
} else {
    echo "  Целевая ссылка не найдена.\n";
}

echo "\n" . str_repeat("=", 60) . "\n";
echo "Сценарий успешно выполнен!\n";
echo "Статистика:\n";
echo "- Открыто внутренних ссылок: " . $linksOpened . "\n";
echo "- Найдено целевых ссылок: " . ($targetFound ? "Да" : "Нет") . "\n";
echo str_repeat("=", 60) . "\n";


// Quit
$app->quit();
?>
Кодировка: UTF-8 Символов: 16,460 Строк: 366