Объект proxyswitcher. Продвинутая работа со списком прокси.
В версии 7.0.4 появился новый объект $proxyswitcher. Функционал этого объекта связан с такими востребованными возможностями программы, как работа с прокси.
Для чего был добавлен объект $proxyswitcher.
$proxyswitcher это объект, который существенно облегчает работу с прокси и является дополнением для основной функции работы с прокси browser->enable_proxy.
По сути proxyswitcher это переключатель между прокси, которые он может брать из разных источников – из файлов, по ссылкам на сайтах или непосредственным добавлением прокси в объект в скрипте. Причём при добавлении объект сам уберёт все дубликаты. Таким образом, у вас получается список прокси, с которым вы дальше можете работать в вашем скрипте.
Как это работает?
Первое что вам нужно сделать это инициализировать объект с помощью функции:
1 |
$proxyswitcher->init("Proxy Switcher"); |
При этом в папке с вашим скриптом будет создана ещё одна папка Proxy Switcher для всех манипуляция с вашими списками прокси. Можно указать точный путь для этой папки, это будет удобно использовать для работы во многопоточном режиме.
Далее вам нужно добавить прокси для перебора. Это можно выполнить с помощью функций:
1 2 3 4 5 6 |
// добавить прокси из файла $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:
1 2 |
// задаём режим последовательного перебора прокси $proxyswitcher->set_random_rotate_mode(false); |
Теперь мы можем перейти непосредственно к получению прокси для этого используется функция:
1 2 |
// получить прокси из нашего списка $proxy = $proxyswitcher->get_next_proxy(true); |
При этом мы можем задать два варианта получения: true – это когда взятый прокси удаляется из нашего списка и false – взятый прокси будет использоваться повторно.
Ну а для установки прокси используется стандартная функция:
1 |
$browser->enable_proxy("",$proxy); |
Какой ещё функционал есть в объекте?
Помимо добавления прокси в объект $proxyswitcher есть возможность обновлять список прокси из заданных источников. При этом для запуска обновления может использоваться количество оставшихся прокси в списке или заданный промежуток времени.
Для этого используется следующие функции:
1 2 3 4 5 6 7 8 |
// обновление списка из файла $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); |
Также есть ещё функция отчистки списка от старых прокси:
1 |
$proxyswitcher->clear(); |
Функция моментального обновления списка из заранее заданных источников:
1 |
$proxyswitcher->update(); |
Функция получения всего списка проски в виде строки разделённой переносом строки:
1 |
$proxyswitcher->get_all_proxies(); |
Функция получения текущего количества прокси в списке:
1 |
$proxyswitcher->get_proxy_count(); |
Работа во многопоточном режиме.
Объект $proxyswitcher можно использовать во многопоточном режиме, то есть работать с одним списком из разных потоков. При этом управляющим потоком будет какой то один, в нём будет функционал по настройке и обновлению списка прокси. Остальные потоки просто будут использовать данный список для работы.
Вывод.
Данный объект существенно облегчает работу с прокси и будет очень полезен всем кто использует в своих скриптах работу со списками проксей. Обсудить функционал этого объекта можно на нашем форуме в разделе статьи из блога.
Пример использования.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
// 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>"; |
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.