при извлечении больших URL я всегда получаю бан с помощью simple_html_dom php - PullRequest
0 голосов
/ 06 июля 2019

Я собираю данные с веб-сайта, используя simple_html_dom. Мне нужно удалить 11 000 URL, но после запроса 200 или 250 я всегда получаю бан, как легко это сделать.

Я делаю спящий вызов как 3,4,5 секунды и т.д., используя user-agent с использованием прокси. Я уже оптимизировал скрипт

$url = "https://www.example.org?id=dynamic_id";
$html = new simple_html_dom();
$options = array(
"http"=>array(
    "header"=>"User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad
)

);

$context = stream_context_create($options);
$html = file_get_html($url, false, $context);
<--Scraping Code is here-->

Я также пробовал прокси.$ context = array ('http' => array ('proxy' => "tcp: // $ proxies_array", 'request_fulluri' => true,),);

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

1 Ответ

0 голосов
/ 06 июля 2019

Похоже, что на удаленном веб-сервере есть конфигурация, которая блокирует запросы, если за один и тот же IP-адрес имеется X запросов.

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

не зная, какие настройки будут трудными

вы можете использовать sleep () https://www.php.net/manual/en/function.sleep.php в вашем коде, чтобы замедлить ваши запросы.

или ваш сценарий может быть завершен после X запросов, а затем снова запущен по расписанию X минут спустя и играть со значениями X, пока он не заработает.

Может быть, лучше использовать сторонний веб-сканер / скребок и загрузить все веб-страницы на ваш сервер, а затем получить к ним доступ локально. Некоторые из инструментов скребка позволяют настраивать скорости и задержки скребка.

...