СКРИПТ: Просмотр роликов в Youtube

Тестирование сайтов эмуляцией посещений пользователей
Ответить
Аватара пользователя
XwebDeveloper
Сообщения: 37
Зарегистрирован: 13 ноя 2017, 12:53

СКРИПТ: Просмотр роликов в Youtube

Сообщение XwebDeveloper » 11 фев 2020, 14:24

Скрипт просмотра видеороликов в Ютуб.

Версия программы: Human Emulator Studio 7.0.44.

Логика: Есть два файла - keys.txt и titles.txt. Файл keys.txt содержит ключевые слова для поиска роликов в Youtube. Файл titles.txt содержит части заголовков роликов, в которые скрипт будет заходить и смотреть их. Формат файлов стандартный: одна строка один ключ или заголовок. После перехода на страницу ролика скрипт получает время ролика и находится на странице всё это время.

Что делает скрипт по шагам:

1. Получает поисковые ключи и заголовки из файлов в массивы
2. Переходит на сайт youtube.com
3. Если задано в настройках логинится в Ютуб
4. Вбивает случайный поисковый ключ из массива
5. Переходит в ролик, нажимая на случайный заголовок ролика из массива
6. Если задано в настройках и мы залогинины ставим Like ролику
7. Находимся на странице ролика столько сколько длится ролик
8. Возвращаемся на страницу выбора роликов

Код скрипта:
<?php

/* ** 
//  Наш сайт http://humanemulator.info
//  Скрипт просмотр роликов в Youtube.
//  Обсудить скрипт или задать вопросу на форуме https://humanemulator.info/forum/
//  наш телеграмм канал: https://t.me/humanemulator
//  скрипт написан в версии Human Emulator Studio 7.0.44
** */

$xhe_host = "127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// //////////////// настройки
// логин ютуб
$login="";
// пароль
$pwd="";

// поисковый запрос в ютуб
$akeys = file("data/keys.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// заголовки роликов, которые надо посмотреть
$atitles = file("data/titles.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// //  действия
// логинится ли в ютуюб
$do_login=false;
// ставить ли like
$do_like=true;

// ///////////////////////// скрипт
echo "переходим на ютуб <br>";
// переходим на ютуб
$browser->navigate("http://www.youtube.com");

// заходим в аккаунт если надо
if($do_login)
{

    echo "выполняем логин в ютуб<br>";
	// войти
	$anchor->click_by_href("ServiceLogin", false);

	// вводим email
	$input->send_keyboard_input_by_name("Email",$login, "20:40");
	$input->send_keyboard_input_by_name("identifier",$login, "20:40");

	// кликаем на кнопку Далее
	$button->click_by_name("signIn");
	$span->click_by_inner_text("Далее");

	// вводим пароль
	$input->send_keyboard_input_by_name("Passwd",$pwd, "20:40");
	$input->send_keyboard_input_by_name("password",$pwd, "20:40");

	// нажимаем на кнопку Войти
	$button->click_by_name("signIn");
	$span->click_by_inner_text("Далее");

	// если есть надпись Установите другой браузер
	if($h1->is_exist_by_inner_text("Установите другой браузер", false))
	{
	   // вернёмся в ютуб 
	   $anchor->click_by_attribute("id", "return-to-youtube");
	}
}

// получить случайным образом запрос
$rnd_search_text = trim($akeys[array_rand($akeys)]);
// получить случайным образом текст заголовка куда кликать
$rnd_title = trim($atitles[array_rand($atitles)]);

echo "получили случайным образом запрос $rnd_search_text и заголовок ролика $rnd_title<br>";

// введём запрос
$input->send_keyboard_input_by_name("search_query",$rnd_search_text."\n", "20:40");
sleep(1);
// перейти в нужный ролик
$anchor->click_by_attribute("title", $rnd_title, false);

sleep(3);
echo "проверка зашли ли на страницу ролика<br>";

if(strpos($h1->get_inner_text_by_number(0),$rnd_title)===false)
{
    echo "ОШИБКА: не зашли на страницу ролика с названием $rnd_title<br>";
    $app->quit();
}

// нажимаем понравилось
if($do_like && $do_login)
{
   echo "ставим Like<br>";
   $btn->click_by_attribute("aria-label", "Видео понравилось", false);
}

// ////////////////// получаем время ролика
// время ролика
$time = $div->get_inner_text_by_attribute("id", "overlays");
echo "текст для получения времени : ".$time."<br>";
// убираем лишний текст Текущее видео
$time=trim(str_replace("Текущее видео","",$time));
// получить время в секундах
$ar_time = explode(":",$time);
// длина ролика в секундах
$tm_sec = $ar_time[0]*60+$ar_time[1];
echo "длина ролика в секундах $tm_sec <br>";
// ждём пока закончится ролик
sleep($tm_sec);

// возвращаемся на предыдущую страницу
$browser->go_back();

// Quit
$app->quit();
?>

скачать скрипт:
youtube.zip
(2.53 КБ) 11 скачиваний
Последний раз редактировалось XwebDeveloper 11 фев 2020, 23:22, всего редактировалось 2 раза.

Хозяин Гугла
Сообщения: 23
Зарегистрирован: 19 июн 2019, 19:59

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение Хозяин Гугла » 11 фев 2020, 18:02

Ага, а ютуб потом будет откручивать просмотры и лайки обратно)
Там рекламодатели платят за просмотр рекламы деньги и ютуб не заинтересован, чтобы боты просматривали рекламу.
Нужно раскачивать историей действий в гугле, чтобы появлялись здесь
https://adssettings.google.com/authenticated?hl=
всяческие рекламные ачивки, в том числе на основании которых ютуб подбирает таргетинг для рекламодателей(пол, возраст, интересы, доход, образование и тд)
Быстре всего это делать через поиск по гуглу с определенным списком запросов. Еще быстрее, сохраняя и загружая потом вновь кукисы с теми же юзерагентами, имитируя действия от одной и той же машины.
Я конечно сделал довольно ресурсоемкие костыли на костылях и они с горем пополам работают, но интересненько было бы посмотреть как такой вопросик с кукисами решает более опытный специалист на примере ютуба, если Вас не затруднит)

