Часто, по той или иной причине, в скрипте написанном под 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 "С проксями что-то не то - скрипт закончил работу!
"; // выходим из скрипта $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 "в файле закончились прокси
"; 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
"; $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 "Битый прокси
"; // удаляем битый прокси из файла с проксями 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"))

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

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

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

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

*
*

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