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

scripts//prodvigenie_04_2026//1&1

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

с поиска google.php

<?php
/**
 * Скрипт для парсинга результатов поиска Google с последующим переходом на найденные сайты
 * 
 * Алгоритм работы:
 * 1. Чтение поисковых запросов из text.txt
 * 2. Поиск по синониму в Google
 * 3. Очистка и поиск по основному запросу
 * 4. Извлечение URL из результатов поиска
 * 5. Исключение запрещенных сайтов
 * 6. Переход на случайные сайты из результатов
 */

// ==================== НАСТРОЙКА ХОСТА ====================
$xhe_host = "127.0.0.1:7011";

// ==================== ПОДКЛЮЧЕНИЕ ФАЙЛОВ ====================
require("../../../Templates/init.php");
require_once("functions.php");

// ==================== НАСТРОЙКИ СКРИПТА ====================
$bUTF8Ver = true;                    // Использовать UTF-8
$PHP_Use_Trought_Shell = true;      // Разрешить выполнение через shell
$Search = "google.com";              // Поисковая система
$pr_s = 'ipgroup.by';         // Основной сайт (не используется далее)
$no_site = $pr_s . " ozon.ru rosseti.ru"; // Сайты для исключения из результатов

/**
 * Функция ожидания полной загрузки страницы
 * 
 * @param object $browser Объект браузера
 * @param int $timeout Таймаут ожидания в секундах
 * @return bool Успешность загрузки
 */
function waitForPageLoad($browser, $timeout = 15) {
    $start = time();
    
    while (time() - $start < $timeout) {
        $url = $browser->get_url();
        
        if ($url != "about:blank" && !empty($url) && $browser->is_loaded()) {
            return true;
        }
        
        usleep(500000); // Пауза 0.5 секунды
    }
    
    return false;
}

// ==================== НАСТРОЙКА БРАУЗЕРА ====================
$browser->close_all_tabs();
usleep(5000);
$browser->navigate('about:blank');
$browser->add_tab();

// ==================== ЧТЕНИЕ ФАЙЛА С ЗАПРОСАМИ ====================
$wordArray = array();
$file = fopen('text.txt', 'r');

if ($file) {
    // Построчное чтение файла
    while (($line = fgets($file)) !== false) {
        $line = trim($line);
        
        if (!empty($line)) {
            $wordArray[] = $line;
        }
    }
    
    fclose($file);
} else {
    echo "Ошибка: не удалось открыть text.txt\n";
    $app->quit();
    exit;
}

// Проверка, что файл не пуст
if (empty($wordArray)) {
    echo "Ошибка: файл пуст\n";
    $app->quit();
    exit;
}

// Выбираем случайную строку из файла
$random_key = array_rand($wordArray);
$random_string = $wordArray[$random_key];

// Разбиваем строку на основной запрос и синоним (формат: "запрос,синоним")
$words = explode(',', $random_string);

if (count($words) < 2) {
    echo "Ошибка: неверный формат строки. Ожидается: 'запрос,синоним'\n";
    $app->quit();
    exit;
}

$findtext = trim($words[0]);   // Основной поисковый запрос
$sinonim = trim($words[1]);    // Синоним для первого поиска

// ==================== ФОРМИРОВАНИЕ СПИСКА ЗАПРЕЩЕННЫХ САЙТОВ ====================
// Регулярное выражение для извлечения доменов из URL
$pattern = '/(?:https?:\/\/)?(?:www\.)?([а-яА-Яa-zA-Z0-9.-]+)\.(?:[а-яА-Яa-zA-Z]{2,6})/';

// Разбиваем строку с запрещенными сайтами в массив
$no_site = preg_split("/[\s,]+/", $no_site);
$no_Urls = array();

for ($l = 0; $l < count($no_site); $l++) {
    if (preg_match($pattern, $no_site[$l], $matches)) {
        $no_Urls[] = mb_strtolower(removePrefixes($matches[0]));
    }
}

// ==================== ПЕРВЫЙ ПОИСК (ПО СИНОНИМУ) ====================
// Переход на Google
$browser->navigate($Search, $use_cache = true, $use_wait = true);