Аватара пользователя
XwebDeveloper
Сообщения: 37
Зарегистрирован: 13 ноя 2017, 12:53

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение XwebDeveloper » 11 фев 2020, 19:00

Данный скрипт это всего лишь простенький пример с простейшими действиями, понятно что если делать серьёзный скрипт тут нужен большой опыт работы с youtube и иметь свои наработки для построения логики решения такой задачи. Основная проблема при создании таких скриптов это именно логика его работы, с точки зрения технических моментов как правило проблем не возникает. Для этого в программе есть весь необходимый функционал.

Можно конечно создать кучу аккаунтов, которые будут имитировать бурную деятельность, не только в youtube, что бы в дальнейшем можно было их использовать, но тут надо что бы у этих аккаунтов, чётко соблюдались все настройки и отпечатки ip и т.д. Это конечно ОЧЕНЬ трудоёмкий процесс, но по идее имея такую сетку можно будет накручивать не только свои ролики, но и на заказ.

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

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

Аватара пользователя
k907
Сообщения: 289
Зарегистрирован: 21 май 2014, 20:32

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение k907 » 11 фев 2020, 21:01

XwebDeveloper писал(а):
11 фев 2020, 19:00

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

ushak
Сообщения: 33
Зарегистрирован: 18 янв 2015, 10:45

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение ushak » 12 фев 2020, 08:48

Ну почему же. Если, как вариант, "чистая машина" не разу не логинилась на Гугле, не установлен Гугл Хром и прочие гугловские сервисы - попробовать можно. Правда скрипт действительно будет громоздким... :|

Аватара пользователя
k907
Сообщения: 289
Зарегистрирован: 21 май 2014, 20:32

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение k907 » 12 фев 2020, 10:42

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

ushak
Сообщения: 33
Зарегистрирован: 18 янв 2015, 10:45

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение ushak » 12 фев 2020, 12:25

А есть предположение о причине бана?
Вы извините за назойливость, просто начинал делать подобное для себя, но потом забросил. Вычисляли довольно быстро. Сейчас хочу продолжить, над анонимностью вроде ведется работа...

Аватара пользователя
k907
Сообщения: 289
Зарегистрирован: 21 май 2014, 20:32

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение k907 » 12 фев 2020, 12:44

ushak писал(а):
12 фев 2020, 12:25
А есть предположение о причине бана?
Вы извините за назойливость, просто начинал делать подобное для себя, но потом забросил. Вычисляли довольно быстро. Сейчас хочу продолжить, над анонимностью вроде ведется работа...
Причина в отсутствии истории пользователя, чистые куки / кэш

ushak
Сообщения: 33
Зарегистрирован: 18 янв 2015, 10:45

Re: СКРИПТ: Просмотр роликов в Youtube

Сообщение ushak » 12 фев 2020, 12:48

А подсовывать пробовали?

Ответить