Proxyswitcher. Работа со списком прокси.

Объект proxyswitcher. Продвинутая работа со списком прокси.

В версии 7.0.4 появился новый объект $proxyswitcher. Функционал этого объекта связан с такими востребованными возможностями программы, как работа с прокси.

Для чего был добавлен объект $proxyswitcher.

$proxyswitcher это объект, который существенно облегчает работу с прокси и является дополнением для основной функции работы с прокси browser->enable_proxy.

По сути proxyswitcher это переключатель между прокси, которые он может брать из разных источников – из файлов, по ссылкам на сайтах или непосредственным добавлением прокси в объект в скрипте. Причём при добавлении объект сам уберёт все дубликаты. Таким образом, у вас получается список прокси, с которым вы дальше можете работать в вашем скрипте.

Как это работает?

Первое что вам нужно сделать это инициализировать объект с помощью функции:

$proxyswitcher->init("Proxy Switcher");

При этом в папке с вашим скриптом будет создана ещё одна папка Proxy Switcher для всех манипуляция с вашими списками прокси. Можно указать точный путь для этой папки, это будет удобно использовать для работы во многопоточном режиме.

Далее вам нужно добавить прокси для перебора. Это можно выполнить с помощью функций:

// добавить прокси из файла
$proxyswitcher->add_proxies_from_file($path);
// добавить прокси напрямую
$proxyswitcher->add_proxies("125.212.207.121:3128\n");
// добавить прокси co страницы по ссылке
$proxyswitcher->add_proxies_from_url("http://humanemulator.net/poligon/add_proxies.html");

После чего зададим режим перебора прокси. Есть два варианта брать прокси случайным образом — true или последовательно – false:

// задаём режим последовательного перебора прокси
$proxyswitcher->set_random_rotate_mode(false);

Теперь мы можем перейти непосредственно к получению прокси для этого используется функция:

// получить прокси из нашего списка
$proxy = $proxyswitcher->get_next_proxy(true);

При этом мы можем задать два варианта получения: true – это когда взятый прокси удаляется из нашего списка и false – взятый прокси будет использоваться повторно.

Ну а для установки прокси используется стандартная функция:

$browser->enable_proxy("",$proxy);

Какой ещё функционал есть в объекте?

Помимо добавления прокси в объект $proxyswitcher есть возможность обновлять список прокси из заданных источников. При этом для запуска обновления может использоваться количество оставшихся прокси в списке или заданный промежуток времени.

Для этого используется следующие функции:

// обновление списка из файла
$proxyswitcher->set_update_path($path);
// обновление списка по ссылки 
$proxyswitcher->set_update_url("http://humanemulator.net/poligon/add_proxies.html");
// обновлять список каждые 100 секунд
$proxyswitcher->set_update_period(100);
// обновлять список когда в нём не останется прокси
$proxyswitcher->set_update_proxy_count(0);

Также есть ещё функция отчистки списка от старых прокси:

$proxyswitcher->clear();

Функция моментального обновления списка из заранее заданных источников:

$proxyswitcher->update();

Функция получения всего списка проски в виде строки разделённой переносом строки:

$proxyswitcher->get_all_proxies();

Функция получения текущего количества прокси в списке:

$proxyswitcher->get_proxy_count();

Работа во многопоточном режиме.

Объект $proxyswitcher можно использовать во многопоточном режиме, то есть работать с одним списком из разных потоков. При этом управляющим потоком будет какой то один, в нём будет функционал по настройке и обновлению списка прокси. Остальные потоки просто будут использовать данный список для работы.

Вывод.

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

Пример использования.

// 1 
echo "1. Сфорируем файл с прокси : ";
$path="test/add_proxies.urls";
echo $file_os->delete($path)." ";
echo $textfile->add_string_to_file($path,"222.124.22.133:8080\n")." ";
echo $textfile->add_string_to_file($path,"47.90.72.227:8088\n")." ";

// 2
echo "\n2. Инициализируем переключатель прокси в папке: ";
echo $proxyswitcher->init("Proxy Switcher")."\n";

// 3
echo "3. Очитим все что там что было чтобы перебирать с начала: ";
echo $proxyswitcher->clear()."\n";

// 4
echo "4. Добавим прокси из файла : ";
echo $proxyswitcher->add_proxies_from_file($path)."\n";

// 4.5
echo "4.5 Добавим прокси : ";
echo $proxyswitcher->add_proxies("125.212.207.121:3128\n")."\n";

// 5
echo "5. Добавим прокси из урла : ";
echo $proxyswitcher->add_proxies_from_url("http://humanemulator.net/poligon/add_proxies.html")."\n";

// 6
echo "6. Зададим параметры обновления : ";
echo $proxyswitcher->set_update_path($path)." ";
echo $proxyswitcher->set_update_url("http://humanemulator.net/poligon/add_proxies.html")." ";
echo $proxyswitcher->set_update_period(100)." ";
echo $proxyswitcher->set_update_proxy_count(0)."\n";

// 6.5
echo "6.5. Зададим последовательный режим перебора : ";
echo $proxyswitcher->set_random_rotate_mode(false)."\n";

// 7
$browser->set_wait_params(120,1);
echo "7. Переберем прокси : \n\n";
while (true)
{
$proxy = $proxyswitcher->get_next_proxy();
if ($proxy=="")
break;
echo $proxy;
$browser->enable_proxy("",$proxy);
if ($browser->navigate("whoer.net"))
echo "рабочий";
else
echo "тухлый";
echo "\n";
}

// 8
echo "\n8. Получим все содержимое перключателя проксей : \n\n";
echo $proxyswitcher->get_all_proxies()."\n";

// 9
echo "\n9. Получим число проксей : ";
echo $proxyswitcher->get_proxy_count()."\n";

// 10
$browser->set_wait_params(120,1);
echo "10. Переберем прокси (с удалением): \n\n";
while (true)
{
$proxy = $proxyswitcher->get_next_proxy(true);
if ($proxy=="")
break;
echo $proxy." осталось: ".$proxyswitcher->get_proxy_count()." ";
if ($proxyswitcher->get_proxy_count()==0)
break;
$browser->enable_proxy("",$proxy);
if ($browser->navigate("whoer.net"))
echo "рабочий\n";
else
echo "тухлый\n";

echo "\n";
}

// 11
echo "\n\n11. Зададим случайный режим перебора : ";
echo $proxyswitcher->set_random_rotate_mode(true)."\n";

// 12
echo "12. Обновим : ";
echo $proxyswitcher->update(true)."\n";

// 13
$browser->set_wait_params(120,1);
echo "13. Переберем прокси (случайно с удалением): \n\n";
while (true)
{
$proxy = $proxyswitcher->get_next_proxy(true);
if ($proxy=="")
break;
echo $proxy." осталось: ".$proxyswitcher->get_proxy_count()." ";
if ($proxyswitcher->get_proxy_count()==0)
break;
$browser->enable_proxy("",$proxy);
if ($browser->navigate("whoer.net"))
echo "рабочий\n";
else
echo "тухлый\n";

echo "\n";
}

// конец
echo "<hr><br>";

3.9/5 - (14 голосов)

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.