Часто, по той или иной причине, в скрипте написанном под Human Emulator возникает
необходимость использования проксей (платных или фришных, с привязкой под IP или по
паролю — не суть важно).

Рассмотрим как корректно организовать такую работу. Во-первых нам нужен текстовый файл с проксями
в формате одна строка — один прокси. Пусть это будет «proxy.txt» в следующем формате — одна строка один прокси:

	149.154.69.69:8080
	188.120.231.243:8080
	92.63.99.62:8080

Объявляем переменную в скрипте $str_proxy_path — для указания пути к файлу с проксями:

	// путь к файлу с проксями
	$str_proxy_path = "data\proxy.txt";

и переменную

$i_cur_proxy = ' '; 

которой будем присваивать текущий прокси.

В начале скрипта — устанавливаем прокси:

	$i_cur_proxy = set_proxy($i_cur_proxy, $str_proxy_path);
	if (!$i_cur_proxy)
	{
		echo "С проксями что-то не то - скрипт закончил работу!<br>";
		// выходим из скрипта
		$app->quit();
	}

Функция set_proxy() находится в файле functions.php, который инклюдится в начале текущего скрипта. Вот её код:

function set_proxy($i_cur_proxy, $str_proxy_path)
{
	global $browser, $app, $file_os;
	
	// останавливаем навигацию
	$browser->stop();
	sleep(2);
	// закрываем все вкладки браузера кроме главной
	$browser->close_all_tabs(); 
	sleep(2);
	// чистим за собой всю информацию
	$browser->clear_address_bar_history();
	$browser->clear_cache();
	$browser->clear_cookies("");
	$browser->clear_history();
	// переходим на чистую страницу
	$browser->navigate("about:blank");
	sleep(2);
		
	// получаем прокси в массив
	$arr_of_proxy = file($str_proxy_path);
	// проверка остались ли в файле прокси
	if (count($arr_of_proxy) == 0)
	{
		echo "в файле закончились прокси<br>";
		return false;
	}
	
	$i_cur_proxy = "";
	// выбираем новый прокси
	$ii = 0;
	while ($i_cur_proxy == "")
	{
		if ($ii > 10)
		{
			echo "С проксями что-то не так!!!";
			return false;
		}
		// получаем случайный прокси
		$ind = rand(0, count($arr_of_proxy)-1);
		$i_cur_proxy = trim($arr_of_proxy[$ind]);
		echo "Текущий прокси: $i_cur_proxy<br>";
		$ii++;
	}
	
	// обнуляем  прокси
	$browser->disable_proxy("");
	sleep(2);
	
	// устанавливаем новый прокси
	$browser->enable_proxy("", $i_cur_proxy);
	sleep(2);
	
	// возвращаем новый прокси
	return $i_cur_proxy;
}

Еще один важный момент. Текущий прокси который мы используем в настоящий момент может просто «слететь».
В случае использования фришных проксей эта вероятность стремится к 100%. Поэтому при выполнении различного рода команд
в скрипте которые подразумевают переход по другому URL, например:

// переход на другой сайт
$browser->navigate($my_site);	

или

 
// кликание на ссылке
$anchor->click_by_inner_text("Внутренний текст ссылки", false);	

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

$ii = 0;
while (!$image->is_exist_by_name("name_of_image"))
{
	// ждем секунду
	sleep(1);
	// если ожидаем больше 50 секунд — значит проски слетел
	if ($ii > 50)
	{
		echo "Битый прокси<br>";
		// удаляем битый прокси из файла с проксями
		delete_proxy($i_cur_proxy, $str_proxy_path);
		sleep(3);
		// чистимся
		$browser->clear_address_bar_history();
		$browser->clear_cache();
		$browser->clear_cookies("");
		$browser->clear_history();
		// перезагружаемся для подключения нового прокси
		$app->restart($debug->get_cur_script_path(),"", $app->get_port());
	}
	$ii++;
}

В условии

while (!$image->is_exist_by_name("name_of_image"))

необходимо привязаться к какому-либо элементу , который гарантировано существует на искомой странице.

Вот собственно и все. Удачного использования.

При необходимости можно купить прокси.
Так же для проверки прокси под любой сайт вы можете использовать наш скрипт проверки прокси.

Добавить комментарий

*
*

Необходимые поля отмечены*