scripts//prodvigenie_04_2026
/scripts//prodvigenie_04_2026
Содержимое папки
📁 Папок: 1 | 📄 Файлов: 9
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();
?>