// Ввод синонима в поле поиска
$textarea->send_keyboard_input_by_name("q", $sinonim . " ", "20:40");
$keyboard->key(13);  // Enter для отправки запроса
sleep(1);

  // Плавная прокрутка вместо резких PageDown/End
    for ($scrollStep = 0; $scrollStep < 20; $scrollStep++) {
        $keyboard->key(34); // Next (мягкая прокрутка)
        usleep(50000); // 50ms между шагами
    } 
sleep(1);

// Клик для копирования (координаты привязаны к разрешению экрана)
$mouse->click_to_screen(552, 833);
usleep(50000);
usleep(50000);

// ==================== ВТОРОЙ ПОИСК (ПО ОСНОВНОМУ ЗАПРОСУ) ====================
$browser->set_active_browser(0, true);  // Переход на первую вкладку
usleep(50000);
$browser->set_active_browser(1, true);  // Переход на вторую вкладку
usleep(1000000);

$textarea->set_value_by_name("q", "");   // Очистка поля поиска
sleep(2);

// Ввод основного запроса
$textarea->send_keyboard_input_by_name("q", $findtext, "20:40");
$keyboard->key(13);  // Enter
sleep(1);

// Прокрутка результатов
$keyboard->key(34);  // Page Down
sleep(1);
$keyboard->key(34);  // Page Down
sleep(1);
$keyboard->key(38);  // Page Up
sleep(1);
$keyboard->key(38);  // Page Up
sleep(1);

// ==================== ИЗВЛЕЧЕНИЕ URL ИЗ РЕЗУЛЬТАТОВ ПОИСКА ====================
// Извлечение блоков с результатами поиска
$sites = $webpage->get_body_inter_prefix_all('<cite', '</span></cite></div></div></div></div><div', true);
$sites = explode("<br>", $sites);
$Urls = array();

// Проверка, что результаты найдены
if (empty($sites) || count($sites) < 2) {
    echo "Массив пуст. Обновляем страницу и пробуем снова...\n";
    $browser->refresh();
    sleep(2);
    
    // Повторная прокрутка
    $keyboard->key(34);
    sleep(1);
    $keyboard->key(34);
    sleep(1);
    $keyboard->key(38);
    sleep(1);
    
    // Повторное извлечение результатов
    $sites = $webpage->get_body_inter_prefix_all('<cite', '</span></cite></div></div></div></div><div', true);
    $sites = explode("<br>", $sites);
} else {
    echo "Массив не пуст\n";
}

// Извлечение доменов из результатов
for ($l = 0; $l < count($sites); $l++) {
    if (preg_match($pattern, $sites[$l], $matches)) {
        $Urls[] = mb_strtolower(removePrefixes($matches[0]));
    }
}

// Удаление дубликатов
$Urls = array_unique($Urls);
$Urls = array_values($Urls);

// Исключение запрещенных сайтов
$final_result = array_diff($Urls, $no_Urls);
$final_result = array_values($final_result);

// Вывод итогового списка сайтов
print_r($final_result);

// ==================== ПЕРЕХОД НА СЛУЧАЙНЫЕ САЙТЫ ====================
// Переход на первый сайт из результатов
$anchor->set_focus_by_inner_text($final_result[0], false);
sleep(1);
$keyboard->key(13);  // Enter для перехода
sleep(2);
$browser->wait(0);
sleep(2);
$mouse->click_to_screen(552, 833);  // Копирование
usleep(50000);
usleep(50000);

// Закрытие вкладки, если открылась новая
if ($browser->get_active_browser() == 2) {
    $browser->close();
}

// Переход на второй сайт из результатов
$anchor->set_focus_by_inner_text($final_result[1], false);
sleep(1);
$keyboard->key(13);
sleep(2);
$browser->wait(0);
sleep(2);
$mouse->click_to_screen(552, 833);
usleep(50000);
usleep(50000);

if ($browser->get_active_browser() == 2) {
    $browser->close();
}

// ==================== РАБОТА С ВНУТРЕННИМИ ССЫЛКАМИ ====================
// Подключение дополнительного файла обработки, если существует
if (file_exists("google_search.php")) {
    require_once("google_search.php");
} else {
    echo "Файл google_search.php не найден\n";
}

if (file_exists("work_with_site.php")) {
    require_once("work_with_site.php");
} else {
    echo "Файл work_with_site.php не найден\n";
}

$browser->close_all_tabs();
$app->quit();
?>
Кодировка: UTF-8 Символов: 9,612 Строк: 253